AryaWu/sqlite
0
1/*2** 2007 May 73**4** The author disclaims copyright to this source code. In place of5** 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 layer17** access to compile-time constants.18*/19 20#include "sqliteLimit.h"21 22#include "sqliteInt.h"23#if SQLITE_OS_WIN24# include "os_win.h"25#endif26 27#include "tclsqlite.h"28#include <stdlib.h>29#include <string.h>30 31/*32** Macro to stringify the results of the evaluation a pre-processor33** macro. i.e. so that STRINGVALUE(SQLITE_NOMEM) -> "7".34*/35#define STRINGVALUE2(x) #x36#define STRINGVALUE(x) STRINGVALUE2(x)37 38/*39** This routine sets entries in the global ::sqlite_options() array variable40** according to the compile-time configuration of the database. Test41** procedures use this to determine when tests should be omitted.42*/43static void set_options(Tcl_Interp *interp){44#if HAVE_MALLOC_USABLE_SIZE45 Tcl_SetVar2(interp, "sqlite_options", "malloc_usable_size", "1",46 TCL_GLOBAL_ONLY);47#else48 Tcl_SetVar2(interp, "sqlite_options", "malloc_usable_size", "0",49 TCL_GLOBAL_ONLY);50#endif51 52#ifdef SQLITE_32BIT_ROWID53 Tcl_SetVar2(interp, "sqlite_options", "rowid32", "1", TCL_GLOBAL_ONLY);54#else55 Tcl_SetVar2(interp, "sqlite_options", "rowid32", "0", TCL_GLOBAL_ONLY);56#endif57 58#ifdef SQLITE_ALLOW_ROWID_IN_VIEW59 Tcl_SetVar2(60 interp, "sqlite_options", "allow_rowid_in_view", "1", TCL_GLOBAL_ONLY);61#else62 Tcl_SetVar2(63 interp, "sqlite_options", "allow_rowid_in_view", "0", TCL_GLOBAL_ONLY);64#endif65 66#if defined(SQLITE_ENABLE_CARRAY)67 Tcl_SetVar2(interp, "sqlite_options","carray","1",TCL_GLOBAL_ONLY);68#else69 Tcl_SetVar2(interp, "sqlite_options","carray","0",TCL_GLOBAL_ONLY);70#endif71 72#ifdef SQLITE_CASE_SENSITIVE_LIKE73 Tcl_SetVar2(interp, "sqlite_options","casesensitivelike","1",TCL_GLOBAL_ONLY);74#else75 Tcl_SetVar2(interp, "sqlite_options","casesensitivelike","0",TCL_GLOBAL_ONLY);76#endif77 78#ifdef CONFIG_SLOWDOWN_FACTOR79 Tcl_SetVar2(interp, "sqlite_options","configslower",80 STRINGVALUE(CONFIG_SLOWDOWN_FACTOR),TCL_GLOBAL_ONLY);81#else82 Tcl_SetVar2(interp, "sqlite_options","configslower","1.0",TCL_GLOBAL_ONLY);83#endif84 85#if !SQLITE_OS_WINCE86 Tcl_SetVar2(interp, "sqlite_options", "curdir", "1", TCL_GLOBAL_ONLY);87#else88 Tcl_SetVar2(interp, "sqlite_options", "curdir", "0", TCL_GLOBAL_ONLY);89#endif90 91#ifdef SQLITE_WIN32_MALLOC92 Tcl_SetVar2(interp, "sqlite_options", "win32malloc", "1", TCL_GLOBAL_ONLY);93#else94 Tcl_SetVar2(interp, "sqlite_options", "win32malloc", "0", TCL_GLOBAL_ONLY);95#endif96 97#ifdef SQLITE_DEBUG98 Tcl_SetVar2(interp, "sqlite_options", "debug", "1", TCL_GLOBAL_ONLY);99#else100 Tcl_SetVar2(interp, "sqlite_options", "debug", "0", TCL_GLOBAL_ONLY);101#endif102 103#ifdef SQLITE_DEFAULT_CKPTFULLFSYNC104 Tcl_SetVar2(interp, "sqlite_options", "default_ckptfullfsync", 105 SQLITE_DEFAULT_CKPTFULLFSYNC ? "1" : "0", TCL_GLOBAL_ONLY);106#else107 Tcl_SetVar2(interp, "sqlite_options", "default_ckptfullfsync", "0", TCL_GLOBAL_ONLY);108#endif109 110#ifdef SQLITE_DIRECT_OVERFLOW_READ111 Tcl_SetVar2(interp, "sqlite_options", "direct_read", "1", TCL_GLOBAL_ONLY);112#else113 Tcl_SetVar2(interp, "sqlite_options", "direct_read", "0", TCL_GLOBAL_ONLY);114#endif115 116#ifdef SQLITE_DISABLE_DIRSYNC117 Tcl_SetVar2(interp, "sqlite_options", "dirsync", "0", TCL_GLOBAL_ONLY);118#else119 Tcl_SetVar2(interp, "sqlite_options", "dirsync", "1", TCL_GLOBAL_ONLY);120#endif121 122#ifdef SQLITE_DISABLE_LFS123 Tcl_SetVar2(interp, "sqlite_options", "lfs", "0", TCL_GLOBAL_ONLY);124#else125 Tcl_SetVar2(interp, "sqlite_options", "lfs", "1", TCL_GLOBAL_ONLY);126#endif127 128#ifdef SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS129 Tcl_SetVar2(interp, "sqlite_options", "pagecache_overflow_stats","0",TCL_GLOBAL_ONLY);130#else131 Tcl_SetVar2(interp, "sqlite_options", "pagecache_overflow_stats","1",TCL_GLOBAL_ONLY);132#endif133 134#if SQLITE_MAX_MMAP_SIZE>0135 Tcl_SetVar2(interp, "sqlite_options", "mmap", "1", TCL_GLOBAL_ONLY);136#else137 Tcl_SetVar2(interp, "sqlite_options", "mmap", "0", TCL_GLOBAL_ONLY);138#endif139 140 Tcl_SetVar2(interp, "sqlite_options", "worker_threads", 141 STRINGVALUE(SQLITE_MAX_WORKER_THREADS), TCL_GLOBAL_ONLY142 );143 144#ifdef SQLITE_MEMDEBUG 145 Tcl_SetVar2(interp, "sqlite_options", "memdebug", "1", TCL_GLOBAL_ONLY);146#else147 Tcl_SetVar2(interp, "sqlite_options", "memdebug", "0", TCL_GLOBAL_ONLY);148#endif149 150#ifdef SQLITE_ENABLE_8_3_NAMES151 Tcl_SetVar2(interp, "sqlite_options", "8_3_names", "1", TCL_GLOBAL_ONLY);152#else153 Tcl_SetVar2(interp, "sqlite_options", "8_3_names", "0", TCL_GLOBAL_ONLY);154#endif155 156#ifdef SQLITE_ENABLE_CURSOR_HINTS157 Tcl_SetVar2(interp, "sqlite_options", "cursorhints", "1", TCL_GLOBAL_ONLY);158#else159 Tcl_SetVar2(interp, "sqlite_options", "cursorhints", "0", TCL_GLOBAL_ONLY);160#endif161 162#ifdef SQLITE_ENABLE_HIDDEN_COLUMNS163 Tcl_SetVar2(interp, "sqlite_options", "hiddencolumns", "1", TCL_GLOBAL_ONLY);164#else165 Tcl_SetVar2(interp, "sqlite_options", "hiddencolumns", "0", TCL_GLOBAL_ONLY);166#endif167 168#ifndef SQLITE_OMIT_DESERIALIZE169 Tcl_SetVar2(interp, "sqlite_options", "deserialize", "1", TCL_GLOBAL_ONLY);170#else171 Tcl_SetVar2(interp, "sqlite_options", "deserialize", "0", TCL_GLOBAL_ONLY);172#endif173 174#ifdef SQLITE_ENABLE_MATH_FUNCTIONS175 Tcl_SetVar2(interp, "sqlite_options", "mathlib", "1", TCL_GLOBAL_ONLY);176#else177 Tcl_SetVar2(interp, "sqlite_options", "mathlib", "0", TCL_GLOBAL_ONLY);178#endif179 180#ifdef SQLITE_ENABLE_MEMSYS3181 Tcl_SetVar2(interp, "sqlite_options", "mem3", "1", TCL_GLOBAL_ONLY);182#else183 Tcl_SetVar2(interp, "sqlite_options", "mem3", "0", TCL_GLOBAL_ONLY);184#endif185 186#ifdef SQLITE_ENABLE_MEMSYS5187 Tcl_SetVar2(interp, "sqlite_options", "mem5", "1", TCL_GLOBAL_ONLY);188#else189 Tcl_SetVar2(interp, "sqlite_options", "mem5", "0", TCL_GLOBAL_ONLY);190#endif191 192#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC193 Tcl_SetVar2(interp, "sqlite_options", "offset_sql_func","1",TCL_GLOBAL_ONLY);194#else195 Tcl_SetVar2(interp, "sqlite_options", "offset_sql_func","0",TCL_GLOBAL_ONLY);196#endif197 198#ifdef SQLITE_ENABLE_ORDERED_SET_AGGREGATES199 Tcl_SetVar2(interp, "sqlite_options",200 "ordered_set_aggregates","1",TCL_GLOBAL_ONLY);201#else202 Tcl_SetVar2(interp, "sqlite_options",203 "ordered_set_aggregates","0",TCL_GLOBAL_ONLY);204#endif205 206#ifdef SQLITE_ENABLE_PREUPDATE_HOOK207 Tcl_SetVar2(interp, "sqlite_options", "preupdate", "1", TCL_GLOBAL_ONLY);208#else209 Tcl_SetVar2(interp, "sqlite_options", "preupdate", "0", TCL_GLOBAL_ONLY);210#endif211 212#ifdef SQLITE_ENABLE_SNAPSHOT213 Tcl_SetVar2(interp, "sqlite_options", "snapshot", "1", TCL_GLOBAL_ONLY);214#else215 Tcl_SetVar2(interp, "sqlite_options", "snapshot", "0", TCL_GLOBAL_ONLY);216#endif217 218#ifdef SQLITE_MUTEX_OMIT219 Tcl_SetVar2(interp, "sqlite_options", "mutex", "0", TCL_GLOBAL_ONLY);220#else221 Tcl_SetVar2(interp, "sqlite_options", "mutex", "1", TCL_GLOBAL_ONLY);222#endif223 224#ifdef SQLITE_MUTEX_NOOP225 Tcl_SetVar2(interp, "sqlite_options", "mutex_noop", "1", TCL_GLOBAL_ONLY);226#else227 Tcl_SetVar2(interp, "sqlite_options", "mutex_noop", "0", TCL_GLOBAL_ONLY);228#endif229 230#ifdef SQLITE_OMIT_ALTERTABLE231 Tcl_SetVar2(interp, "sqlite_options", "altertable", "0", TCL_GLOBAL_ONLY);232#else233 Tcl_SetVar2(interp, "sqlite_options", "altertable", "1", TCL_GLOBAL_ONLY);234#endif235 236#ifdef SQLITE_OMIT_ANALYZE237 Tcl_SetVar2(interp, "sqlite_options", "analyze", "0", TCL_GLOBAL_ONLY);238#else239 Tcl_SetVar2(interp, "sqlite_options", "analyze", "1", TCL_GLOBAL_ONLY);240#endif241 242#ifdef SQLITE_ENABLE_API_ARMOR243 Tcl_SetVar2(interp, "sqlite_options", "api_armor", "1", TCL_GLOBAL_ONLY);244#else245 Tcl_SetVar2(interp, "sqlite_options", "api_armor", "0", TCL_GLOBAL_ONLY);246#endif247 248#ifdef SQLITE_ENABLE_ATOMIC_WRITE249 Tcl_SetVar2(interp, "sqlite_options", "atomicwrite", "1", TCL_GLOBAL_ONLY);250#else251 Tcl_SetVar2(interp, "sqlite_options", "atomicwrite", "0", TCL_GLOBAL_ONLY);252#endif253 254#ifdef SQLITE_ENABLE_GEOPOLY255 Tcl_SetVar2(interp, "sqlite_options", "geopoly", "1", TCL_GLOBAL_ONLY);256#else257 Tcl_SetVar2(interp, "sqlite_options", "geopoly", "0", TCL_GLOBAL_ONLY);258#endif259 260#ifndef SQLITE_OMIT_JSON261 Tcl_SetVar2(interp, "sqlite_options", "json1", "1", TCL_GLOBAL_ONLY);262#else263 Tcl_SetVar2(interp, "sqlite_options", "json1", "0", TCL_GLOBAL_ONLY);264#endif265 266 Tcl_SetVar2(interp, "sqlite_options", "has_codec", "0", TCL_GLOBAL_ONLY);267 268#ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS269 Tcl_SetVar2(interp, "sqlite_options", "like_match_blobs", "0", TCL_GLOBAL_ONLY);270#else271 Tcl_SetVar2(interp, "sqlite_options", "like_match_blobs", "1", TCL_GLOBAL_ONLY);272#endif273 274#ifdef SQLITE_OMIT_ATTACH275 Tcl_SetVar2(interp, "sqlite_options", "attach", "0", TCL_GLOBAL_ONLY);276#else277 Tcl_SetVar2(interp, "sqlite_options", "attach", "1", TCL_GLOBAL_ONLY);278#endif279 280#ifdef SQLITE_OMIT_AUTHORIZATION281 Tcl_SetVar2(interp, "sqlite_options", "auth", "0", TCL_GLOBAL_ONLY);282#else283 Tcl_SetVar2(interp, "sqlite_options", "auth", "1", TCL_GLOBAL_ONLY);284#endif285 286#ifdef SQLITE_OMIT_AUTOINCREMENT287 Tcl_SetVar2(interp, "sqlite_options", "autoinc", "0", TCL_GLOBAL_ONLY);288#else289 Tcl_SetVar2(interp, "sqlite_options", "autoinc", "1", TCL_GLOBAL_ONLY);290#endif291 292#ifdef SQLITE_OMIT_AUTOMATIC_INDEX293 Tcl_SetVar2(interp, "sqlite_options", "autoindex", "0", TCL_GLOBAL_ONLY);294#else295 Tcl_SetVar2(interp, "sqlite_options", "autoindex", "1", TCL_GLOBAL_ONLY);296#endif297 298#ifdef SQLITE_OMIT_AUTORESET299 Tcl_SetVar2(interp, "sqlite_options", "autoreset", "0", TCL_GLOBAL_ONLY);300#else301 Tcl_SetVar2(interp, "sqlite_options", "autoreset", "1", TCL_GLOBAL_ONLY);302#endif303 304#ifdef SQLITE_OMIT_AUTOVACUUM305 Tcl_SetVar2(interp, "sqlite_options", "autovacuum", "0", TCL_GLOBAL_ONLY);306#else307 Tcl_SetVar2(interp, "sqlite_options", "autovacuum", "1", TCL_GLOBAL_ONLY);308#endif /* SQLITE_OMIT_AUTOVACUUM */309#if !defined(SQLITE_DEFAULT_AUTOVACUUM)310 Tcl_SetVar2(interp,"sqlite_options","default_autovacuum","0",TCL_GLOBAL_ONLY);311#else312 Tcl_SetVar2(interp, "sqlite_options", "default_autovacuum", 313 STRINGVALUE(SQLITE_DEFAULT_AUTOVACUUM), TCL_GLOBAL_ONLY);314#endif315 316#ifdef SQLITE_OMIT_BETWEEN_OPTIMIZATION317 Tcl_SetVar2(interp, "sqlite_options", "between_opt", "0", TCL_GLOBAL_ONLY);318#else319 Tcl_SetVar2(interp, "sqlite_options", "between_opt", "1", TCL_GLOBAL_ONLY);320#endif321 322#ifdef SQLITE_UNTESTABLE323 Tcl_SetVar2(interp, "sqlite_options", "builtin_test", "0", TCL_GLOBAL_ONLY);324#else325 Tcl_SetVar2(interp, "sqlite_options", "builtin_test", "1", TCL_GLOBAL_ONLY);326#endif327 328#ifdef SQLITE_OMIT_BLOB_LITERAL329 Tcl_SetVar2(interp, "sqlite_options", "bloblit", "0", TCL_GLOBAL_ONLY);330#else331 Tcl_SetVar2(interp, "sqlite_options", "bloblit", "1", TCL_GLOBAL_ONLY);332#endif333 334#ifdef SQLITE_OMIT_CAST335 Tcl_SetVar2(interp, "sqlite_options", "cast", "0", TCL_GLOBAL_ONLY);336#else337 Tcl_SetVar2(interp, "sqlite_options", "cast", "1", TCL_GLOBAL_ONLY);338#endif339 340#ifdef SQLITE_OMIT_CHECK341 Tcl_SetVar2(interp, "sqlite_options", "check", "0", TCL_GLOBAL_ONLY);342#else343 Tcl_SetVar2(interp, "sqlite_options", "check", "1", TCL_GLOBAL_ONLY);344#endif345 346#ifdef SQLITE_OMIT_CTE347 Tcl_SetVar2(interp, "sqlite_options", "cte", "0", TCL_GLOBAL_ONLY);348#else349 Tcl_SetVar2(interp, "sqlite_options", "cte", "1", TCL_GLOBAL_ONLY);350#endif351 352#ifdef SQLITE_ENABLE_COLUMN_METADATA353 Tcl_SetVar2(interp, "sqlite_options", "columnmetadata", "1", TCL_GLOBAL_ONLY);354#else355 Tcl_SetVar2(interp, "sqlite_options", "columnmetadata", "0", TCL_GLOBAL_ONLY);356#endif357 358#ifdef SQLITE_ENABLE_ORDEREDSETFUNC359 Tcl_SetVar2(interp, "sqlite_options", "ordered_set_funcs", "1",360 TCL_GLOBAL_ONLY);361#else362 Tcl_SetVar2(interp, "sqlite_options", "ordered_set_funcs", "0",363 TCL_GLOBAL_ONLY);364#endif365 366#ifdef SQLITE_ENABLE_OVERSIZE_CELL_CHECK367 Tcl_SetVar2(interp, "sqlite_options", "oversize_cell_check", "1",368 TCL_GLOBAL_ONLY);369#else370 Tcl_SetVar2(interp, "sqlite_options", "oversize_cell_check", "0",371 TCL_GLOBAL_ONLY);372#endif373 374#ifdef SQLITE_OMIT_COMPILEOPTION_DIAGS375 Tcl_SetVar2(interp, "sqlite_options", "compileoption_diags", "0", TCL_GLOBAL_ONLY);376#else377 Tcl_SetVar2(interp, "sqlite_options", "compileoption_diags", "1", TCL_GLOBAL_ONLY);378#endif379 380#ifdef SQLITE_OMIT_COMPLETE381 Tcl_SetVar2(interp, "sqlite_options", "complete", "0", TCL_GLOBAL_ONLY);382#else383 Tcl_SetVar2(interp, "sqlite_options", "complete", "1", TCL_GLOBAL_ONLY);384#endif385 386#ifdef SQLITE_OMIT_COMPOUND_SELECT387 Tcl_SetVar2(interp, "sqlite_options", "compound", "0", TCL_GLOBAL_ONLY);388#else389 Tcl_SetVar2(interp, "sqlite_options", "compound", "1", TCL_GLOBAL_ONLY);390#endif391 392 Tcl_SetVar2(interp, "sqlite_options", "conflict", "1", TCL_GLOBAL_ONLY);393 Tcl_SetVar2(interp, "sqlite_options", "crashtest", "1", TCL_GLOBAL_ONLY);394 395#ifdef SQLITE_OMIT_DATETIME_FUNCS396 Tcl_SetVar2(interp, "sqlite_options", "datetime", "0", TCL_GLOBAL_ONLY);397#else398 Tcl_SetVar2(interp, "sqlite_options", "datetime", "1", TCL_GLOBAL_ONLY);399#endif400 401#ifdef SQLITE_OMIT_DECLTYPE402 Tcl_SetVar2(interp, "sqlite_options", "decltype", "0", TCL_GLOBAL_ONLY);403#else404 Tcl_SetVar2(interp, "sqlite_options", "decltype", "1", TCL_GLOBAL_ONLY);405#endif406 407#ifdef SQLITE_OMIT_DEPRECATED408 Tcl_SetVar2(interp, "sqlite_options", "deprecated", "0", TCL_GLOBAL_ONLY);409#else410 Tcl_SetVar2(interp, "sqlite_options", "deprecated", "1", TCL_GLOBAL_ONLY);411#endif412 413#ifdef SQLITE_OMIT_DISKIO414 Tcl_SetVar2(interp, "sqlite_options", "diskio", "0", TCL_GLOBAL_ONLY);415#else416 Tcl_SetVar2(interp, "sqlite_options", "diskio", "1", TCL_GLOBAL_ONLY);417#endif418 419#ifdef SQLITE_OMIT_EXPLAIN420 Tcl_SetVar2(interp, "sqlite_options", "explain", "0", TCL_GLOBAL_ONLY);421#else422 Tcl_SetVar2(interp, "sqlite_options", "explain", "1", TCL_GLOBAL_ONLY);423#endif424 425#ifdef SQLITE_OMIT_FLOATING_POINT426 Tcl_SetVar2(interp, "sqlite_options", "floatingpoint", "0", TCL_GLOBAL_ONLY);427#else428 Tcl_SetVar2(interp, "sqlite_options", "floatingpoint", "1", TCL_GLOBAL_ONLY);429#endif430 431#ifdef SQLITE_OMIT_FOREIGN_KEY432 Tcl_SetVar2(interp, "sqlite_options", "foreignkey", "0", TCL_GLOBAL_ONLY);433#else434 Tcl_SetVar2(interp, "sqlite_options", "foreignkey", "1", TCL_GLOBAL_ONLY);435#endif436 437#ifdef SQLITE_ENABLE_FTS3438 Tcl_SetVar2(interp, "sqlite_options", "fts3", "1", TCL_GLOBAL_ONLY);439#else440 Tcl_SetVar2(interp, "sqlite_options", "fts3", "0", TCL_GLOBAL_ONLY);441#endif442 443#ifdef SQLITE_ENABLE_FTS5444 Tcl_SetVar2(interp, "sqlite_options", "fts5", "1", TCL_GLOBAL_ONLY);445#else446 Tcl_SetVar2(interp, "sqlite_options", "fts5", "0", TCL_GLOBAL_ONLY);447#endif448 449#if defined(SQLITE_ENABLE_FTS3) && !defined(SQLITE_DISABLE_FTS3_UNICODE)450 Tcl_SetVar2(interp, "sqlite_options", "fts3_unicode", "1", TCL_GLOBAL_ONLY);451#else452 Tcl_SetVar2(interp, "sqlite_options", "fts3_unicode", "0", TCL_GLOBAL_ONLY);453#endif454 455#ifdef SQLITE_DISABLE_FTS4_DEFERRED456 Tcl_SetVar2(interp, "sqlite_options", "fts4_deferred", "0", TCL_GLOBAL_ONLY);457#else458 Tcl_SetVar2(interp, "sqlite_options", "fts4_deferred", "1", TCL_GLOBAL_ONLY);459#endif460 461#ifdef SQLITE_OMIT_GET_TABLE462 Tcl_SetVar2(interp, "sqlite_options", "gettable", "0", TCL_GLOBAL_ONLY);463#else464 Tcl_SetVar2(interp, "sqlite_options", "gettable", "1", TCL_GLOBAL_ONLY);465#endif466 467#ifdef SQLITE_ENABLE_ICU468 Tcl_SetVar2(interp, "sqlite_options", "icu", "1", TCL_GLOBAL_ONLY);469#else470 Tcl_SetVar2(interp, "sqlite_options", "icu", "0", TCL_GLOBAL_ONLY);471#endif472 473#ifdef SQLITE_ENABLE_ICU_COLLATIONS474 Tcl_SetVar2(interp, "sqlite_options", "icu_collations", "1", TCL_GLOBAL_ONLY);475#else476 Tcl_SetVar2(interp, "sqlite_options", "icu_collations", "0", TCL_GLOBAL_ONLY);477#endif478 479#ifdef SQLITE_OMIT_INCRBLOB480 Tcl_SetVar2(interp, "sqlite_options", "incrblob", "0", TCL_GLOBAL_ONLY);481#else482 Tcl_SetVar2(interp, "sqlite_options", "incrblob", "1", TCL_GLOBAL_ONLY);483#endif /* SQLITE_OMIT_AUTOVACUUM */484 485#ifdef SQLITE_OMIT_INTEGRITY_CHECK486 Tcl_SetVar2(interp, "sqlite_options", "integrityck", "0", TCL_GLOBAL_ONLY);487#else488 Tcl_SetVar2(interp, "sqlite_options", "integrityck", "1", TCL_GLOBAL_ONLY);489#endif490 491#if defined(SQLITE_DEFAULT_FILE_FORMAT) && SQLITE_DEFAULT_FILE_FORMAT==1492 Tcl_SetVar2(interp, "sqlite_options", "legacyformat", "1", TCL_GLOBAL_ONLY);493#else494 Tcl_SetVar2(interp, "sqlite_options", "legacyformat", "0", TCL_GLOBAL_ONLY);495#endif496 497#ifdef SQLITE_OMIT_LIKE_OPTIMIZATION498 Tcl_SetVar2(interp, "sqlite_options", "like_opt", "0", TCL_GLOBAL_ONLY);499#else500 Tcl_SetVar2(interp, "sqlite_options", "like_opt", "1", TCL_GLOBAL_ONLY);501#endif502 503#ifdef SQLITE_OMIT_LOAD_EXTENSION504 Tcl_SetVar2(interp, "sqlite_options", "load_ext", "0", TCL_GLOBAL_ONLY);505#else506 Tcl_SetVar2(interp, "sqlite_options", "load_ext", "1", TCL_GLOBAL_ONLY);507#endif508 509#ifdef SQLITE_OMIT_LOCALTIME510 Tcl_SetVar2(interp, "sqlite_options", "localtime", "0", TCL_GLOBAL_ONLY);511#else512 Tcl_SetVar2(interp, "sqlite_options", "localtime", "1", TCL_GLOBAL_ONLY);513#endif514 515#ifdef SQLITE_OMIT_LOOKASIDE516 Tcl_SetVar2(interp, "sqlite_options", "lookaside", "0", TCL_GLOBAL_ONLY);517#else518 Tcl_SetVar2(interp, "sqlite_options", "lookaside", "1", TCL_GLOBAL_ONLY);519#endif520 521#ifdef SQLITE_OMIT_MEMORYDB522 Tcl_SetVar2(interp, "sqlite_options", "memorydb", "0", TCL_GLOBAL_ONLY);523#else524 Tcl_SetVar2(interp, "sqlite_options", "memorydb", "1", TCL_GLOBAL_ONLY);525#endif526 527#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT528 Tcl_SetVar2(interp, "sqlite_options", "memorymanage", "1", TCL_GLOBAL_ONLY);529#else530 Tcl_SetVar2(interp, "sqlite_options", "memorymanage", "0", TCL_GLOBAL_ONLY);531#endif532 533Tcl_SetVar2(interp, "sqlite_options", "mergesort", "1", TCL_GLOBAL_ONLY);534 535#ifdef SQLITE_ENABLE_NULL_TRIM536 Tcl_SetVar2(interp, "sqlite_options", "null_trim", "1", TCL_GLOBAL_ONLY);537#else538 Tcl_SetVar2(interp, "sqlite_options", "null_trim", "0", TCL_GLOBAL_ONLY);539#endif540 541#ifdef SQLITE_OMIT_OR_OPTIMIZATION542 Tcl_SetVar2(interp, "sqlite_options", "or_opt", "0", TCL_GLOBAL_ONLY);543#else544 Tcl_SetVar2(interp, "sqlite_options", "or_opt", "1", TCL_GLOBAL_ONLY);545#endif546 547#ifdef SQLITE_ENABLE_RBU548 Tcl_SetVar2(interp, "sqlite_options", "rbu", "1", TCL_GLOBAL_ONLY);549#else550 Tcl_SetVar2(interp, "sqlite_options", "rbu", "0", TCL_GLOBAL_ONLY);551#endif552 553#ifdef SQLITE_OMIT_PAGER_PRAGMAS554 Tcl_SetVar2(interp, "sqlite_options", "pager_pragmas", "0", TCL_GLOBAL_ONLY);555#else556 Tcl_SetVar2(interp, "sqlite_options", "pager_pragmas", "1", TCL_GLOBAL_ONLY);557#endif558 559#if defined(SQLITE_OMIT_PRAGMA) || defined(SQLITE_OMIT_FLAG_PRAGMAS)560 Tcl_SetVar2(interp, "sqlite_options", "pragma", "0", TCL_GLOBAL_ONLY);561 Tcl_SetVar2(interp, "sqlite_options", "integrityck", "0", TCL_GLOBAL_ONLY);562#else563 Tcl_SetVar2(interp, "sqlite_options", "pragma", "1", TCL_GLOBAL_ONLY);564#endif565 566#ifdef SQLITE_OMIT_PROGRESS_CALLBACK567 Tcl_SetVar2(interp, "sqlite_options", "progress", "0", TCL_GLOBAL_ONLY);568#else569 Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY);570#endif571 572#ifdef SQLITE_OMIT_REINDEX573 Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY);574#else575 Tcl_SetVar2(interp, "sqlite_options", "reindex", "1", TCL_GLOBAL_ONLY);576#endif577 578#ifdef SQLITE_ENABLE_RTREE579 Tcl_SetVar2(interp, "sqlite_options", "rtree", "1", TCL_GLOBAL_ONLY);580#else581 Tcl_SetVar2(interp, "sqlite_options", "rtree", "0", TCL_GLOBAL_ONLY);582#endif583 584#ifdef SQLITE_RTREE_INT_ONLY585 Tcl_SetVar2(interp, "sqlite_options", "rtree_int_only", "1", TCL_GLOBAL_ONLY);586#else587 Tcl_SetVar2(interp, "sqlite_options", "rtree_int_only", "0", TCL_GLOBAL_ONLY);588#endif589 590#ifdef SQLITE_OMIT_SCHEMA_PRAGMAS591 Tcl_SetVar2(interp, "sqlite_options", "schema_pragmas", "0", TCL_GLOBAL_ONLY);592#else593 Tcl_SetVar2(interp, "sqlite_options", "schema_pragmas", "1", TCL_GLOBAL_ONLY);594#endif595 596#ifdef SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS597 Tcl_SetVar2(interp, "sqlite_options", "schema_version", "0", TCL_GLOBAL_ONLY);598#else599 Tcl_SetVar2(interp, "sqlite_options", "schema_version", "1", TCL_GLOBAL_ONLY);600#endif601 602#if defined(SQLITE_ENABLE_SESSION) && defined(SQLITE_ENABLE_PREUPDATE_HOOK)603 Tcl_SetVar2(interp, "sqlite_options", "session", "1", TCL_GLOBAL_ONLY);604#else605 Tcl_SetVar2(interp, "sqlite_options", "session", "0", TCL_GLOBAL_ONLY);606#endif607 608#ifdef SQLITE_ENABLE_STAT4609 Tcl_SetVar2(interp, "sqlite_options", "stat4", "1", TCL_GLOBAL_ONLY);610#else611 Tcl_SetVar2(interp, "sqlite_options", "stat4", "0", TCL_GLOBAL_ONLY);612#endif613#if defined(SQLITE_ENABLE_STMTVTAB) && !defined(SQLITE_OMIT_VIRTUALTABLE)614 Tcl_SetVar2(interp, "sqlite_options", "stmtvtab", "1", TCL_GLOBAL_ONLY);615#else616 Tcl_SetVar2(interp, "sqlite_options", "stmtvtab", "0", TCL_GLOBAL_ONLY);617#endif618 619#ifdef SQLITE_ENABLE_STMT_SCANSTATUS620 Tcl_SetVar2(interp, "sqlite_options", "scanstatus", "1", TCL_GLOBAL_ONLY);621#else622 Tcl_SetVar2(interp, "sqlite_options", "scanstatus", "0", TCL_GLOBAL_ONLY);623#endif624 625#if !defined(SQLITE_ENABLE_LOCKING_STYLE)626# if defined(__APPLE__)627# define SQLITE_ENABLE_LOCKING_STYLE 1628# else629# define SQLITE_ENABLE_LOCKING_STYLE 0630# endif631#endif632#if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__)633 Tcl_SetVar2(interp,"sqlite_options","lock_proxy_pragmas","1",TCL_GLOBAL_ONLY);634#else635 Tcl_SetVar2(interp,"sqlite_options","lock_proxy_pragmas","0",TCL_GLOBAL_ONLY);636#endif637#if defined(SQLITE_PREFER_PROXY_LOCKING) && defined(__APPLE__)638 Tcl_SetVar2(interp,"sqlite_options","prefer_proxy_locking","1",TCL_GLOBAL_ONLY);639#else640 Tcl_SetVar2(interp,"sqlite_options","prefer_proxy_locking","0",TCL_GLOBAL_ONLY);641#endif642 643 644#ifdef SQLITE_OMIT_SHARED_CACHE645 Tcl_SetVar2(interp, "sqlite_options", "shared_cache", "0", TCL_GLOBAL_ONLY);646#else647 Tcl_SetVar2(interp, "sqlite_options", "shared_cache", "1", TCL_GLOBAL_ONLY);648#endif649 650#ifdef SQLITE_OMIT_SUBQUERY651 Tcl_SetVar2(interp, "sqlite_options", "subquery", "0", TCL_GLOBAL_ONLY);652#else653 Tcl_SetVar2(interp, "sqlite_options", "subquery", "1", TCL_GLOBAL_ONLY);654#endif655 656#ifdef SQLITE_OMIT_TCL_VARIABLE657 Tcl_SetVar2(interp, "sqlite_options", "tclvar", "0", TCL_GLOBAL_ONLY);658#else659 Tcl_SetVar2(interp, "sqlite_options", "tclvar", "1", TCL_GLOBAL_ONLY);660#endif661 662 Tcl_SetVar2(interp, "sqlite_options", "threadsafe", 663 SQLITE_THREADSAFE ? "1" : "0", TCL_GLOBAL_ONLY);664 Tcl_SetVar2(interp, "sqlite_options", "threadsafe1", 665 SQLITE_THREADSAFE==1 ? "1" : "0", TCL_GLOBAL_ONLY);666 Tcl_SetVar2(interp, "sqlite_options", "threadsafe2", 667 SQLITE_THREADSAFE==2 ? "1" : "0", TCL_GLOBAL_ONLY);668 assert( sqlite3_threadsafe()==SQLITE_THREADSAFE );669 670#ifdef SQLITE_OMIT_TEMPDB671 Tcl_SetVar2(interp, "sqlite_options", "tempdb", "0", TCL_GLOBAL_ONLY);672#else673 Tcl_SetVar2(interp, "sqlite_options", "tempdb", "1", TCL_GLOBAL_ONLY);674#endif675 676#ifdef SQLITE_OMIT_TRACE677 Tcl_SetVar2(interp, "sqlite_options", "trace", "0", TCL_GLOBAL_ONLY);678#else679 Tcl_SetVar2(interp, "sqlite_options", "trace", "1", TCL_GLOBAL_ONLY);680#endif681 682#ifdef SQLITE_OMIT_TRIGGER683 Tcl_SetVar2(interp, "sqlite_options", "trigger", "0", TCL_GLOBAL_ONLY);684#else685 Tcl_SetVar2(interp, "sqlite_options", "trigger", "1", TCL_GLOBAL_ONLY);686#endif687 688#ifdef SQLITE_OMIT_TRUNCATE_OPTIMIZATION689 Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "0", TCL_GLOBAL_ONLY);690#else691 Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY);692#endif693 694#ifdef SQLITE_OMIT_UTF16695 Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY);696#else697 Tcl_SetVar2(interp, "sqlite_options", "utf16", "1", TCL_GLOBAL_ONLY);698#endif699 700#if defined(SQLITE_OMIT_VACUUM) || defined(SQLITE_OMIT_ATTACH)701 Tcl_SetVar2(interp, "sqlite_options", "vacuum", "0", TCL_GLOBAL_ONLY);702#else703 Tcl_SetVar2(interp, "sqlite_options", "vacuum", "1", TCL_GLOBAL_ONLY);704#endif705 706#ifdef SQLITE_OMIT_VIEW707 Tcl_SetVar2(interp, "sqlite_options", "view", "0", TCL_GLOBAL_ONLY);708#else709 Tcl_SetVar2(interp, "sqlite_options", "view", "1", TCL_GLOBAL_ONLY);710#endif711 712#ifdef SQLITE_OMIT_VIRTUALTABLE713 Tcl_SetVar2(interp, "sqlite_options", "vtab", "0", TCL_GLOBAL_ONLY);714#else715 Tcl_SetVar2(interp, "sqlite_options", "vtab", "1", TCL_GLOBAL_ONLY);716#endif717 718#ifdef SQLITE_OMIT_WAL719 Tcl_SetVar2(interp, "sqlite_options", "wal", "0", TCL_GLOBAL_ONLY);720#else721 Tcl_SetVar2(interp, "sqlite_options", "wal", "1", TCL_GLOBAL_ONLY);722#endif723 724#ifdef SQLITE_OMIT_WSD725 Tcl_SetVar2(interp, "sqlite_options", "wsd", "0", TCL_GLOBAL_ONLY);726#else727 Tcl_SetVar2(interp, "sqlite_options", "wsd", "1", TCL_GLOBAL_ONLY);728#endif729 730#if defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT) && !defined(SQLITE_OMIT_SUBQUERY)731 Tcl_SetVar2(interp, "sqlite_options", "update_delete_limit", "1", TCL_GLOBAL_ONLY);732#else733 Tcl_SetVar2(interp, "sqlite_options", "update_delete_limit", "0", TCL_GLOBAL_ONLY);734#endif735 736#if defined(SQLITE_ENABLE_UNLOCK_NOTIFY)737 Tcl_SetVar2(interp, "sqlite_options", "unlock_notify", "1", TCL_GLOBAL_ONLY);738#else739 Tcl_SetVar2(interp, "sqlite_options", "unlock_notify", "0", TCL_GLOBAL_ONLY);740#endif741 742#ifdef SQLITE_FAST_SECURE_DELETE743 Tcl_SetVar2(interp, "sqlite_options", "fast_secure_delete", "1", TCL_GLOBAL_ONLY);744#else745 Tcl_SetVar2(interp, "sqlite_options", "fast_secure_delete", "0", TCL_GLOBAL_ONLY);746#endif747 748#ifdef SQLITE_SECURE_DELETE749 Tcl_SetVar2(interp, "sqlite_options", "secure_delete", "1", TCL_GLOBAL_ONLY);750#else751 Tcl_SetVar2(interp, "sqlite_options", "secure_delete", "0", TCL_GLOBAL_ONLY);752#endif753 754#ifdef SQLITE_MULTIPLEX_EXT_OVWR755 Tcl_SetVar2(interp, "sqlite_options", "multiplex_ext_overwrite", "1", TCL_GLOBAL_ONLY);756#else757 Tcl_SetVar2(interp, "sqlite_options", "multiplex_ext_overwrite", "0", TCL_GLOBAL_ONLY);758#endif759 760#ifdef YYTRACKMAXSTACKDEPTH761 Tcl_SetVar2(interp, "sqlite_options", "yytrackmaxstackdepth", "1", TCL_GLOBAL_ONLY);762#else763 Tcl_SetVar2(interp, "sqlite_options", "yytrackmaxstackdepth", "0", TCL_GLOBAL_ONLY);764#endif765 766#ifdef SQLITE_ENABLE_SQLLOG767 Tcl_SetVar2(interp, "sqlite_options", "sqllog", "1", TCL_GLOBAL_ONLY);768#else769 Tcl_SetVar2(interp, "sqlite_options", "sqllog", "0", TCL_GLOBAL_ONLY);770#endif771 772#ifdef SQLITE_ENABLE_URI_00_ERROR773 Tcl_SetVar2(interp, "sqlite_options", "uri_00_error", "1", TCL_GLOBAL_ONLY);774#else775 Tcl_SetVar2(interp, "sqlite_options", "uri_00_error", "0", TCL_GLOBAL_ONLY);776#endif777 778#if defined(SQLITE_ENABLE_NORMALIZE)779 Tcl_SetVar2(interp, "sqlite_options", "normalize", "1", TCL_GLOBAL_ONLY);780#else781 Tcl_SetVar2(interp, "sqlite_options", "normalize", "0", TCL_GLOBAL_ONLY);782#endif783 784#ifdef SQLITE_OMIT_WINDOWFUNC785 Tcl_SetVar2(interp, "sqlite_options", "windowfunc", "0", TCL_GLOBAL_ONLY);786#else787 Tcl_SetVar2(interp, "sqlite_options", "windowfunc", "1", TCL_GLOBAL_ONLY);788#endif789 790#if !defined(SQLITE_ENABLE_SETLK_TIMEOUT)791 Tcl_SetVar2(interp, "sqlite_options", "setlk_timeout", "0", TCL_GLOBAL_ONLY);792#else793 Tcl_SetVar2(interp, "sqlite_options", "setlk_timeout", 794 STRINGVALUE(SQLITE_ENABLE_SETLK_TIMEOUT), TCL_GLOBAL_ONLY);795#endif796 797#define LINKVAR(x) { \798 static const int cv_ ## x = SQLITE_ ## x; \799 Tcl_LinkVar(interp, "SQLITE_" #x, (char *)&(cv_ ## x), \800 TCL_LINK_INT | TCL_LINK_READ_ONLY); }801 802 LINKVAR( MAX_LENGTH );803 LINKVAR( MAX_COLUMN );804 LINKVAR( MAX_SQL_LENGTH );805 LINKVAR( MAX_EXPR_DEPTH );806 LINKVAR( MAX_COMPOUND_SELECT );807 LINKVAR( MAX_VDBE_OP );808 LINKVAR( MAX_FUNCTION_ARG );809 LINKVAR( MAX_VARIABLE_NUMBER );810 LINKVAR( MAX_PAGE_SIZE );811 LINKVAR( MAX_PAGE_COUNT );812 LINKVAR( MAX_LIKE_PATTERN_LENGTH );813 LINKVAR( MAX_TRIGGER_DEPTH );814 LINKVAR( DEFAULT_CACHE_SIZE );815 LINKVAR( DEFAULT_PAGE_SIZE );816 LINKVAR( DEFAULT_FILE_FORMAT );817 LINKVAR( DEFAULT_SYNCHRONOUS );818 LINKVAR( DEFAULT_WAL_SYNCHRONOUS );819 LINKVAR( MAX_ATTACHED );820 LINKVAR( MAX_DEFAULT_PAGE_SIZE );821 LINKVAR( MAX_WORKER_THREADS );822 823 {824 static const int cv_TEMP_STORE = SQLITE_TEMP_STORE;825 Tcl_LinkVar(interp, "TEMP_STORE", (char *)&(cv_TEMP_STORE),826 TCL_LINK_INT | TCL_LINK_READ_ONLY);827 }828 829#ifdef _MSC_VER830 {831 static const int cv__MSC_VER = 1;832 Tcl_LinkVar(interp, "_MSC_VER", (char *)&(cv__MSC_VER),833 TCL_LINK_INT | TCL_LINK_READ_ONLY);834 }835#endif836#ifdef __GNUC__837 {838 static const int cv___GNUC__ = 1;839 Tcl_LinkVar(interp, "__GNUC__", (char *)&(cv___GNUC__),840 TCL_LINK_INT | TCL_LINK_READ_ONLY);841 }842#endif843}844 845 846/*847** Register commands with the TCL interpreter.848*/849int Sqliteconfig_Init(Tcl_Interp *interp){850 set_options(interp);851 return TCL_OK;852}853 