1 /* 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. 18 */ 19 20 #include "sqliteLimit.h" 21 22 #include "sqliteInt.h" 23 #include "tcl.h" 24 #include <stdlib.h> 25 #include <string.h> 26 27 /* 28 ** Macro to stringify the results of the evaluation a pre-processor 29 ** macro. i.e. so that STRINGVALUE(SQLITE_NOMEM) -> "7". 30 */ 31 #define STRINGVALUE2(x) #x 32 #define STRINGVALUE(x) STRINGVALUE2(x) 33 34 /* 35 ** This routine sets entries in the global ::sqlite_options() array variable 36 ** according to the compile-time configuration of the database. Test 37 ** procedures use this to determine when tests should be omitted. 38 */ 39 static void set_options(Tcl_Interp *interp){ 40 #ifdef HAVE_MALLOC_USABLE_SIZE 41 Tcl_SetVar2(interp, "sqlite_options", "malloc_usable_size", "1", 42 TCL_GLOBAL_ONLY); 43 #else 44 Tcl_SetVar2(interp, "sqlite_options", "malloc_usable_size", "0", 45 TCL_GLOBAL_ONLY); 46 #endif 47 48 #ifdef SQLITE_32BIT_ROWID 49 Tcl_SetVar2(interp, "sqlite_options", "rowid32", "1", TCL_GLOBAL_ONLY); 50 #else 51 Tcl_SetVar2(interp, "sqlite_options", "rowid32", "0", TCL_GLOBAL_ONLY); 52 #endif 53 54 #ifdef SQLITE_CASE_SENSITIVE_LIKE 55 Tcl_SetVar2(interp, "sqlite_options","casesensitivelike","1",TCL_GLOBAL_ONLY); 56 #else 57 Tcl_SetVar2(interp, "sqlite_options","casesensitivelike","0",TCL_GLOBAL_ONLY); 58 #endif 59 60 #ifdef SQLITE_CURDIR 61 Tcl_SetVar2(interp, "sqlite_options", "curdir", "1", TCL_GLOBAL_ONLY); 62 #else 63 Tcl_SetVar2(interp, "sqlite_options", "curdir", "0", TCL_GLOBAL_ONLY); 64 #endif 65 66 #ifdef SQLITE_DEBUG 67 Tcl_SetVar2(interp, "sqlite_options", "debug", "1", TCL_GLOBAL_ONLY); 68 #else 69 Tcl_SetVar2(interp, "sqlite_options", "debug", "0", TCL_GLOBAL_ONLY); 70 #endif 71 72 #ifdef SQLITE_DIRECT_OVERFLOW_READ 73 Tcl_SetVar2(interp, "sqlite_options", "direct_read", "1", TCL_GLOBAL_ONLY); 74 #else 75 Tcl_SetVar2(interp, "sqlite_options", "direct_read", "0", TCL_GLOBAL_ONLY); 76 #endif 77 78 #ifdef SQLITE_DISABLE_DIRSYNC 79 Tcl_SetVar2(interp, "sqlite_options", "dirsync", "0", TCL_GLOBAL_ONLY); 80 #else 81 Tcl_SetVar2(interp, "sqlite_options", "dirsync", "1", TCL_GLOBAL_ONLY); 82 #endif 83 84 #ifdef SQLITE_DISABLE_LFS 85 Tcl_SetVar2(interp, "sqlite_options", "lfs", "0", TCL_GLOBAL_ONLY); 86 #else 87 Tcl_SetVar2(interp, "sqlite_options", "lfs", "1", TCL_GLOBAL_ONLY); 88 #endif 89 90 #ifdef SQLITE_DISABLE_MMAP 91 Tcl_SetVar2(interp, "sqlite_options", "mmap", "0", TCL_GLOBAL_ONLY); 92 #else 93 Tcl_SetVar2(interp, "sqlite_options", "mmap", "1", TCL_GLOBAL_ONLY); 94 #endif 95 96 #if 1 /* def SQLITE_MEMDEBUG */ 97 Tcl_SetVar2(interp, "sqlite_options", "memdebug", "1", TCL_GLOBAL_ONLY); 98 #else 99 Tcl_SetVar2(interp, "sqlite_options", "memdebug", "0", TCL_GLOBAL_ONLY); 100 #endif 101 102 #ifdef SQLITE_ENABLE_8_3_NAMES 103 Tcl_SetVar2(interp, "sqlite_options", "8_3_names", "1", TCL_GLOBAL_ONLY); 104 #else 105 Tcl_SetVar2(interp, "sqlite_options", "8_3_names", "0", TCL_GLOBAL_ONLY); 106 #endif 107 108 #ifdef SQLITE_ENABLE_MEMSYS3 109 Tcl_SetVar2(interp, "sqlite_options", "mem3", "1", TCL_GLOBAL_ONLY); 110 #else 111 Tcl_SetVar2(interp, "sqlite_options", "mem3", "0", TCL_GLOBAL_ONLY); 112 #endif 113 114 #ifdef SQLITE_ENABLE_MEMSYS5 115 Tcl_SetVar2(interp, "sqlite_options", "mem5", "1", TCL_GLOBAL_ONLY); 116 #else 117 Tcl_SetVar2(interp, "sqlite_options", "mem5", "0", TCL_GLOBAL_ONLY); 118 #endif 119 120 #ifdef SQLITE_MUTEX_OMIT 121 Tcl_SetVar2(interp, "sqlite_options", "mutex", "0", TCL_GLOBAL_ONLY); 122 #else 123 Tcl_SetVar2(interp, "sqlite_options", "mutex", "1", TCL_GLOBAL_ONLY); 124 #endif 125 126 #ifdef SQLITE_MUTEX_NOOP 127 Tcl_SetVar2(interp, "sqlite_options", "mutex_noop", "1", TCL_GLOBAL_ONLY); 128 #else 129 Tcl_SetVar2(interp, "sqlite_options", "mutex_noop", "0", TCL_GLOBAL_ONLY); 130 #endif 131 132 #ifdef SQLITE_OMIT_ALTERTABLE 133 Tcl_SetVar2(interp, "sqlite_options", "altertable", "0", TCL_GLOBAL_ONLY); 134 #else 135 Tcl_SetVar2(interp, "sqlite_options", "altertable", "1", TCL_GLOBAL_ONLY); 136 #endif 137 138 #ifdef SQLITE_OMIT_ANALYZE 139 Tcl_SetVar2(interp, "sqlite_options", "analyze", "0", TCL_GLOBAL_ONLY); 140 #else 141 Tcl_SetVar2(interp, "sqlite_options", "analyze", "1", TCL_GLOBAL_ONLY); 142 #endif 143 144 #ifdef SQLITE_ENABLE_ATOMIC_WRITE 145 Tcl_SetVar2(interp, "sqlite_options", "atomicwrite", "1", TCL_GLOBAL_ONLY); 146 #else 147 Tcl_SetVar2(interp, "sqlite_options", "atomicwrite", "0", TCL_GLOBAL_ONLY); 148 #endif 149 150 #ifdef SQLITE_OMIT_ATTACH 151 Tcl_SetVar2(interp, "sqlite_options", "attach", "0", TCL_GLOBAL_ONLY); 152 #else 153 Tcl_SetVar2(interp, "sqlite_options", "attach", "1", TCL_GLOBAL_ONLY); 154 #endif 155 156 #ifdef SQLITE_OMIT_AUTHORIZATION 157 Tcl_SetVar2(interp, "sqlite_options", "auth", "0", TCL_GLOBAL_ONLY); 158 #else 159 Tcl_SetVar2(interp, "sqlite_options", "auth", "1", TCL_GLOBAL_ONLY); 160 #endif 161 162 #ifdef SQLITE_OMIT_AUTOINCREMENT 163 Tcl_SetVar2(interp, "sqlite_options", "autoinc", "0", TCL_GLOBAL_ONLY); 164 #else 165 Tcl_SetVar2(interp, "sqlite_options", "autoinc", "1", TCL_GLOBAL_ONLY); 166 #endif 167 168 #ifdef SQLITE_OMIT_AUTOMATIC_INDEX 169 Tcl_SetVar2(interp, "sqlite_options", "autoindex", "0", TCL_GLOBAL_ONLY); 170 #else 171 Tcl_SetVar2(interp, "sqlite_options", "autoindex", "1", TCL_GLOBAL_ONLY); 172 #endif 173 174 #ifdef SQLITE_OMIT_AUTORESET 175 Tcl_SetVar2(interp, "sqlite_options", "autoreset", "0", TCL_GLOBAL_ONLY); 176 #else 177 Tcl_SetVar2(interp, "sqlite_options", "autoreset", "1", TCL_GLOBAL_ONLY); 178 #endif 179 180 #ifdef SQLITE_OMIT_AUTOVACUUM 181 Tcl_SetVar2(interp, "sqlite_options", "autovacuum", "0", TCL_GLOBAL_ONLY); 182 #else 183 Tcl_SetVar2(interp, "sqlite_options", "autovacuum", "1", TCL_GLOBAL_ONLY); 184 #endif /* SQLITE_OMIT_AUTOVACUUM */ 185 #if !defined(SQLITE_DEFAULT_AUTOVACUUM) 186 Tcl_SetVar2(interp,"sqlite_options","default_autovacuum","0",TCL_GLOBAL_ONLY); 187 #else 188 Tcl_SetVar2(interp, "sqlite_options", "default_autovacuum", 189 STRINGVALUE(SQLITE_DEFAULT_AUTOVACUUM), TCL_GLOBAL_ONLY); 190 #endif 191 192 #ifdef SQLITE_OMIT_BETWEEN_OPTIMIZATION 193 Tcl_SetVar2(interp, "sqlite_options", "between_opt", "0", TCL_GLOBAL_ONLY); 194 #else 195 Tcl_SetVar2(interp, "sqlite_options", "between_opt", "1", TCL_GLOBAL_ONLY); 196 #endif 197 198 #ifdef SQLITE_OMIT_BUILTIN_TEST 199 Tcl_SetVar2(interp, "sqlite_options", "builtin_test", "0", TCL_GLOBAL_ONLY); 200 #else 201 Tcl_SetVar2(interp, "sqlite_options", "builtin_test", "1", TCL_GLOBAL_ONLY); 202 #endif 203 204 #ifdef SQLITE_OMIT_BLOB_LITERAL 205 Tcl_SetVar2(interp, "sqlite_options", "bloblit", "0", TCL_GLOBAL_ONLY); 206 #else 207 Tcl_SetVar2(interp, "sqlite_options", "bloblit", "1", TCL_GLOBAL_ONLY); 208 #endif 209 210 #ifdef SQLITE_OMIT_CAST 211 Tcl_SetVar2(interp, "sqlite_options", "cast", "0", TCL_GLOBAL_ONLY); 212 #else 213 Tcl_SetVar2(interp, "sqlite_options", "cast", "1", TCL_GLOBAL_ONLY); 214 #endif 215 216 #ifdef SQLITE_OMIT_CHECK 217 Tcl_SetVar2(interp, "sqlite_options", "check", "0", TCL_GLOBAL_ONLY); 218 #else 219 Tcl_SetVar2(interp, "sqlite_options", "check", "1", TCL_GLOBAL_ONLY); 220 #endif 221 222 #ifdef SQLITE_ENABLE_COLUMN_METADATA 223 Tcl_SetVar2(interp, "sqlite_options", "columnmetadata", "1", TCL_GLOBAL_ONLY); 224 #else 225 Tcl_SetVar2(interp, "sqlite_options", "columnmetadata", "0", TCL_GLOBAL_ONLY); 226 #endif 227 228 #ifdef SQLITE_ENABLE_OVERSIZE_CELL_CHECK 229 Tcl_SetVar2(interp, "sqlite_options", "oversize_cell_check", "1", 230 TCL_GLOBAL_ONLY); 231 #else 232 Tcl_SetVar2(interp, "sqlite_options", "oversize_cell_check", "0", 233 TCL_GLOBAL_ONLY); 234 #endif 235 236 #ifdef SQLITE_OMIT_COMPILEOPTION_DIAGS 237 Tcl_SetVar2(interp, "sqlite_options", "compileoption_diags", "0", TCL_GLOBAL_ONLY); 238 #else 239 Tcl_SetVar2(interp, "sqlite_options", "compileoption_diags", "1", TCL_GLOBAL_ONLY); 240 #endif 241 242 #ifdef SQLITE_OMIT_COMPLETE 243 Tcl_SetVar2(interp, "sqlite_options", "complete", "0", TCL_GLOBAL_ONLY); 244 #else 245 Tcl_SetVar2(interp, "sqlite_options", "complete", "1", TCL_GLOBAL_ONLY); 246 #endif 247 248 #ifdef SQLITE_OMIT_COMPOUND_SELECT 249 Tcl_SetVar2(interp, "sqlite_options", "compound", "0", TCL_GLOBAL_ONLY); 250 #else 251 Tcl_SetVar2(interp, "sqlite_options", "compound", "1", TCL_GLOBAL_ONLY); 252 #endif 253 254 Tcl_SetVar2(interp, "sqlite_options", "conflict", "1", TCL_GLOBAL_ONLY); 255 256 #if SQLITE_OS_UNIX 257 Tcl_SetVar2(interp, "sqlite_options", "crashtest", "1", TCL_GLOBAL_ONLY); 258 #else 259 Tcl_SetVar2(interp, "sqlite_options", "crashtest", "0", TCL_GLOBAL_ONLY); 260 #endif 261 262 #ifdef SQLITE_OMIT_DATETIME_FUNCS 263 Tcl_SetVar2(interp, "sqlite_options", "datetime", "0", TCL_GLOBAL_ONLY); 264 #else 265 Tcl_SetVar2(interp, "sqlite_options", "datetime", "1", TCL_GLOBAL_ONLY); 266 #endif 267 268 #ifdef SQLITE_OMIT_DECLTYPE 269 Tcl_SetVar2(interp, "sqlite_options", "decltype", "0", TCL_GLOBAL_ONLY); 270 #else 271 Tcl_SetVar2(interp, "sqlite_options", "decltype", "1", TCL_GLOBAL_ONLY); 272 #endif 273 274 #ifdef SQLITE_OMIT_DEPRECATED 275 Tcl_SetVar2(interp, "sqlite_options", "deprecated", "0", TCL_GLOBAL_ONLY); 276 #else 277 Tcl_SetVar2(interp, "sqlite_options", "deprecated", "1", TCL_GLOBAL_ONLY); 278 #endif 279 280 #ifdef SQLITE_OMIT_DISKIO 281 Tcl_SetVar2(interp, "sqlite_options", "diskio", "0", TCL_GLOBAL_ONLY); 282 #else 283 Tcl_SetVar2(interp, "sqlite_options", "diskio", "1", TCL_GLOBAL_ONLY); 284 #endif 285 286 #ifdef SQLITE_OMIT_EXPLAIN 287 Tcl_SetVar2(interp, "sqlite_options", "explain", "0", TCL_GLOBAL_ONLY); 288 #else 289 Tcl_SetVar2(interp, "sqlite_options", "explain", "1", TCL_GLOBAL_ONLY); 290 #endif 291 292 #ifdef SQLITE_OMIT_FLOATING_POINT 293 Tcl_SetVar2(interp, "sqlite_options", "floatingpoint", "0", TCL_GLOBAL_ONLY); 294 #else 295 Tcl_SetVar2(interp, "sqlite_options", "floatingpoint", "1", TCL_GLOBAL_ONLY); 296 #endif 297 298 #ifdef SQLITE_OMIT_FOREIGN_KEY 299 Tcl_SetVar2(interp, "sqlite_options", "foreignkey", "0", TCL_GLOBAL_ONLY); 300 #else 301 Tcl_SetVar2(interp, "sqlite_options", "foreignkey", "1", TCL_GLOBAL_ONLY); 302 #endif 303 304 #ifdef SQLITE_ENABLE_FTS1 305 Tcl_SetVar2(interp, "sqlite_options", "fts1", "1", TCL_GLOBAL_ONLY); 306 #else 307 Tcl_SetVar2(interp, "sqlite_options", "fts1", "0", TCL_GLOBAL_ONLY); 308 #endif 309 310 #ifdef SQLITE_ENABLE_FTS2 311 Tcl_SetVar2(interp, "sqlite_options", "fts2", "1", TCL_GLOBAL_ONLY); 312 #else 313 Tcl_SetVar2(interp, "sqlite_options", "fts2", "0", TCL_GLOBAL_ONLY); 314 #endif 315 316 #ifdef SQLITE_ENABLE_FTS3 317 Tcl_SetVar2(interp, "sqlite_options", "fts3", "1", TCL_GLOBAL_ONLY); 318 #else 319 Tcl_SetVar2(interp, "sqlite_options", "fts3", "0", TCL_GLOBAL_ONLY); 320 #endif 321 322 #if defined(SQLITE_ENABLE_FTS3) && defined(SQLITE_ENABLE_FTS4_UNICODE61) 323 Tcl_SetVar2(interp, "sqlite_options", "fts3_unicode", "1", TCL_GLOBAL_ONLY); 324 #else 325 Tcl_SetVar2(interp, "sqlite_options", "fts3_unicode", "0", TCL_GLOBAL_ONLY); 326 #endif 327 328 #ifdef SQLITE_DISABLE_FTS4_DEFERRED 329 Tcl_SetVar2(interp, "sqlite_options", "fts4_deferred", "0", TCL_GLOBAL_ONLY); 330 #else 331 Tcl_SetVar2(interp, "sqlite_options", "fts4_deferred", "1", TCL_GLOBAL_ONLY); 332 #endif 333 334 #ifdef SQLITE_OMIT_GET_TABLE 335 Tcl_SetVar2(interp, "sqlite_options", "gettable", "0", TCL_GLOBAL_ONLY); 336 #else 337 Tcl_SetVar2(interp, "sqlite_options", "gettable", "1", TCL_GLOBAL_ONLY); 338 #endif 339 340 #ifdef SQLITE_ENABLE_ICU 341 Tcl_SetVar2(interp, "sqlite_options", "icu", "1", TCL_GLOBAL_ONLY); 342 #else 343 Tcl_SetVar2(interp, "sqlite_options", "icu", "0", TCL_GLOBAL_ONLY); 344 #endif 345 346 #ifdef SQLITE_OMIT_INCRBLOB 347 Tcl_SetVar2(interp, "sqlite_options", "incrblob", "0", TCL_GLOBAL_ONLY); 348 #else 349 Tcl_SetVar2(interp, "sqlite_options", "incrblob", "1", TCL_GLOBAL_ONLY); 350 #endif /* SQLITE_OMIT_AUTOVACUUM */ 351 352 #ifdef SQLITE_OMIT_INTEGRITY_CHECK 353 Tcl_SetVar2(interp, "sqlite_options", "integrityck", "0", TCL_GLOBAL_ONLY); 354 #else 355 Tcl_SetVar2(interp, "sqlite_options", "integrityck", "1", TCL_GLOBAL_ONLY); 356 #endif 357 358 #if defined(SQLITE_DEFAULT_FILE_FORMAT) && SQLITE_DEFAULT_FILE_FORMAT==1 359 Tcl_SetVar2(interp, "sqlite_options", "legacyformat", "1", TCL_GLOBAL_ONLY); 360 #else 361 Tcl_SetVar2(interp, "sqlite_options", "legacyformat", "0", TCL_GLOBAL_ONLY); 362 #endif 363 364 #ifdef SQLITE_OMIT_LIKE_OPTIMIZATION 365 Tcl_SetVar2(interp, "sqlite_options", "like_opt", "0", TCL_GLOBAL_ONLY); 366 #else 367 Tcl_SetVar2(interp, "sqlite_options", "like_opt", "1", TCL_GLOBAL_ONLY); 368 #endif 369 370 #ifdef SQLITE_OMIT_LOAD_EXTENSION 371 Tcl_SetVar2(interp, "sqlite_options", "load_ext", "0", TCL_GLOBAL_ONLY); 372 #else 373 Tcl_SetVar2(interp, "sqlite_options", "load_ext", "1", TCL_GLOBAL_ONLY); 374 #endif 375 376 #ifdef SQLITE_OMIT_LOCALTIME 377 Tcl_SetVar2(interp, "sqlite_options", "localtime", "0", TCL_GLOBAL_ONLY); 378 #else 379 Tcl_SetVar2(interp, "sqlite_options", "localtime", "1", TCL_GLOBAL_ONLY); 380 #endif 381 382 #ifdef SQLITE_OMIT_LOOKASIDE 383 Tcl_SetVar2(interp, "sqlite_options", "lookaside", "0", TCL_GLOBAL_ONLY); 384 #else 385 Tcl_SetVar2(interp, "sqlite_options", "lookaside", "1", TCL_GLOBAL_ONLY); 386 #endif 387 388 Tcl_SetVar2(interp, "sqlite_options", "long_double", 389 sizeof(LONGDOUBLE_TYPE)>sizeof(double) ? "1" : "0", 390 TCL_GLOBAL_ONLY); 391 392 #ifdef SQLITE_OMIT_MEMORYDB 393 Tcl_SetVar2(interp, "sqlite_options", "memorydb", "0", TCL_GLOBAL_ONLY); 394 #else 395 Tcl_SetVar2(interp, "sqlite_options", "memorydb", "1", TCL_GLOBAL_ONLY); 396 #endif 397 398 #ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT 399 Tcl_SetVar2(interp, "sqlite_options", "memorymanage", "1", TCL_GLOBAL_ONLY); 400 #else 401 Tcl_SetVar2(interp, "sqlite_options", "memorymanage", "0", TCL_GLOBAL_ONLY); 402 #endif 403 404 Tcl_SetVar2(interp, "sqlite_options", "mergesort", "1", TCL_GLOBAL_ONLY); 405 406 #ifdef SQLITE_OMIT_OR_OPTIMIZATION 407 Tcl_SetVar2(interp, "sqlite_options", "or_opt", "0", TCL_GLOBAL_ONLY); 408 #else 409 Tcl_SetVar2(interp, "sqlite_options", "or_opt", "1", TCL_GLOBAL_ONLY); 410 #endif 411 412 #ifdef SQLITE_OMIT_PAGER_PRAGMAS 413 Tcl_SetVar2(interp, "sqlite_options", "pager_pragmas", "0", TCL_GLOBAL_ONLY); 414 #else 415 Tcl_SetVar2(interp, "sqlite_options", "pager_pragmas", "1", TCL_GLOBAL_ONLY); 416 #endif 417 418 #if defined(SQLITE_OMIT_PRAGMA) || defined(SQLITE_OMIT_FLAG_PRAGMAS) 419 Tcl_SetVar2(interp, "sqlite_options", "pragma", "0", TCL_GLOBAL_ONLY); 420 Tcl_SetVar2(interp, "sqlite_options", "integrityck", "0", TCL_GLOBAL_ONLY); 421 #else 422 Tcl_SetVar2(interp, "sqlite_options", "pragma", "1", TCL_GLOBAL_ONLY); 423 #endif 424 425 #ifdef SQLITE_OMIT_PROGRESS_CALLBACK 426 Tcl_SetVar2(interp, "sqlite_options", "progress", "0", TCL_GLOBAL_ONLY); 427 #else 428 Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY); 429 #endif 430 431 #ifdef SQLITE_OMIT_REINDEX 432 Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY); 433 #else 434 Tcl_SetVar2(interp, "sqlite_options", "reindex", "1", TCL_GLOBAL_ONLY); 435 #endif 436 437 #ifdef SQLITE_ENABLE_RTREE 438 Tcl_SetVar2(interp, "sqlite_options", "rtree", "1", TCL_GLOBAL_ONLY); 439 #else 440 Tcl_SetVar2(interp, "sqlite_options", "rtree", "0", TCL_GLOBAL_ONLY); 441 #endif 442 443 #ifdef SQLITE_RTREE_INT_ONLY 444 Tcl_SetVar2(interp, "sqlite_options", "rtree_int_only", "1", TCL_GLOBAL_ONLY); 445 #else 446 Tcl_SetVar2(interp, "sqlite_options", "rtree_int_only", "0", TCL_GLOBAL_ONLY); 447 #endif 448 449 #ifdef SQLITE_OMIT_SCHEMA_PRAGMAS 450 Tcl_SetVar2(interp, "sqlite_options", "schema_pragmas", "0", TCL_GLOBAL_ONLY); 451 #else 452 Tcl_SetVar2(interp, "sqlite_options", "schema_pragmas", "1", TCL_GLOBAL_ONLY); 453 #endif 454 455 #ifdef SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS 456 Tcl_SetVar2(interp, "sqlite_options", "schema_version", "0", TCL_GLOBAL_ONLY); 457 #else 458 Tcl_SetVar2(interp, "sqlite_options", "schema_version", "1", TCL_GLOBAL_ONLY); 459 #endif 460 461 #ifdef SQLITE_ENABLE_STAT3 462 Tcl_SetVar2(interp, "sqlite_options", "stat3", "1", TCL_GLOBAL_ONLY); 463 #else 464 Tcl_SetVar2(interp, "sqlite_options", "stat3", "0", TCL_GLOBAL_ONLY); 465 #endif 466 467 #if !defined(SQLITE_ENABLE_LOCKING_STYLE) 468 # if defined(__APPLE__) 469 # define SQLITE_ENABLE_LOCKING_STYLE 1 470 # else 471 # define SQLITE_ENABLE_LOCKING_STYLE 0 472 # endif 473 #endif 474 #if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__) 475 Tcl_SetVar2(interp,"sqlite_options","lock_proxy_pragmas","1",TCL_GLOBAL_ONLY); 476 #else 477 Tcl_SetVar2(interp,"sqlite_options","lock_proxy_pragmas","0",TCL_GLOBAL_ONLY); 478 #endif 479 #if defined(SQLITE_PREFER_PROXY_LOCKING) && defined(__APPLE__) 480 Tcl_SetVar2(interp,"sqlite_options","prefer_proxy_locking","1",TCL_GLOBAL_ONLY); 481 #else 482 Tcl_SetVar2(interp,"sqlite_options","prefer_proxy_locking","0",TCL_GLOBAL_ONLY); 483 #endif 484 485 486 #ifdef SQLITE_OMIT_SHARED_CACHE 487 Tcl_SetVar2(interp, "sqlite_options", "shared_cache", "0", TCL_GLOBAL_ONLY); 488 #else 489 Tcl_SetVar2(interp, "sqlite_options", "shared_cache", "1", TCL_GLOBAL_ONLY); 490 #endif 491 492 #ifdef SQLITE_OMIT_SUBQUERY 493 Tcl_SetVar2(interp, "sqlite_options", "subquery", "0", TCL_GLOBAL_ONLY); 494 #else 495 Tcl_SetVar2(interp, "sqlite_options", "subquery", "1", TCL_GLOBAL_ONLY); 496 #endif 497 498 #ifdef SQLITE_OMIT_TCL_VARIABLE 499 Tcl_SetVar2(interp, "sqlite_options", "tclvar", "0", TCL_GLOBAL_ONLY); 500 #else 501 Tcl_SetVar2(interp, "sqlite_options", "tclvar", "1", TCL_GLOBAL_ONLY); 502 #endif 503 504 Tcl_SetVar2(interp, "sqlite_options", "threadsafe", 505 STRINGVALUE(SQLITE_THREADSAFE), TCL_GLOBAL_ONLY); 506 assert( sqlite3_threadsafe()==SQLITE_THREADSAFE ); 507 508 #ifdef SQLITE_OMIT_TEMPDB 509 Tcl_SetVar2(interp, "sqlite_options", "tempdb", "0", TCL_GLOBAL_ONLY); 510 #else 511 Tcl_SetVar2(interp, "sqlite_options", "tempdb", "1", TCL_GLOBAL_ONLY); 512 #endif 513 514 #ifdef SQLITE_OMIT_TRACE 515 Tcl_SetVar2(interp, "sqlite_options", "trace", "0", TCL_GLOBAL_ONLY); 516 #else 517 Tcl_SetVar2(interp, "sqlite_options", "trace", "1", TCL_GLOBAL_ONLY); 518 #endif 519 520 #ifdef SQLITE_OMIT_TRIGGER 521 Tcl_SetVar2(interp, "sqlite_options", "trigger", "0", TCL_GLOBAL_ONLY); 522 #else 523 Tcl_SetVar2(interp, "sqlite_options", "trigger", "1", TCL_GLOBAL_ONLY); 524 #endif 525 526 #ifdef SQLITE_OMIT_TRUNCATE_OPTIMIZATION 527 Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "0", TCL_GLOBAL_ONLY); 528 #else 529 Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY); 530 #endif 531 532 #ifdef SQLITE_OMIT_UTF16 533 Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY); 534 #else 535 Tcl_SetVar2(interp, "sqlite_options", "utf16", "1", TCL_GLOBAL_ONLY); 536 #endif 537 538 #if defined(SQLITE_OMIT_VACUUM) || defined(SQLITE_OMIT_ATTACH) 539 Tcl_SetVar2(interp, "sqlite_options", "vacuum", "0", TCL_GLOBAL_ONLY); 540 #else 541 Tcl_SetVar2(interp, "sqlite_options", "vacuum", "1", TCL_GLOBAL_ONLY); 542 #endif 543 544 #ifdef SQLITE_OMIT_VIEW 545 Tcl_SetVar2(interp, "sqlite_options", "view", "0", TCL_GLOBAL_ONLY); 546 #else 547 Tcl_SetVar2(interp, "sqlite_options", "view", "1", TCL_GLOBAL_ONLY); 548 #endif 549 550 #ifdef SQLITE_OMIT_VIRTUALTABLE 551 Tcl_SetVar2(interp, "sqlite_options", "vtab", "0", TCL_GLOBAL_ONLY); 552 #else 553 Tcl_SetVar2(interp, "sqlite_options", "vtab", "1", TCL_GLOBAL_ONLY); 554 #endif 555 556 #ifdef SQLITE_OMIT_WAL 557 Tcl_SetVar2(interp, "sqlite_options", "wal", "0", TCL_GLOBAL_ONLY); 558 #else 559 Tcl_SetVar2(interp, "sqlite_options", "wal", "1", TCL_GLOBAL_ONLY); 560 #endif 561 562 #ifdef SQLITE_OMIT_WSD 563 Tcl_SetVar2(interp, "sqlite_options", "wsd", "0", TCL_GLOBAL_ONLY); 564 #else 565 Tcl_SetVar2(interp, "sqlite_options", "wsd", "1", TCL_GLOBAL_ONLY); 566 #endif 567 568 #if defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT) && !defined(SQLITE_OMIT_SUBQUERY) 569 Tcl_SetVar2(interp, "sqlite_options", "update_delete_limit", "1", TCL_GLOBAL_ONLY); 570 #else 571 Tcl_SetVar2(interp, "sqlite_options", "update_delete_limit", "0", TCL_GLOBAL_ONLY); 572 #endif 573 574 #if defined(SQLITE_ENABLE_UNLOCK_NOTIFY) 575 Tcl_SetVar2(interp, "sqlite_options", "unlock_notify", "1", TCL_GLOBAL_ONLY); 576 #else 577 Tcl_SetVar2(interp, "sqlite_options", "unlock_notify", "0", TCL_GLOBAL_ONLY); 578 #endif 579 580 #ifdef SQLITE_SECURE_DELETE 581 Tcl_SetVar2(interp, "sqlite_options", "secure_delete", "1", TCL_GLOBAL_ONLY); 582 #else 583 Tcl_SetVar2(interp, "sqlite_options", "secure_delete", "0", TCL_GLOBAL_ONLY); 584 #endif 585 586 #ifdef SQLITE_MULTIPLEX_EXT_OVWR 587 Tcl_SetVar2(interp, "sqlite_options", "multiplex_ext_overwrite", "1", TCL_GLOBAL_ONLY); 588 #else 589 Tcl_SetVar2(interp, "sqlite_options", "multiplex_ext_overwrite", "0", TCL_GLOBAL_ONLY); 590 #endif 591 592 #ifdef YYTRACKMAXSTACKDEPTH 593 Tcl_SetVar2(interp, "sqlite_options", "yytrackmaxstackdepth", "1", TCL_GLOBAL_ONLY); 594 #else 595 Tcl_SetVar2(interp, "sqlite_options", "yytrackmaxstackdepth", "0", TCL_GLOBAL_ONLY); 596 #endif 597 598 #define LINKVAR(x) { \ 599 static const int cv_ ## x = SQLITE_ ## x; \ 600 Tcl_LinkVar(interp, "SQLITE_" #x, (char *)&(cv_ ## x), \ 601 TCL_LINK_INT | TCL_LINK_READ_ONLY); } 602 603 LINKVAR( MAX_LENGTH ); 604 LINKVAR( MAX_COLUMN ); 605 LINKVAR( MAX_SQL_LENGTH ); 606 LINKVAR( MAX_EXPR_DEPTH ); 607 LINKVAR( MAX_COMPOUND_SELECT ); 608 LINKVAR( MAX_VDBE_OP ); 609 LINKVAR( MAX_FUNCTION_ARG ); 610 LINKVAR( MAX_VARIABLE_NUMBER ); 611 LINKVAR( MAX_PAGE_SIZE ); 612 LINKVAR( MAX_PAGE_COUNT ); 613 LINKVAR( MAX_LIKE_PATTERN_LENGTH ); 614 LINKVAR( MAX_TRIGGER_DEPTH ); 615 LINKVAR( DEFAULT_TEMP_CACHE_SIZE ); 616 LINKVAR( DEFAULT_CACHE_SIZE ); 617 LINKVAR( DEFAULT_PAGE_SIZE ); 618 LINKVAR( DEFAULT_FILE_FORMAT ); 619 LINKVAR( MAX_ATTACHED ); 620 LINKVAR( MAX_DEFAULT_PAGE_SIZE ); 621 622 { 623 static const int cv_TEMP_STORE = SQLITE_TEMP_STORE; 624 Tcl_LinkVar(interp, "TEMP_STORE", (char *)&(cv_TEMP_STORE), 625 TCL_LINK_INT | TCL_LINK_READ_ONLY); 626 } 627 628 #ifdef _MSC_VER 629 { 630 static const int cv__MSC_VER = 1; 631 Tcl_LinkVar(interp, "_MSC_VER", (char *)&(cv__MSC_VER), 632 TCL_LINK_INT | TCL_LINK_READ_ONLY); 633 } 634 #endif 635 #ifdef __GNUC__ 636 { 637 static const int cv___GNUC__ = 1; 638 Tcl_LinkVar(interp, "__GNUC__", (char *)&(cv___GNUC__), 639 TCL_LINK_INT | TCL_LINK_READ_ONLY); 640 } 641 #endif 642 } 643 644 645 /* 646 ** Register commands with the TCL interpreter. 647 */ 648 int Sqliteconfig_Init(Tcl_Interp *interp){ 649 set_options(interp); 650 return TCL_OK; 651 } 652