Team Ai
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
test_config.c853 linesDownload Raw Back to src
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