blob: e6c03308dc1c275e1e3482b82abf2dc3dc5fb47a [file] [log] [blame]
drhc797d4d2007-05-08 01:08:49 +00001/*
2** 2007 May 7
3**
4** The author disclaims copyright to this source code. In place of
5** a legal notice, here is a blessing:
6**
7** May you do good and not evil.
8** May you find forgiveness for yourself and forgive others.
9** May you share freely, never taking more than you give.
10**
11*************************************************************************
12**
13** This file contains code used for testing the SQLite system.
14** None of the code in this file goes into a deliverable build.
15**
16** The focus of this file is providing the TCL testing layer
17** access to compile-time constants.
drhc797d4d2007-05-08 01:08:49 +000018*/
danielk1977e6a58a42007-08-31 17:42:48 +000019
20#include "sqliteLimit.h"
21
drhc797d4d2007-05-08 01:08:49 +000022#include "sqliteInt.h"
mistachkinf74b9e02013-11-26 01:00:31 +000023#if SQLITE_OS_WIN
24# include "os_win.h"
25#endif
26
mistachkin52b1dbb2016-07-28 14:37:04 +000027#if defined(INCLUDE_SQLITE_TCL_H)
28# include "sqlite_tcl.h"
29#else
30# include "tcl.h"
31#endif
drhc797d4d2007-05-08 01:08:49 +000032#include <stdlib.h>
33#include <string.h>
34
35/*
danielk19770a732f52008-09-04 17:17:38 +000036** Macro to stringify the results of the evaluation a pre-processor
37** macro. i.e. so that STRINGVALUE(SQLITE_NOMEM) -> "7".
38*/
39#define STRINGVALUE2(x) #x
40#define STRINGVALUE(x) STRINGVALUE2(x)
41
42/*
drhc797d4d2007-05-08 01:08:49 +000043** This routine sets entries in the global ::sqlite_options() array variable
44** according to the compile-time configuration of the database. Test
45** procedures use this to determine when tests should be omitted.
46*/
47static void set_options(Tcl_Interp *interp){
drh0ede9eb2015-01-10 16:49:23 +000048#if HAVE_MALLOC_USABLE_SIZE
drh6a8ab6d2011-11-09 01:53:25 +000049 Tcl_SetVar2(interp, "sqlite_options", "malloc_usable_size", "1",
50 TCL_GLOBAL_ONLY);
51#else
52 Tcl_SetVar2(interp, "sqlite_options", "malloc_usable_size", "0",
53 TCL_GLOBAL_ONLY);
54#endif
55
drhc797d4d2007-05-08 01:08:49 +000056#ifdef SQLITE_32BIT_ROWID
57 Tcl_SetVar2(interp, "sqlite_options", "rowid32", "1", TCL_GLOBAL_ONLY);
58#else
59 Tcl_SetVar2(interp, "sqlite_options", "rowid32", "0", TCL_GLOBAL_ONLY);
60#endif
61
62#ifdef SQLITE_CASE_SENSITIVE_LIKE
63 Tcl_SetVar2(interp, "sqlite_options","casesensitivelike","1",TCL_GLOBAL_ONLY);
64#else
65 Tcl_SetVar2(interp, "sqlite_options","casesensitivelike","0",TCL_GLOBAL_ONLY);
66#endif
67
drh50287f52013-04-16 14:58:52 +000068#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
mistachkinc5484652012-03-05 22:52:33 +000069 Tcl_SetVar2(interp, "sqlite_options", "curdir", "1", TCL_GLOBAL_ONLY);
70#else
71 Tcl_SetVar2(interp, "sqlite_options", "curdir", "0", TCL_GLOBAL_ONLY);
72#endif
73
mistachkinac1f1042013-11-23 00:27:29 +000074#ifdef SQLITE_WIN32_MALLOC
75 Tcl_SetVar2(interp, "sqlite_options", "win32malloc", "1", TCL_GLOBAL_ONLY);
76#else
77 Tcl_SetVar2(interp, "sqlite_options", "win32malloc", "0", TCL_GLOBAL_ONLY);
78#endif
79
danielk19776338c762007-05-17 16:38:30 +000080#ifdef SQLITE_DEBUG
81 Tcl_SetVar2(interp, "sqlite_options", "debug", "1", TCL_GLOBAL_ONLY);
82#else
83 Tcl_SetVar2(interp, "sqlite_options", "debug", "0", TCL_GLOBAL_ONLY);
84#endif
85
drh108e5a92016-03-17 23:56:23 +000086#ifdef SQLITE_DEFAULT_CKPTFULLFSYNC
87 Tcl_SetVar2(interp, "sqlite_options", "default_ckptfullfsync",
88 SQLITE_DEFAULT_CKPTFULLFSYNC ? "1" : "0", TCL_GLOBAL_ONLY);
89#else
90 Tcl_SetVar2(interp, "sqlite_options", "default_ckptfullfsync", "0", TCL_GLOBAL_ONLY);
91#endif
92
danf4ba1092011-10-08 14:57:07 +000093#ifdef SQLITE_DIRECT_OVERFLOW_READ
94 Tcl_SetVar2(interp, "sqlite_options", "direct_read", "1", TCL_GLOBAL_ONLY);
95#else
96 Tcl_SetVar2(interp, "sqlite_options", "direct_read", "0", TCL_GLOBAL_ONLY);
97#endif
98
drhc797d4d2007-05-08 01:08:49 +000099#ifdef SQLITE_DISABLE_DIRSYNC
100 Tcl_SetVar2(interp, "sqlite_options", "dirsync", "0", TCL_GLOBAL_ONLY);
101#else
102 Tcl_SetVar2(interp, "sqlite_options", "dirsync", "1", TCL_GLOBAL_ONLY);
103#endif
104
105#ifdef SQLITE_DISABLE_LFS
106 Tcl_SetVar2(interp, "sqlite_options", "lfs", "0", TCL_GLOBAL_ONLY);
107#else
108 Tcl_SetVar2(interp, "sqlite_options", "lfs", "1", TCL_GLOBAL_ONLY);
109#endif
110
drhb99185f2016-03-18 00:19:48 +0000111#ifdef SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS
112 Tcl_SetVar2(interp, "sqlite_options", "pagecache_overflow_stats","0",TCL_GLOBAL_ONLY);
113#else
114 Tcl_SetVar2(interp, "sqlite_options", "pagecache_overflow_stats","1",TCL_GLOBAL_ONLY);
115#endif
116
drh9b4c59f2013-04-15 17:03:42 +0000117#if SQLITE_MAX_MMAP_SIZE>0
drh188d4882013-04-08 20:47:49 +0000118 Tcl_SetVar2(interp, "sqlite_options", "mmap", "1", TCL_GLOBAL_ONLY);
drh9b4c59f2013-04-15 17:03:42 +0000119#else
120 Tcl_SetVar2(interp, "sqlite_options", "mmap", "0", TCL_GLOBAL_ONLY);
drh188d4882013-04-08 20:47:49 +0000121#endif
122
dan0d51def2014-05-03 14:28:14 +0000123 Tcl_SetVar2(interp, "sqlite_options", "worker_threads",
124 STRINGVALUE(SQLITE_MAX_WORKER_THREADS), TCL_GLOBAL_ONLY
125 );
dan578e1ca2014-04-01 15:38:44 +0000126
dan253c6ee2018-09-18 17:00:06 +0000127#ifdef SQLITE_MEMDEBUG
drhf3a65f72007-08-22 20:18:21 +0000128 Tcl_SetVar2(interp, "sqlite_options", "memdebug", "1", TCL_GLOBAL_ONLY);
129#else
130 Tcl_SetVar2(interp, "sqlite_options", "memdebug", "0", TCL_GLOBAL_ONLY);
131#endif
132
drh81cc5162011-05-17 20:36:21 +0000133#ifdef SQLITE_ENABLE_8_3_NAMES
134 Tcl_SetVar2(interp, "sqlite_options", "8_3_names", "1", TCL_GLOBAL_ONLY);
135#else
136 Tcl_SetVar2(interp, "sqlite_options", "8_3_names", "0", TCL_GLOBAL_ONLY);
137#endif
138
drhf7854c72015-10-27 13:24:37 +0000139#ifdef SQLITE_ENABLE_CURSOR_HINTS
140 Tcl_SetVar2(interp, "sqlite_options", "cursorhints", "1", TCL_GLOBAL_ONLY);
141#else
142 Tcl_SetVar2(interp, "sqlite_options", "cursorhints", "0", TCL_GLOBAL_ONLY);
143#endif
144
drh03d69a62015-11-19 13:53:57 +0000145#ifdef SQLITE_ENABLE_HIDDEN_COLUMNS
146 Tcl_SetVar2(interp, "sqlite_options", "hiddencolumns", "1", TCL_GLOBAL_ONLY);
147#else
148 Tcl_SetVar2(interp, "sqlite_options", "hiddencolumns", "0", TCL_GLOBAL_ONLY);
149#endif
150
drh9c6396e2018-03-06 21:43:19 +0000151#ifdef SQLITE_ENABLE_DESERIALIZE
152 Tcl_SetVar2(interp, "sqlite_options", "deserialize", "1", TCL_GLOBAL_ONLY);
drhac442f42018-01-03 01:28:46 +0000153#else
drh9c6396e2018-03-06 21:43:19 +0000154 Tcl_SetVar2(interp, "sqlite_options", "deserialize", "0", TCL_GLOBAL_ONLY);
drhac442f42018-01-03 01:28:46 +0000155#endif
156
danielk19776b39c2e2008-06-25 14:57:53 +0000157#ifdef SQLITE_ENABLE_MEMSYS3
drh9c7a60d2007-10-19 17:47:24 +0000158 Tcl_SetVar2(interp, "sqlite_options", "mem3", "1", TCL_GLOBAL_ONLY);
159#else
160 Tcl_SetVar2(interp, "sqlite_options", "mem3", "0", TCL_GLOBAL_ONLY);
161#endif
162
danielk19776b39c2e2008-06-25 14:57:53 +0000163#ifdef SQLITE_ENABLE_MEMSYS5
drh2d7636e2008-02-16 16:21:45 +0000164 Tcl_SetVar2(interp, "sqlite_options", "mem5", "1", TCL_GLOBAL_ONLY);
165#else
166 Tcl_SetVar2(interp, "sqlite_options", "mem5", "0", TCL_GLOBAL_ONLY);
167#endif
168
drh092457b2017-12-29 15:04:49 +0000169#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
170 Tcl_SetVar2(interp, "sqlite_options", "offset_sql_func","1",TCL_GLOBAL_ONLY);
171#else
172 Tcl_SetVar2(interp, "sqlite_options", "offset_sql_func","0",TCL_GLOBAL_ONLY);
173#endif
174
drh9b1c62d2011-03-30 21:04:43 +0000175#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
176 Tcl_SetVar2(interp, "sqlite_options", "preupdate", "1", TCL_GLOBAL_ONLY);
177#else
178 Tcl_SetVar2(interp, "sqlite_options", "preupdate", "0", TCL_GLOBAL_ONLY);
179#endif
180
drh68d28ea2015-12-11 03:20:39 +0000181#ifdef SQLITE_ENABLE_SNAPSHOT
182 Tcl_SetVar2(interp, "sqlite_options", "snapshot", "1", TCL_GLOBAL_ONLY);
183#else
184 Tcl_SetVar2(interp, "sqlite_options", "snapshot", "0", TCL_GLOBAL_ONLY);
185#endif
186
drh18472fa2008-10-07 15:25:48 +0000187#ifdef SQLITE_MUTEX_OMIT
188 Tcl_SetVar2(interp, "sqlite_options", "mutex", "0", TCL_GLOBAL_ONLY);
189#else
190 Tcl_SetVar2(interp, "sqlite_options", "mutex", "1", TCL_GLOBAL_ONLY);
191#endif
192
dan7329ed92011-04-07 10:09:00 +0000193#ifdef SQLITE_MUTEX_NOOP
194 Tcl_SetVar2(interp, "sqlite_options", "mutex_noop", "1", TCL_GLOBAL_ONLY);
195#else
196 Tcl_SetVar2(interp, "sqlite_options", "mutex_noop", "0", TCL_GLOBAL_ONLY);
197#endif
198
drhc797d4d2007-05-08 01:08:49 +0000199#ifdef SQLITE_OMIT_ALTERTABLE
200 Tcl_SetVar2(interp, "sqlite_options", "altertable", "0", TCL_GLOBAL_ONLY);
201#else
202 Tcl_SetVar2(interp, "sqlite_options", "altertable", "1", TCL_GLOBAL_ONLY);
203#endif
204
205#ifdef SQLITE_OMIT_ANALYZE
206 Tcl_SetVar2(interp, "sqlite_options", "analyze", "0", TCL_GLOBAL_ONLY);
207#else
208 Tcl_SetVar2(interp, "sqlite_options", "analyze", "1", TCL_GLOBAL_ONLY);
209#endif
210
danb391b942014-11-07 14:41:11 +0000211#ifdef SQLITE_ENABLE_API_ARMOR
212 Tcl_SetVar2(interp, "sqlite_options", "api_armor", "1", TCL_GLOBAL_ONLY);
213#else
214 Tcl_SetVar2(interp, "sqlite_options", "api_armor", "0", TCL_GLOBAL_ONLY);
215#endif
216
drhd6b93862007-08-29 17:59:42 +0000217#ifdef SQLITE_ENABLE_ATOMIC_WRITE
218 Tcl_SetVar2(interp, "sqlite_options", "atomicwrite", "1", TCL_GLOBAL_ONLY);
219#else
220 Tcl_SetVar2(interp, "sqlite_options", "atomicwrite", "0", TCL_GLOBAL_ONLY);
221#endif
222
drhc306e082015-10-08 23:37:00 +0000223#ifdef SQLITE_ENABLE_JSON1
224 Tcl_SetVar2(interp, "sqlite_options", "json1", "1", TCL_GLOBAL_ONLY);
225#else
226 Tcl_SetVar2(interp, "sqlite_options", "json1", "0", TCL_GLOBAL_ONLY);
227#endif
228
drhefeaec32017-10-23 16:34:07 +0000229#ifdef SQLITE_HAS_CODEC
230 Tcl_SetVar2(interp, "sqlite_options", "has_codec", "1", TCL_GLOBAL_ONLY);
231#else
232 Tcl_SetVar2(interp, "sqlite_options", "has_codec", "0", TCL_GLOBAL_ONLY);
233#endif
234
drh41d2e662015-12-01 21:23:07 +0000235#ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS
236 Tcl_SetVar2(interp, "sqlite_options", "like_match_blobs", "0", TCL_GLOBAL_ONLY);
237#else
238 Tcl_SetVar2(interp, "sqlite_options", "like_match_blobs", "1", TCL_GLOBAL_ONLY);
239#endif
240
drhc797d4d2007-05-08 01:08:49 +0000241#ifdef SQLITE_OMIT_ATTACH
242 Tcl_SetVar2(interp, "sqlite_options", "attach", "0", TCL_GLOBAL_ONLY);
243#else
244 Tcl_SetVar2(interp, "sqlite_options", "attach", "1", TCL_GLOBAL_ONLY);
245#endif
246
247#ifdef SQLITE_OMIT_AUTHORIZATION
248 Tcl_SetVar2(interp, "sqlite_options", "auth", "0", TCL_GLOBAL_ONLY);
249#else
250 Tcl_SetVar2(interp, "sqlite_options", "auth", "1", TCL_GLOBAL_ONLY);
251#endif
252
253#ifdef SQLITE_OMIT_AUTOINCREMENT
254 Tcl_SetVar2(interp, "sqlite_options", "autoinc", "0", TCL_GLOBAL_ONLY);
255#else
256 Tcl_SetVar2(interp, "sqlite_options", "autoinc", "1", TCL_GLOBAL_ONLY);
257#endif
258
drhc6339082010-04-07 16:54:58 +0000259#ifdef SQLITE_OMIT_AUTOMATIC_INDEX
260 Tcl_SetVar2(interp, "sqlite_options", "autoindex", "0", TCL_GLOBAL_ONLY);
261#else
262 Tcl_SetVar2(interp, "sqlite_options", "autoindex", "1", TCL_GLOBAL_ONLY);
263#endif
264
drh602acb42011-01-17 17:42:37 +0000265#ifdef SQLITE_OMIT_AUTORESET
266 Tcl_SetVar2(interp, "sqlite_options", "autoreset", "0", TCL_GLOBAL_ONLY);
267#else
268 Tcl_SetVar2(interp, "sqlite_options", "autoreset", "1", TCL_GLOBAL_ONLY);
269#endif
270
drhc797d4d2007-05-08 01:08:49 +0000271#ifdef SQLITE_OMIT_AUTOVACUUM
272 Tcl_SetVar2(interp, "sqlite_options", "autovacuum", "0", TCL_GLOBAL_ONLY);
273#else
274 Tcl_SetVar2(interp, "sqlite_options", "autovacuum", "1", TCL_GLOBAL_ONLY);
275#endif /* SQLITE_OMIT_AUTOVACUUM */
danielk1977f8b10a82008-09-10 10:57:27 +0000276#if !defined(SQLITE_DEFAULT_AUTOVACUUM)
drhc797d4d2007-05-08 01:08:49 +0000277 Tcl_SetVar2(interp,"sqlite_options","default_autovacuum","0",TCL_GLOBAL_ONLY);
278#else
danielk1977f8b10a82008-09-10 10:57:27 +0000279 Tcl_SetVar2(interp, "sqlite_options", "default_autovacuum",
280 STRINGVALUE(SQLITE_DEFAULT_AUTOVACUUM), TCL_GLOBAL_ONLY);
drhc797d4d2007-05-08 01:08:49 +0000281#endif
282
283#ifdef SQLITE_OMIT_BETWEEN_OPTIMIZATION
284 Tcl_SetVar2(interp, "sqlite_options", "between_opt", "0", TCL_GLOBAL_ONLY);
285#else
286 Tcl_SetVar2(interp, "sqlite_options", "between_opt", "1", TCL_GLOBAL_ONLY);
287#endif
288
drhd12602a2016-12-07 15:49:02 +0000289#ifdef SQLITE_UNTESTABLE
drh3088d592008-03-21 16:45:47 +0000290 Tcl_SetVar2(interp, "sqlite_options", "builtin_test", "0", TCL_GLOBAL_ONLY);
291#else
292 Tcl_SetVar2(interp, "sqlite_options", "builtin_test", "1", TCL_GLOBAL_ONLY);
293#endif
294
drhc797d4d2007-05-08 01:08:49 +0000295#ifdef SQLITE_OMIT_BLOB_LITERAL
296 Tcl_SetVar2(interp, "sqlite_options", "bloblit", "0", TCL_GLOBAL_ONLY);
297#else
298 Tcl_SetVar2(interp, "sqlite_options", "bloblit", "1", TCL_GLOBAL_ONLY);
299#endif
300
301#ifdef SQLITE_OMIT_CAST
302 Tcl_SetVar2(interp, "sqlite_options", "cast", "0", TCL_GLOBAL_ONLY);
303#else
304 Tcl_SetVar2(interp, "sqlite_options", "cast", "1", TCL_GLOBAL_ONLY);
305#endif
306
307#ifdef SQLITE_OMIT_CHECK
308 Tcl_SetVar2(interp, "sqlite_options", "check", "0", TCL_GLOBAL_ONLY);
309#else
310 Tcl_SetVar2(interp, "sqlite_options", "check", "1", TCL_GLOBAL_ONLY);
311#endif
312
daneede6a52014-01-15 19:42:23 +0000313#ifdef SQLITE_OMIT_CTE
314 Tcl_SetVar2(interp, "sqlite_options", "cte", "0", TCL_GLOBAL_ONLY);
315#else
316 Tcl_SetVar2(interp, "sqlite_options", "cte", "1", TCL_GLOBAL_ONLY);
317#endif
318
drhc797d4d2007-05-08 01:08:49 +0000319#ifdef SQLITE_ENABLE_COLUMN_METADATA
320 Tcl_SetVar2(interp, "sqlite_options", "columnmetadata", "1", TCL_GLOBAL_ONLY);
321#else
322 Tcl_SetVar2(interp, "sqlite_options", "columnmetadata", "0", TCL_GLOBAL_ONLY);
323#endif
324
drh3b2a3fa2009-06-09 13:42:24 +0000325#ifdef SQLITE_ENABLE_OVERSIZE_CELL_CHECK
326 Tcl_SetVar2(interp, "sqlite_options", "oversize_cell_check", "1",
327 TCL_GLOBAL_ONLY);
328#else
329 Tcl_SetVar2(interp, "sqlite_options", "oversize_cell_check", "0",
330 TCL_GLOBAL_ONLY);
331#endif
332
shaneh915c8bd2010-02-24 19:36:10 +0000333#ifdef SQLITE_OMIT_COMPILEOPTION_DIAGS
334 Tcl_SetVar2(interp, "sqlite_options", "compileoption_diags", "0", TCL_GLOBAL_ONLY);
335#else
336 Tcl_SetVar2(interp, "sqlite_options", "compileoption_diags", "1", TCL_GLOBAL_ONLY);
337#endif
drh3b2a3fa2009-06-09 13:42:24 +0000338
drhc797d4d2007-05-08 01:08:49 +0000339#ifdef SQLITE_OMIT_COMPLETE
340 Tcl_SetVar2(interp, "sqlite_options", "complete", "0", TCL_GLOBAL_ONLY);
341#else
342 Tcl_SetVar2(interp, "sqlite_options", "complete", "1", TCL_GLOBAL_ONLY);
343#endif
344
345#ifdef SQLITE_OMIT_COMPOUND_SELECT
346 Tcl_SetVar2(interp, "sqlite_options", "compound", "0", TCL_GLOBAL_ONLY);
347#else
348 Tcl_SetVar2(interp, "sqlite_options", "compound", "1", TCL_GLOBAL_ONLY);
349#endif
350
drhc797d4d2007-05-08 01:08:49 +0000351 Tcl_SetVar2(interp, "sqlite_options", "conflict", "1", TCL_GLOBAL_ONLY);
drhc797d4d2007-05-08 01:08:49 +0000352 Tcl_SetVar2(interp, "sqlite_options", "crashtest", "1", TCL_GLOBAL_ONLY);
drhc797d4d2007-05-08 01:08:49 +0000353
354#ifdef SQLITE_OMIT_DATETIME_FUNCS
355 Tcl_SetVar2(interp, "sqlite_options", "datetime", "0", TCL_GLOBAL_ONLY);
356#else
357 Tcl_SetVar2(interp, "sqlite_options", "datetime", "1", TCL_GLOBAL_ONLY);
358#endif
359
drh3f913572008-03-22 01:07:17 +0000360#ifdef SQLITE_OMIT_DECLTYPE
361 Tcl_SetVar2(interp, "sqlite_options", "decltype", "0", TCL_GLOBAL_ONLY);
362#else
363 Tcl_SetVar2(interp, "sqlite_options", "decltype", "1", TCL_GLOBAL_ONLY);
364#endif
365
shaneeec556d2008-10-12 00:27:53 +0000366#ifdef SQLITE_OMIT_DEPRECATED
367 Tcl_SetVar2(interp, "sqlite_options", "deprecated", "0", TCL_GLOBAL_ONLY);
368#else
369 Tcl_SetVar2(interp, "sqlite_options", "deprecated", "1", TCL_GLOBAL_ONLY);
370#endif
371
drhc797d4d2007-05-08 01:08:49 +0000372#ifdef SQLITE_OMIT_DISKIO
373 Tcl_SetVar2(interp, "sqlite_options", "diskio", "0", TCL_GLOBAL_ONLY);
374#else
375 Tcl_SetVar2(interp, "sqlite_options", "diskio", "1", TCL_GLOBAL_ONLY);
376#endif
377
378#ifdef SQLITE_OMIT_EXPLAIN
379 Tcl_SetVar2(interp, "sqlite_options", "explain", "0", TCL_GLOBAL_ONLY);
380#else
381 Tcl_SetVar2(interp, "sqlite_options", "explain", "1", TCL_GLOBAL_ONLY);
382#endif
383
384#ifdef SQLITE_OMIT_FLOATING_POINT
385 Tcl_SetVar2(interp, "sqlite_options", "floatingpoint", "0", TCL_GLOBAL_ONLY);
386#else
387 Tcl_SetVar2(interp, "sqlite_options", "floatingpoint", "1", TCL_GLOBAL_ONLY);
388#endif
389
390#ifdef SQLITE_OMIT_FOREIGN_KEY
391 Tcl_SetVar2(interp, "sqlite_options", "foreignkey", "0", TCL_GLOBAL_ONLY);
392#else
393 Tcl_SetVar2(interp, "sqlite_options", "foreignkey", "1", TCL_GLOBAL_ONLY);
394#endif
395
396#ifdef SQLITE_ENABLE_FTS1
397 Tcl_SetVar2(interp, "sqlite_options", "fts1", "1", TCL_GLOBAL_ONLY);
398#else
399 Tcl_SetVar2(interp, "sqlite_options", "fts1", "0", TCL_GLOBAL_ONLY);
400#endif
401
402#ifdef SQLITE_ENABLE_FTS2
403 Tcl_SetVar2(interp, "sqlite_options", "fts2", "1", TCL_GLOBAL_ONLY);
404#else
405 Tcl_SetVar2(interp, "sqlite_options", "fts2", "0", TCL_GLOBAL_ONLY);
406#endif
407
drha2451e22007-08-20 23:50:24 +0000408#ifdef SQLITE_ENABLE_FTS3
409 Tcl_SetVar2(interp, "sqlite_options", "fts3", "1", TCL_GLOBAL_ONLY);
410#else
411 Tcl_SetVar2(interp, "sqlite_options", "fts3", "0", TCL_GLOBAL_ONLY);
412#endif
413
dan48d70142014-11-15 20:07:31 +0000414#ifdef SQLITE_ENABLE_FTS5
415 Tcl_SetVar2(interp, "sqlite_options", "fts5", "1", TCL_GLOBAL_ONLY);
416#else
417 Tcl_SetVar2(interp, "sqlite_options", "fts5", "0", TCL_GLOBAL_ONLY);
418#endif
419
dan2eaf03d2014-07-03 12:18:22 +0000420#if defined(SQLITE_ENABLE_FTS3) && !defined(SQLITE_DISABLE_FTS3_UNICODE)
dan7946c532012-05-26 18:28:14 +0000421 Tcl_SetVar2(interp, "sqlite_options", "fts3_unicode", "1", TCL_GLOBAL_ONLY);
dan2c897e32012-06-06 19:51:27 +0000422#else
423 Tcl_SetVar2(interp, "sqlite_options", "fts3_unicode", "0", TCL_GLOBAL_ONLY);
dan7946c532012-05-26 18:28:14 +0000424#endif
425
dan4dc3d732012-08-20 17:24:48 +0000426#ifdef SQLITE_DISABLE_FTS4_DEFERRED
427 Tcl_SetVar2(interp, "sqlite_options", "fts4_deferred", "0", TCL_GLOBAL_ONLY);
428#else
429 Tcl_SetVar2(interp, "sqlite_options", "fts4_deferred", "1", TCL_GLOBAL_ONLY);
430#endif
431
shane8225f5a2008-07-31 02:05:04 +0000432#ifdef SQLITE_OMIT_GET_TABLE
433 Tcl_SetVar2(interp, "sqlite_options", "gettable", "0", TCL_GLOBAL_ONLY);
434#else
435 Tcl_SetVar2(interp, "sqlite_options", "gettable", "1", TCL_GLOBAL_ONLY);
436#endif
437
drhc797d4d2007-05-08 01:08:49 +0000438#ifdef SQLITE_ENABLE_ICU
439 Tcl_SetVar2(interp, "sqlite_options", "icu", "1", TCL_GLOBAL_ONLY);
440#else
441 Tcl_SetVar2(interp, "sqlite_options", "icu", "0", TCL_GLOBAL_ONLY);
442#endif
443
dan21540ae2017-12-08 16:23:38 +0000444#ifdef SQLITE_ENABLE_ICU_COLLATIONS
445 Tcl_SetVar2(interp, "sqlite_options", "icu_collations", "1", TCL_GLOBAL_ONLY);
446#else
447 Tcl_SetVar2(interp, "sqlite_options", "icu_collations", "0", TCL_GLOBAL_ONLY);
448#endif
449
drhc797d4d2007-05-08 01:08:49 +0000450#ifdef SQLITE_OMIT_INCRBLOB
451 Tcl_SetVar2(interp, "sqlite_options", "incrblob", "0", TCL_GLOBAL_ONLY);
452#else
453 Tcl_SetVar2(interp, "sqlite_options", "incrblob", "1", TCL_GLOBAL_ONLY);
454#endif /* SQLITE_OMIT_AUTOVACUUM */
455
456#ifdef SQLITE_OMIT_INTEGRITY_CHECK
457 Tcl_SetVar2(interp, "sqlite_options", "integrityck", "0", TCL_GLOBAL_ONLY);
458#else
459 Tcl_SetVar2(interp, "sqlite_options", "integrityck", "1", TCL_GLOBAL_ONLY);
460#endif
461
462#if defined(SQLITE_DEFAULT_FILE_FORMAT) && SQLITE_DEFAULT_FILE_FORMAT==1
463 Tcl_SetVar2(interp, "sqlite_options", "legacyformat", "1", TCL_GLOBAL_ONLY);
464#else
465 Tcl_SetVar2(interp, "sqlite_options", "legacyformat", "0", TCL_GLOBAL_ONLY);
466#endif
467
468#ifdef SQLITE_OMIT_LIKE_OPTIMIZATION
469 Tcl_SetVar2(interp, "sqlite_options", "like_opt", "0", TCL_GLOBAL_ONLY);
470#else
471 Tcl_SetVar2(interp, "sqlite_options", "like_opt", "1", TCL_GLOBAL_ONLY);
472#endif
473
474#ifdef SQLITE_OMIT_LOAD_EXTENSION
475 Tcl_SetVar2(interp, "sqlite_options", "load_ext", "0", TCL_GLOBAL_ONLY);
476#else
477 Tcl_SetVar2(interp, "sqlite_options", "load_ext", "1", TCL_GLOBAL_ONLY);
478#endif
479
drh66147c92008-06-12 12:51:37 +0000480#ifdef SQLITE_OMIT_LOCALTIME
481 Tcl_SetVar2(interp, "sqlite_options", "localtime", "0", TCL_GLOBAL_ONLY);
482#else
483 Tcl_SetVar2(interp, "sqlite_options", "localtime", "1", TCL_GLOBAL_ONLY);
484#endif
485
drh8867e382008-10-11 17:06:04 +0000486#ifdef SQLITE_OMIT_LOOKASIDE
487 Tcl_SetVar2(interp, "sqlite_options", "lookaside", "0", TCL_GLOBAL_ONLY);
488#else
489 Tcl_SetVar2(interp, "sqlite_options", "lookaside", "1", TCL_GLOBAL_ONLY);
490#endif
491
drha7fba4b2007-08-13 15:18:27 +0000492Tcl_SetVar2(interp, "sqlite_options", "long_double",
493 sizeof(LONGDOUBLE_TYPE)>sizeof(double) ? "1" : "0",
494 TCL_GLOBAL_ONLY);
495
drhc797d4d2007-05-08 01:08:49 +0000496#ifdef SQLITE_OMIT_MEMORYDB
497 Tcl_SetVar2(interp, "sqlite_options", "memorydb", "0", TCL_GLOBAL_ONLY);
498#else
499 Tcl_SetVar2(interp, "sqlite_options", "memorydb", "1", TCL_GLOBAL_ONLY);
500#endif
501
502#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
503 Tcl_SetVar2(interp, "sqlite_options", "memorymanage", "1", TCL_GLOBAL_ONLY);
504#else
505 Tcl_SetVar2(interp, "sqlite_options", "memorymanage", "0", TCL_GLOBAL_ONLY);
506#endif
507
drhdba0cb22013-03-24 22:56:49 +0000508Tcl_SetVar2(interp, "sqlite_options", "mergesort", "1", TCL_GLOBAL_ONLY);
dan689ab892011-08-12 15:02:00 +0000509
dan1db7db12018-02-12 15:27:32 +0000510#ifdef SQLITE_ENABLE_NULL_TRIM
511 Tcl_SetVar2(interp, "sqlite_options", "null_trim", "1", TCL_GLOBAL_ONLY);
512#else
513 Tcl_SetVar2(interp, "sqlite_options", "null_trim", "0", TCL_GLOBAL_ONLY);
514#endif
515
drhc797d4d2007-05-08 01:08:49 +0000516#ifdef SQLITE_OMIT_OR_OPTIMIZATION
517 Tcl_SetVar2(interp, "sqlite_options", "or_opt", "0", TCL_GLOBAL_ONLY);
518#else
519 Tcl_SetVar2(interp, "sqlite_options", "or_opt", "1", TCL_GLOBAL_ONLY);
520#endif
521
drhcfb8f8d2015-07-23 20:44:49 +0000522#ifdef SQLITE_ENABLE_RBU
523 Tcl_SetVar2(interp, "sqlite_options", "rbu", "1", TCL_GLOBAL_ONLY);
dan7bf9ec12014-11-22 09:09:50 +0000524#else
drhcfb8f8d2015-07-23 20:44:49 +0000525 Tcl_SetVar2(interp, "sqlite_options", "rbu", "0", TCL_GLOBAL_ONLY);
dan7bf9ec12014-11-22 09:09:50 +0000526#endif
527
drhc797d4d2007-05-08 01:08:49 +0000528#ifdef SQLITE_OMIT_PAGER_PRAGMAS
529 Tcl_SetVar2(interp, "sqlite_options", "pager_pragmas", "0", TCL_GLOBAL_ONLY);
530#else
531 Tcl_SetVar2(interp, "sqlite_options", "pager_pragmas", "1", TCL_GLOBAL_ONLY);
532#endif
533
drhc797d4d2007-05-08 01:08:49 +0000534#if defined(SQLITE_OMIT_PRAGMA) || defined(SQLITE_OMIT_FLAG_PRAGMAS)
535 Tcl_SetVar2(interp, "sqlite_options", "pragma", "0", TCL_GLOBAL_ONLY);
536 Tcl_SetVar2(interp, "sqlite_options", "integrityck", "0", TCL_GLOBAL_ONLY);
537#else
538 Tcl_SetVar2(interp, "sqlite_options", "pragma", "1", TCL_GLOBAL_ONLY);
539#endif
540
541#ifdef SQLITE_OMIT_PROGRESS_CALLBACK
542 Tcl_SetVar2(interp, "sqlite_options", "progress", "0", TCL_GLOBAL_ONLY);
543#else
544 Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY);
545#endif
546
drhc797d4d2007-05-08 01:08:49 +0000547#ifdef SQLITE_OMIT_REINDEX
548 Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY);
549#else
550 Tcl_SetVar2(interp, "sqlite_options", "reindex", "1", TCL_GLOBAL_ONLY);
551#endif
552
danielk1977ebaecc12008-05-26 18:41:54 +0000553#ifdef SQLITE_ENABLE_RTREE
554 Tcl_SetVar2(interp, "sqlite_options", "rtree", "1", TCL_GLOBAL_ONLY);
555#else
556 Tcl_SetVar2(interp, "sqlite_options", "rtree", "0", TCL_GLOBAL_ONLY);
557#endif
558
drhf439fbd2012-04-02 21:35:42 +0000559#ifdef SQLITE_RTREE_INT_ONLY
560 Tcl_SetVar2(interp, "sqlite_options", "rtree_int_only", "1", TCL_GLOBAL_ONLY);
561#else
562 Tcl_SetVar2(interp, "sqlite_options", "rtree_int_only", "0", TCL_GLOBAL_ONLY);
563#endif
564
drhc797d4d2007-05-08 01:08:49 +0000565#ifdef SQLITE_OMIT_SCHEMA_PRAGMAS
566 Tcl_SetVar2(interp, "sqlite_options", "schema_pragmas", "0", TCL_GLOBAL_ONLY);
567#else
568 Tcl_SetVar2(interp, "sqlite_options", "schema_pragmas", "1", TCL_GLOBAL_ONLY);
569#endif
570
571#ifdef SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
572 Tcl_SetVar2(interp, "sqlite_options", "schema_version", "0", TCL_GLOBAL_ONLY);
573#else
574 Tcl_SetVar2(interp, "sqlite_options", "schema_version", "1", TCL_GLOBAL_ONLY);
575#endif
576
dan7cf7df72011-03-19 15:37:02 +0000577#ifdef SQLITE_ENABLE_SESSION
578 Tcl_SetVar2(interp, "sqlite_options", "session", "1", TCL_GLOBAL_ONLY);
579#else
580 Tcl_SetVar2(interp, "sqlite_options", "session", "0", TCL_GLOBAL_ONLY);
581#endif
582
danf52bb8d2013-08-03 20:24:58 +0000583#ifdef SQLITE_ENABLE_STAT4
584 Tcl_SetVar2(interp, "sqlite_options", "stat4", "1", TCL_GLOBAL_ONLY);
drhfaacf172011-08-12 01:51:45 +0000585#else
danf52bb8d2013-08-03 20:24:58 +0000586 Tcl_SetVar2(interp, "sqlite_options", "stat4", "0", TCL_GLOBAL_ONLY);
drhfaacf172011-08-12 01:51:45 +0000587#endif
drhc6603af2017-06-29 14:33:51 +0000588#if defined(SQLITE_ENABLE_STMTVTAB) && !defined(SQLITE_OMIT_VIRTUALTABLE)
589 Tcl_SetVar2(interp, "sqlite_options", "stmtvtab", "1", TCL_GLOBAL_ONLY);
drhc7998332017-06-29 13:41:59 +0000590#else
drhc6603af2017-06-29 14:33:51 +0000591 Tcl_SetVar2(interp, "sqlite_options", "stmtvtab", "0", TCL_GLOBAL_ONLY);
drhc7998332017-06-29 13:41:59 +0000592#endif
593
dane2f771b2014-11-03 15:33:17 +0000594#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
595 Tcl_SetVar2(interp, "sqlite_options", "scanstatus", "1", TCL_GLOBAL_ONLY);
596#else
597 Tcl_SetVar2(interp, "sqlite_options", "scanstatus", "0", TCL_GLOBAL_ONLY);
598#endif
599
drh9b35ea62008-11-29 02:20:26 +0000600#if !defined(SQLITE_ENABLE_LOCKING_STYLE)
drhd2cb50b2009-01-09 21:41:17 +0000601# if defined(__APPLE__)
drh9b35ea62008-11-29 02:20:26 +0000602# define SQLITE_ENABLE_LOCKING_STYLE 1
603# else
604# define SQLITE_ENABLE_LOCKING_STYLE 0
605# endif
606#endif
drhd2cb50b2009-01-09 21:41:17 +0000607#if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__)
drh7708e972008-11-29 00:56:52 +0000608 Tcl_SetVar2(interp,"sqlite_options","lock_proxy_pragmas","1",TCL_GLOBAL_ONLY);
aswiftaebf4132008-11-21 00:10:35 +0000609#else
drh7708e972008-11-29 00:56:52 +0000610 Tcl_SetVar2(interp,"sqlite_options","lock_proxy_pragmas","0",TCL_GLOBAL_ONLY);
aswiftaebf4132008-11-21 00:10:35 +0000611#endif
danielk1977838cce42009-01-12 14:01:45 +0000612#if defined(SQLITE_PREFER_PROXY_LOCKING) && defined(__APPLE__)
613 Tcl_SetVar2(interp,"sqlite_options","prefer_proxy_locking","1",TCL_GLOBAL_ONLY);
614#else
615 Tcl_SetVar2(interp,"sqlite_options","prefer_proxy_locking","0",TCL_GLOBAL_ONLY);
616#endif
aswiftaebf4132008-11-21 00:10:35 +0000617
618
drhc797d4d2007-05-08 01:08:49 +0000619#ifdef SQLITE_OMIT_SHARED_CACHE
620 Tcl_SetVar2(interp, "sqlite_options", "shared_cache", "0", TCL_GLOBAL_ONLY);
621#else
622 Tcl_SetVar2(interp, "sqlite_options", "shared_cache", "1", TCL_GLOBAL_ONLY);
623#endif
624
625#ifdef SQLITE_OMIT_SUBQUERY
626 Tcl_SetVar2(interp, "sqlite_options", "subquery", "0", TCL_GLOBAL_ONLY);
627#else
628 Tcl_SetVar2(interp, "sqlite_options", "subquery", "1", TCL_GLOBAL_ONLY);
629#endif
630
631#ifdef SQLITE_OMIT_TCL_VARIABLE
632 Tcl_SetVar2(interp, "sqlite_options", "tclvar", "0", TCL_GLOBAL_ONLY);
633#else
634 Tcl_SetVar2(interp, "sqlite_options", "tclvar", "1", TCL_GLOBAL_ONLY);
635#endif
636
danielk19770a732f52008-09-04 17:17:38 +0000637 Tcl_SetVar2(interp, "sqlite_options", "threadsafe",
drhb99185f2016-03-18 00:19:48 +0000638 SQLITE_THREADSAFE ? "1" : "0", TCL_GLOBAL_ONLY);
639 Tcl_SetVar2(interp, "sqlite_options", "threadsafe1",
640 SQLITE_THREADSAFE==1 ? "1" : "0", TCL_GLOBAL_ONLY);
641 Tcl_SetVar2(interp, "sqlite_options", "threadsafe2",
642 SQLITE_THREADSAFE==2 ? "1" : "0", TCL_GLOBAL_ONLY);
danielk19770a732f52008-09-04 17:17:38 +0000643 assert( sqlite3_threadsafe()==SQLITE_THREADSAFE );
drhc797d4d2007-05-08 01:08:49 +0000644
drhf8cecda2008-10-10 23:48:25 +0000645#ifdef SQLITE_OMIT_TEMPDB
646 Tcl_SetVar2(interp, "sqlite_options", "tempdb", "0", TCL_GLOBAL_ONLY);
647#else
648 Tcl_SetVar2(interp, "sqlite_options", "tempdb", "1", TCL_GLOBAL_ONLY);
649#endif
650
drhc797d4d2007-05-08 01:08:49 +0000651#ifdef SQLITE_OMIT_TRACE
652 Tcl_SetVar2(interp, "sqlite_options", "trace", "0", TCL_GLOBAL_ONLY);
653#else
654 Tcl_SetVar2(interp, "sqlite_options", "trace", "1", TCL_GLOBAL_ONLY);
655#endif
656
657#ifdef SQLITE_OMIT_TRIGGER
658 Tcl_SetVar2(interp, "sqlite_options", "trigger", "0", TCL_GLOBAL_ONLY);
659#else
660 Tcl_SetVar2(interp, "sqlite_options", "trigger", "1", TCL_GLOBAL_ONLY);
661#endif
662
drh4d9a7bf2010-07-07 01:52:31 +0000663#ifdef SQLITE_OMIT_TRUNCATE_OPTIMIZATION
drhf8cecda2008-10-10 23:48:25 +0000664 Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "0", TCL_GLOBAL_ONLY);
drhc797d4d2007-05-08 01:08:49 +0000665#else
drhf8cecda2008-10-10 23:48:25 +0000666 Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY);
drhc797d4d2007-05-08 01:08:49 +0000667#endif
668
669#ifdef SQLITE_OMIT_UTF16
670 Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY);
671#else
672 Tcl_SetVar2(interp, "sqlite_options", "utf16", "1", TCL_GLOBAL_ONLY);
673#endif
674
675#if defined(SQLITE_OMIT_VACUUM) || defined(SQLITE_OMIT_ATTACH)
676 Tcl_SetVar2(interp, "sqlite_options", "vacuum", "0", TCL_GLOBAL_ONLY);
677#else
678 Tcl_SetVar2(interp, "sqlite_options", "vacuum", "1", TCL_GLOBAL_ONLY);
679#endif
680
681#ifdef SQLITE_OMIT_VIEW
682 Tcl_SetVar2(interp, "sqlite_options", "view", "0", TCL_GLOBAL_ONLY);
683#else
684 Tcl_SetVar2(interp, "sqlite_options", "view", "1", TCL_GLOBAL_ONLY);
685#endif
686
687#ifdef SQLITE_OMIT_VIRTUALTABLE
688 Tcl_SetVar2(interp, "sqlite_options", "vtab", "0", TCL_GLOBAL_ONLY);
689#else
690 Tcl_SetVar2(interp, "sqlite_options", "vtab", "1", TCL_GLOBAL_ONLY);
691#endif
692
dan5cf53532010-05-01 16:40:20 +0000693#ifdef SQLITE_OMIT_WAL
694 Tcl_SetVar2(interp, "sqlite_options", "wal", "0", TCL_GLOBAL_ONLY);
695#else
696 Tcl_SetVar2(interp, "sqlite_options", "wal", "1", TCL_GLOBAL_ONLY);
697#endif
698
drh78f82d12008-09-02 00:52:52 +0000699#ifdef SQLITE_OMIT_WSD
700 Tcl_SetVar2(interp, "sqlite_options", "wsd", "0", TCL_GLOBAL_ONLY);
701#else
702 Tcl_SetVar2(interp, "sqlite_options", "wsd", "1", TCL_GLOBAL_ONLY);
703#endif
704
shane273f6192008-10-10 04:34:16 +0000705#if defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT) && !defined(SQLITE_OMIT_SUBQUERY)
706 Tcl_SetVar2(interp, "sqlite_options", "update_delete_limit", "1", TCL_GLOBAL_ONLY);
707#else
708 Tcl_SetVar2(interp, "sqlite_options", "update_delete_limit", "0", TCL_GLOBAL_ONLY);
709#endif
710
danielk1977404ca072009-03-16 13:19:36 +0000711#if defined(SQLITE_ENABLE_UNLOCK_NOTIFY)
712 Tcl_SetVar2(interp, "sqlite_options", "unlock_notify", "1", TCL_GLOBAL_ONLY);
713#else
714 Tcl_SetVar2(interp, "sqlite_options", "unlock_notify", "0", TCL_GLOBAL_ONLY);
715#endif
716
drhcb45eef2017-11-28 00:52:14 +0000717#ifdef SQLITE_FAST_SECURE_DELETE
718 Tcl_SetVar2(interp, "sqlite_options", "fast_secure_delete", "1", TCL_GLOBAL_ONLY);
719#else
720 Tcl_SetVar2(interp, "sqlite_options", "fast_secure_delete", "0", TCL_GLOBAL_ONLY);
721#endif
722
drhc5d0bd92008-04-14 01:00:57 +0000723#ifdef SQLITE_SECURE_DELETE
724 Tcl_SetVar2(interp, "sqlite_options", "secure_delete", "1", TCL_GLOBAL_ONLY);
725#else
726 Tcl_SetVar2(interp, "sqlite_options", "secure_delete", "0", TCL_GLOBAL_ONLY);
727#endif
728
drh09e60542014-09-10 22:46:46 +0000729#ifdef SQLITE_USER_AUTHENTICATION
730 Tcl_SetVar2(interp, "sqlite_options", "userauth", "1", TCL_GLOBAL_ONLY);
731#else
732 Tcl_SetVar2(interp, "sqlite_options", "userauth", "0", TCL_GLOBAL_ONLY);
733#endif
734
shaneh050d09a2010-11-08 19:16:16 +0000735#ifdef SQLITE_MULTIPLEX_EXT_OVWR
736 Tcl_SetVar2(interp, "sqlite_options", "multiplex_ext_overwrite", "1", TCL_GLOBAL_ONLY);
737#else
738 Tcl_SetVar2(interp, "sqlite_options", "multiplex_ext_overwrite", "0", TCL_GLOBAL_ONLY);
739#endif
740
drhec424a52008-07-25 15:39:03 +0000741#ifdef YYTRACKMAXSTACKDEPTH
742 Tcl_SetVar2(interp, "sqlite_options", "yytrackmaxstackdepth", "1", TCL_GLOBAL_ONLY);
743#else
744 Tcl_SetVar2(interp, "sqlite_options", "yytrackmaxstackdepth", "0", TCL_GLOBAL_ONLY);
745#endif
746
dand83f7ca2015-11-12 20:12:51 +0000747#ifdef SQLITE_ENABLE_SQLLOG
748 Tcl_SetVar2(interp, "sqlite_options", "sqllog", "1", TCL_GLOBAL_ONLY);
749#else
750 Tcl_SetVar2(interp, "sqlite_options", "sqllog", "0", TCL_GLOBAL_ONLY);
751#endif
752
dan5c35e902016-10-26 12:15:41 +0000753#ifdef SQLITE_ENABLE_URI_00_ERROR
754 Tcl_SetVar2(interp, "sqlite_options", "uri_00_error", "1", TCL_GLOBAL_ONLY);
755#else
756 Tcl_SetVar2(interp, "sqlite_options", "uri_00_error", "0", TCL_GLOBAL_ONLY);
757#endif
758
mistachkin8bee11a2018-10-29 17:53:23 +0000759#if defined(SQLITE_ENABLE_NORMALIZE)
760 Tcl_SetVar2(interp, "sqlite_options", "normalize", "1", TCL_GLOBAL_ONLY);
761#else
762 Tcl_SetVar2(interp, "sqlite_options", "normalize", "0", TCL_GLOBAL_ONLY);
763#endif
764
dan67a9b8e2018-06-22 20:51:35 +0000765#ifdef SQLITE_OMIT_WINDOWFUNC
766 Tcl_SetVar2(interp, "sqlite_options", "windowfunc", "0", TCL_GLOBAL_ONLY);
767#else
768 Tcl_SetVar2(interp, "sqlite_options", "windowfunc", "1", TCL_GLOBAL_ONLY);
769#endif
770
drhbb4957f2008-03-20 14:03:29 +0000771#define LINKVAR(x) { \
772 static const int cv_ ## x = SQLITE_ ## x; \
773 Tcl_LinkVar(interp, "SQLITE_" #x, (char *)&(cv_ ## x), \
774 TCL_LINK_INT | TCL_LINK_READ_ONLY); }
danielk1977e6a58a42007-08-31 17:42:48 +0000775
776 LINKVAR( MAX_LENGTH );
777 LINKVAR( MAX_COLUMN );
778 LINKVAR( MAX_SQL_LENGTH );
779 LINKVAR( MAX_EXPR_DEPTH );
780 LINKVAR( MAX_COMPOUND_SELECT );
781 LINKVAR( MAX_VDBE_OP );
782 LINKVAR( MAX_FUNCTION_ARG );
783 LINKVAR( MAX_VARIABLE_NUMBER );
784 LINKVAR( MAX_PAGE_SIZE );
785 LINKVAR( MAX_PAGE_COUNT );
786 LINKVAR( MAX_LIKE_PATTERN_LENGTH );
danf5894502009-10-07 18:41:19 +0000787 LINKVAR( MAX_TRIGGER_DEPTH );
drhbb4957f2008-03-20 14:03:29 +0000788 LINKVAR( DEFAULT_CACHE_SIZE );
789 LINKVAR( DEFAULT_PAGE_SIZE );
790 LINKVAR( DEFAULT_FILE_FORMAT );
danf5da7db2017-03-16 18:14:39 +0000791 LINKVAR( DEFAULT_SYNCHRONOUS );
792 LINKVAR( DEFAULT_WAL_SYNCHRONOUS );
drhbb4957f2008-03-20 14:03:29 +0000793 LINKVAR( MAX_ATTACHED );
danb0a43052011-07-06 09:36:59 +0000794 LINKVAR( MAX_DEFAULT_PAGE_SIZE );
drh3705ef62014-10-08 15:53:21 +0000795 LINKVAR( MAX_WORKER_THREADS );
danielk1977e6a58a42007-08-31 17:42:48 +0000796
drhc797d4d2007-05-08 01:08:49 +0000797 {
danielk1977b06a0b62008-06-26 10:54:12 +0000798 static const int cv_TEMP_STORE = SQLITE_TEMP_STORE;
drhbb4957f2008-03-20 14:03:29 +0000799 Tcl_LinkVar(interp, "TEMP_STORE", (char *)&(cv_TEMP_STORE),
800 TCL_LINK_INT | TCL_LINK_READ_ONLY);
danielk1977832b2662007-05-09 11:37:22 +0000801 }
drhc722a2c2012-06-21 15:02:26 +0000802
803#ifdef _MSC_VER
804 {
805 static const int cv__MSC_VER = 1;
806 Tcl_LinkVar(interp, "_MSC_VER", (char *)&(cv__MSC_VER),
807 TCL_LINK_INT | TCL_LINK_READ_ONLY);
808 }
809#endif
810#ifdef __GNUC__
811 {
812 static const int cv___GNUC__ = 1;
813 Tcl_LinkVar(interp, "__GNUC__", (char *)&(cv___GNUC__),
814 TCL_LINK_INT | TCL_LINK_READ_ONLY);
815 }
816#endif
drhc797d4d2007-05-08 01:08:49 +0000817}
818
819
820/*
821** Register commands with the TCL interpreter.
822*/
823int Sqliteconfig_Init(Tcl_Interp *interp){
824 set_options(interp);
825 return TCL_OK;
826}