| | @@ -20,10 +20,748 @@ |
| 20 | 20 | #define SQLITE_CORE 1 |
| 21 | 21 | #define SQLITE_AMALGAMATION 1 |
| 22 | 22 | #ifndef SQLITE_PRIVATE |
| 23 | 23 | # define SQLITE_PRIVATE static |
| 24 | 24 | #endif |
| 25 | +/************** Begin file ctime.c *******************************************/ |
| 26 | +/* |
| 27 | +** 2010 February 23 |
| 28 | +** |
| 29 | +** The author disclaims copyright to this source code. In place of |
| 30 | +** a legal notice, here is a blessing: |
| 31 | +** |
| 32 | +** May you do good and not evil. |
| 33 | +** May you find forgiveness for yourself and forgive others. |
| 34 | +** May you share freely, never taking more than you give. |
| 35 | +** |
| 36 | +************************************************************************* |
| 37 | +** |
| 38 | +** This file implements routines used to report what compile-time options |
| 39 | +** SQLite was built with. |
| 40 | +*/ |
| 41 | + |
| 42 | +#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS |
| 43 | + |
| 44 | + |
| 45 | +/* These macros are provided to "stringify" the value of the define |
| 46 | +** for those options in which the value is meaningful. */ |
| 47 | +#define CTIMEOPT_VAL_(opt) #opt |
| 48 | +#define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt) |
| 49 | + |
| 50 | +/* |
| 51 | +** An array of names of all compile-time options. This array should |
| 52 | +** be sorted A-Z. |
| 53 | +** |
| 54 | +** This array looks large, but in a typical installation actually uses |
| 55 | +** only a handful of compile-time options, so most times this array is usually |
| 56 | +** rather short and uses little memory space. |
| 57 | +*/ |
| 58 | +static const char * const sqlite3azCompileOpt[] = { |
| 59 | + |
| 60 | +/* |
| 61 | +** BEGIN CODE GENERATED BY tool/mkctime.tcl |
| 62 | +*/ |
| 63 | +#if SQLITE_32BIT_ROWID |
| 64 | + "32BIT_ROWID", |
| 65 | +#endif |
| 66 | +#if SQLITE_4_BYTE_ALIGNED_MALLOC |
| 67 | + "4_BYTE_ALIGNED_MALLOC", |
| 68 | +#endif |
| 69 | +#if SQLITE_64BIT_STATS |
| 70 | + "64BIT_STATS", |
| 71 | +#endif |
| 72 | +#if SQLITE_ALLOW_COVERING_INDEX_SCAN |
| 73 | + "ALLOW_COVERING_INDEX_SCAN", |
| 74 | +#endif |
| 75 | +#if SQLITE_ALLOW_URI_AUTHORITY |
| 76 | + "ALLOW_URI_AUTHORITY", |
| 77 | +#endif |
| 78 | +#ifdef SQLITE_BITMASK_TYPE |
| 79 | + "BITMASK_TYPE=" CTIMEOPT_VAL(SQLITE_BITMASK_TYPE), |
| 80 | +#endif |
| 81 | +#if SQLITE_BUG_COMPATIBLE_20160819 |
| 82 | + "BUG_COMPATIBLE_20160819", |
| 83 | +#endif |
| 84 | +#if SQLITE_CASE_SENSITIVE_LIKE |
| 85 | + "CASE_SENSITIVE_LIKE", |
| 86 | +#endif |
| 87 | +#if SQLITE_CHECK_PAGES |
| 88 | + "CHECK_PAGES", |
| 89 | +#endif |
| 90 | +#if defined(__clang__) && defined(__clang_major__) |
| 91 | + "COMPILER=clang-" CTIMEOPT_VAL(__clang_major__) "." |
| 92 | + CTIMEOPT_VAL(__clang_minor__) "." |
| 93 | + CTIMEOPT_VAL(__clang_patchlevel__), |
| 94 | +#elif defined(_MSC_VER) |
| 95 | + "COMPILER=msvc-" CTIMEOPT_VAL(_MSC_VER), |
| 96 | +#elif defined(__GNUC__) && defined(__VERSION__) |
| 97 | + "COMPILER=gcc-" __VERSION__, |
| 98 | +#endif |
| 99 | +#if SQLITE_COVERAGE_TEST |
| 100 | + "COVERAGE_TEST", |
| 101 | +#endif |
| 102 | +#if SQLITE_DEBUG |
| 103 | + "DEBUG", |
| 104 | +#endif |
| 105 | +#if SQLITE_DEFAULT_AUTOMATIC_INDEX |
| 106 | + "DEFAULT_AUTOMATIC_INDEX", |
| 107 | +#endif |
| 108 | +#if SQLITE_DEFAULT_AUTOVACUUM |
| 109 | + "DEFAULT_AUTOVACUUM", |
| 110 | +#endif |
| 111 | +#ifdef SQLITE_DEFAULT_CACHE_SIZE |
| 112 | + "DEFAULT_CACHE_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_CACHE_SIZE), |
| 113 | +#endif |
| 114 | +#if SQLITE_DEFAULT_CKPTFULLFSYNC |
| 115 | + "DEFAULT_CKPTFULLFSYNC", |
| 116 | +#endif |
| 117 | +#ifdef SQLITE_DEFAULT_FILE_FORMAT |
| 118 | + "DEFAULT_FILE_FORMAT=" CTIMEOPT_VAL(SQLITE_DEFAULT_FILE_FORMAT), |
| 119 | +#endif |
| 120 | +#ifdef SQLITE_DEFAULT_FILE_PERMISSIONS |
| 121 | + "DEFAULT_FILE_PERMISSIONS=" CTIMEOPT_VAL(SQLITE_DEFAULT_FILE_PERMISSIONS), |
| 122 | +#endif |
| 123 | +#if SQLITE_DEFAULT_FOREIGN_KEYS |
| 124 | + "DEFAULT_FOREIGN_KEYS", |
| 125 | +#endif |
| 126 | +#ifdef SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT |
| 127 | + "DEFAULT_JOURNAL_SIZE_LIMIT=" CTIMEOPT_VAL(SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT), |
| 128 | +#endif |
| 129 | +#ifdef SQLITE_DEFAULT_LOCKING_MODE |
| 130 | + "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE), |
| 131 | +#endif |
| 132 | +#ifdef SQLITE_DEFAULT_LOOKASIDE |
| 133 | + "DEFAULT_LOOKASIDE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOOKASIDE), |
| 134 | +#endif |
| 135 | +#if SQLITE_DEFAULT_MEMSTATUS |
| 136 | + "DEFAULT_MEMSTATUS", |
| 137 | +#endif |
| 138 | +#ifdef SQLITE_DEFAULT_MMAP_SIZE |
| 139 | + "DEFAULT_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_MMAP_SIZE), |
| 140 | +#endif |
| 141 | +#ifdef SQLITE_DEFAULT_PAGE_SIZE |
| 142 | + "DEFAULT_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_PAGE_SIZE), |
| 143 | +#endif |
| 144 | +#ifdef SQLITE_DEFAULT_PCACHE_INITSZ |
| 145 | + "DEFAULT_PCACHE_INITSZ=" CTIMEOPT_VAL(SQLITE_DEFAULT_PCACHE_INITSZ), |
| 146 | +#endif |
| 147 | +#ifdef SQLITE_DEFAULT_PROXYDIR_PERMISSIONS |
| 148 | + "DEFAULT_PROXYDIR_PERMISSIONS=" CTIMEOPT_VAL(SQLITE_DEFAULT_PROXYDIR_PERMISSIONS), |
| 149 | +#endif |
| 150 | +#if SQLITE_DEFAULT_RECURSIVE_TRIGGERS |
| 151 | + "DEFAULT_RECURSIVE_TRIGGERS", |
| 152 | +#endif |
| 153 | +#ifdef SQLITE_DEFAULT_ROWEST |
| 154 | + "DEFAULT_ROWEST=" CTIMEOPT_VAL(SQLITE_DEFAULT_ROWEST), |
| 155 | +#endif |
| 156 | +#ifdef SQLITE_DEFAULT_SECTOR_SIZE |
| 157 | + "DEFAULT_SECTOR_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_SECTOR_SIZE), |
| 158 | +#endif |
| 159 | +#ifdef SQLITE_DEFAULT_SYNCHRONOUS |
| 160 | + "DEFAULT_SYNCHRONOUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_SYNCHRONOUS), |
| 161 | +#endif |
| 162 | +#ifdef SQLITE_DEFAULT_WAL_AUTOCHECKPOINT |
| 163 | + "DEFAULT_WAL_AUTOCHECKPOINT=" CTIMEOPT_VAL(SQLITE_DEFAULT_WAL_AUTOCHECKPOINT), |
| 164 | +#endif |
| 165 | +#ifdef SQLITE_DEFAULT_WAL_SYNCHRONOUS |
| 166 | + "DEFAULT_WAL_SYNCHRONOUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_WAL_SYNCHRONOUS), |
| 167 | +#endif |
| 168 | +#ifdef SQLITE_DEFAULT_WORKER_THREADS |
| 169 | + "DEFAULT_WORKER_THREADS=" CTIMEOPT_VAL(SQLITE_DEFAULT_WORKER_THREADS), |
| 170 | +#endif |
| 171 | +#if SQLITE_DIRECT_OVERFLOW_READ |
| 172 | + "DIRECT_OVERFLOW_READ", |
| 173 | +#endif |
| 174 | +#if SQLITE_DISABLE_DIRSYNC |
| 175 | + "DISABLE_DIRSYNC", |
| 176 | +#endif |
| 177 | +#if SQLITE_DISABLE_FTS3_UNICODE |
| 178 | + "DISABLE_FTS3_UNICODE", |
| 179 | +#endif |
| 180 | +#if SQLITE_DISABLE_FTS4_DEFERRED |
| 181 | + "DISABLE_FTS4_DEFERRED", |
| 182 | +#endif |
| 183 | +#if SQLITE_DISABLE_INTRINSIC |
| 184 | + "DISABLE_INTRINSIC", |
| 185 | +#endif |
| 186 | +#if SQLITE_DISABLE_LFS |
| 187 | + "DISABLE_LFS", |
| 188 | +#endif |
| 189 | +#if SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS |
| 190 | + "DISABLE_PAGECACHE_OVERFLOW_STATS", |
| 191 | +#endif |
| 192 | +#if SQLITE_DISABLE_SKIPAHEAD_DISTINCT |
| 193 | + "DISABLE_SKIPAHEAD_DISTINCT", |
| 194 | +#endif |
| 195 | +#ifdef SQLITE_ENABLE_8_3_NAMES |
| 196 | + "ENABLE_8_3_NAMES=" CTIMEOPT_VAL(SQLITE_ENABLE_8_3_NAMES), |
| 197 | +#endif |
| 198 | +#if SQLITE_ENABLE_API_ARMOR |
| 199 | + "ENABLE_API_ARMOR", |
| 200 | +#endif |
| 201 | +#if SQLITE_ENABLE_ATOMIC_WRITE |
| 202 | + "ENABLE_ATOMIC_WRITE", |
| 203 | +#endif |
| 204 | +#if SQLITE_ENABLE_CEROD |
| 205 | + "ENABLE_CEROD", |
| 206 | +#endif |
| 207 | +#if SQLITE_ENABLE_COLUMN_METADATA |
| 208 | + "ENABLE_COLUMN_METADATA", |
| 209 | +#endif |
| 210 | +#if SQLITE_ENABLE_COLUMN_USED_MASK |
| 211 | + "ENABLE_COLUMN_USED_MASK", |
| 212 | +#endif |
| 213 | +#if SQLITE_ENABLE_COSTMULT |
| 214 | + "ENABLE_COSTMULT", |
| 215 | +#endif |
| 216 | +#if SQLITE_ENABLE_CURSOR_HINTS |
| 217 | + "ENABLE_CURSOR_HINTS", |
| 218 | +#endif |
| 219 | +#if SQLITE_ENABLE_DBSTAT_VTAB |
| 220 | + "ENABLE_DBSTAT_VTAB", |
| 221 | +#endif |
| 222 | +#if SQLITE_ENABLE_EXPENSIVE_ASSERT |
| 223 | + "ENABLE_EXPENSIVE_ASSERT", |
| 224 | +#endif |
| 225 | +#if SQLITE_ENABLE_FTS1 |
| 226 | + "ENABLE_FTS1", |
| 227 | +#endif |
| 228 | +#if SQLITE_ENABLE_FTS2 |
| 229 | + "ENABLE_FTS2", |
| 230 | +#endif |
| 231 | +#if SQLITE_ENABLE_FTS3 |
| 232 | + "ENABLE_FTS3", |
| 233 | +#endif |
| 234 | +#if SQLITE_ENABLE_FTS3_PARENTHESIS |
| 235 | + "ENABLE_FTS3_PARENTHESIS", |
| 236 | +#endif |
| 237 | +#if SQLITE_ENABLE_FTS3_TOKENIZER |
| 238 | + "ENABLE_FTS3_TOKENIZER", |
| 239 | +#endif |
| 240 | +#if SQLITE_ENABLE_FTS4 |
| 241 | + "ENABLE_FTS4", |
| 242 | +#endif |
| 243 | +#if SQLITE_ENABLE_FTS5 |
| 244 | + "ENABLE_FTS5", |
| 245 | +#endif |
| 246 | +#if SQLITE_ENABLE_HIDDEN_COLUMNS |
| 247 | + "ENABLE_HIDDEN_COLUMNS", |
| 248 | +#endif |
| 249 | +#if SQLITE_ENABLE_ICU |
| 250 | + "ENABLE_ICU", |
| 251 | +#endif |
| 252 | +#if SQLITE_ENABLE_IOTRACE |
| 253 | + "ENABLE_IOTRACE", |
| 254 | +#endif |
| 255 | +#if SQLITE_ENABLE_JSON1 |
| 256 | + "ENABLE_JSON1", |
| 257 | +#endif |
| 258 | +#if SQLITE_ENABLE_LOAD_EXTENSION |
| 259 | + "ENABLE_LOAD_EXTENSION", |
| 260 | +#endif |
| 261 | +#ifdef SQLITE_ENABLE_LOCKING_STYLE |
| 262 | + "ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE), |
| 263 | +#endif |
| 264 | +#if SQLITE_ENABLE_MEMORY_MANAGEMENT |
| 265 | + "ENABLE_MEMORY_MANAGEMENT", |
| 266 | +#endif |
| 267 | +#if SQLITE_ENABLE_MEMSYS3 |
| 268 | + "ENABLE_MEMSYS3", |
| 269 | +#endif |
| 270 | +#if SQLITE_ENABLE_MEMSYS5 |
| 271 | + "ENABLE_MEMSYS5", |
| 272 | +#endif |
| 273 | +#if SQLITE_ENABLE_MULTIPLEX |
| 274 | + "ENABLE_MULTIPLEX", |
| 275 | +#endif |
| 276 | +#if SQLITE_ENABLE_NULL_TRIM |
| 277 | + "ENABLE_NULL_TRIM", |
| 278 | +#endif |
| 279 | +#if SQLITE_ENABLE_OVERSIZE_CELL_CHECK |
| 280 | + "ENABLE_OVERSIZE_CELL_CHECK", |
| 281 | +#endif |
| 282 | +#if SQLITE_ENABLE_PREUPDATE_HOOK |
| 283 | + "ENABLE_PREUPDATE_HOOK", |
| 284 | +#endif |
| 285 | +#if SQLITE_ENABLE_RBU |
| 286 | + "ENABLE_RBU", |
| 287 | +#endif |
| 288 | +#if SQLITE_ENABLE_RTREE |
| 289 | + "ENABLE_RTREE", |
| 290 | +#endif |
| 291 | +#if SQLITE_ENABLE_SELECTTRACE |
| 292 | + "ENABLE_SELECTTRACE", |
| 293 | +#endif |
| 294 | +#if SQLITE_ENABLE_SESSION |
| 295 | + "ENABLE_SESSION", |
| 296 | +#endif |
| 297 | +#if SQLITE_ENABLE_SNAPSHOT |
| 298 | + "ENABLE_SNAPSHOT", |
| 299 | +#endif |
| 300 | +#if SQLITE_ENABLE_SQLLOG |
| 301 | + "ENABLE_SQLLOG", |
| 302 | +#endif |
| 303 | +#if defined(SQLITE_ENABLE_STAT4) |
| 304 | + "ENABLE_STAT4", |
| 305 | +#elif defined(SQLITE_ENABLE_STAT3) |
| 306 | + "ENABLE_STAT3", |
| 307 | +#endif |
| 308 | +#if SQLITE_ENABLE_STMT_SCANSTATUS |
| 309 | + "ENABLE_STMT_SCANSTATUS", |
| 310 | +#endif |
| 311 | +#if SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION |
| 312 | + "ENABLE_UNKNOWN_SQL_FUNCTION", |
| 313 | +#endif |
| 314 | +#if SQLITE_ENABLE_UNLOCK_NOTIFY |
| 315 | + "ENABLE_UNLOCK_NOTIFY", |
| 316 | +#endif |
| 317 | +#if SQLITE_ENABLE_UPDATE_DELETE_LIMIT |
| 318 | + "ENABLE_UPDATE_DELETE_LIMIT", |
| 319 | +#endif |
| 320 | +#if SQLITE_ENABLE_URI_00_ERROR |
| 321 | + "ENABLE_URI_00_ERROR", |
| 322 | +#endif |
| 323 | +#if SQLITE_ENABLE_VFSTRACE |
| 324 | + "ENABLE_VFSTRACE", |
| 325 | +#endif |
| 326 | +#if SQLITE_ENABLE_WHERETRACE |
| 327 | + "ENABLE_WHERETRACE", |
| 328 | +#endif |
| 329 | +#if SQLITE_ENABLE_ZIPVFS |
| 330 | + "ENABLE_ZIPVFS", |
| 331 | +#endif |
| 332 | +#if SQLITE_EXPLAIN_ESTIMATED_ROWS |
| 333 | + "EXPLAIN_ESTIMATED_ROWS", |
| 334 | +#endif |
| 335 | +#if SQLITE_EXTRA_IFNULLROW |
| 336 | + "EXTRA_IFNULLROW", |
| 337 | +#endif |
| 338 | +#ifdef SQLITE_EXTRA_INIT |
| 339 | + "EXTRA_INIT=" CTIMEOPT_VAL(SQLITE_EXTRA_INIT), |
| 340 | +#endif |
| 341 | +#ifdef SQLITE_EXTRA_SHUTDOWN |
| 342 | + "EXTRA_SHUTDOWN=" CTIMEOPT_VAL(SQLITE_EXTRA_SHUTDOWN), |
| 343 | +#endif |
| 344 | +#ifdef SQLITE_FTS3_MAX_EXPR_DEPTH |
| 345 | + "FTS3_MAX_EXPR_DEPTH=" CTIMEOPT_VAL(SQLITE_FTS3_MAX_EXPR_DEPTH), |
| 346 | +#endif |
| 347 | +#if SQLITE_FTS5_ENABLE_TEST_MI |
| 348 | + "FTS5_ENABLE_TEST_MI", |
| 349 | +#endif |
| 350 | +#if SQLITE_FTS5_NO_WITHOUT_ROWID |
| 351 | + "FTS5_NO_WITHOUT_ROWID", |
| 352 | +#endif |
| 353 | +#if SQLITE_HAS_CODEC |
| 354 | + "HAS_CODEC", |
| 355 | +#endif |
| 356 | +#if HAVE_ISNAN || SQLITE_HAVE_ISNAN |
| 357 | + "HAVE_ISNAN", |
| 358 | +#endif |
| 359 | +#if SQLITE_HOMEGROWN_RECURSIVE_MUTEX |
| 360 | + "HOMEGROWN_RECURSIVE_MUTEX", |
| 361 | +#endif |
| 362 | +#if SQLITE_IGNORE_AFP_LOCK_ERRORS |
| 363 | + "IGNORE_AFP_LOCK_ERRORS", |
| 364 | +#endif |
| 365 | +#if SQLITE_IGNORE_FLOCK_LOCK_ERRORS |
| 366 | + "IGNORE_FLOCK_LOCK_ERRORS", |
| 367 | +#endif |
| 368 | +#if SQLITE_INLINE_MEMCPY |
| 369 | + "INLINE_MEMCPY", |
| 370 | +#endif |
| 371 | +#if SQLITE_INT64_TYPE |
| 372 | + "INT64_TYPE", |
| 373 | +#endif |
| 374 | +#ifdef SQLITE_INTEGRITY_CHECK_ERROR_MAX |
| 375 | + "INTEGRITY_CHECK_ERROR_MAX=" CTIMEOPT_VAL(SQLITE_INTEGRITY_CHECK_ERROR_MAX), |
| 376 | +#endif |
| 377 | +#if SQLITE_LIKE_DOESNT_MATCH_BLOBS |
| 378 | + "LIKE_DOESNT_MATCH_BLOBS", |
| 379 | +#endif |
| 380 | +#if SQLITE_LOCK_TRACE |
| 381 | + "LOCK_TRACE", |
| 382 | +#endif |
| 383 | +#if SQLITE_LOG_CACHE_SPILL |
| 384 | + "LOG_CACHE_SPILL", |
| 385 | +#endif |
| 386 | +#ifdef SQLITE_MALLOC_SOFT_LIMIT |
| 387 | + "MALLOC_SOFT_LIMIT=" CTIMEOPT_VAL(SQLITE_MALLOC_SOFT_LIMIT), |
| 388 | +#endif |
| 389 | +#ifdef SQLITE_MAX_ATTACHED |
| 390 | + "MAX_ATTACHED=" CTIMEOPT_VAL(SQLITE_MAX_ATTACHED), |
| 391 | +#endif |
| 392 | +#ifdef SQLITE_MAX_COLUMN |
| 393 | + "MAX_COLUMN=" CTIMEOPT_VAL(SQLITE_MAX_COLUMN), |
| 394 | +#endif |
| 395 | +#ifdef SQLITE_MAX_COMPOUND_SELECT |
| 396 | + "MAX_COMPOUND_SELECT=" CTIMEOPT_VAL(SQLITE_MAX_COMPOUND_SELECT), |
| 397 | +#endif |
| 398 | +#ifdef SQLITE_MAX_DEFAULT_PAGE_SIZE |
| 399 | + "MAX_DEFAULT_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_DEFAULT_PAGE_SIZE), |
| 400 | +#endif |
| 401 | +#ifdef SQLITE_MAX_EXPR_DEPTH |
| 402 | + "MAX_EXPR_DEPTH=" CTIMEOPT_VAL(SQLITE_MAX_EXPR_DEPTH), |
| 403 | +#endif |
| 404 | +#ifdef SQLITE_MAX_FUNCTION_ARG |
| 405 | + "MAX_FUNCTION_ARG=" CTIMEOPT_VAL(SQLITE_MAX_FUNCTION_ARG), |
| 406 | +#endif |
| 407 | +#ifdef SQLITE_MAX_LENGTH |
| 408 | + "MAX_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_LENGTH), |
| 409 | +#endif |
| 410 | +#ifdef SQLITE_MAX_LIKE_PATTERN_LENGTH |
| 411 | + "MAX_LIKE_PATTERN_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_LIKE_PATTERN_LENGTH), |
| 412 | +#endif |
| 413 | +#ifdef SQLITE_MAX_MEMORY |
| 414 | + "MAX_MEMORY=" CTIMEOPT_VAL(SQLITE_MAX_MEMORY), |
| 415 | +#endif |
| 416 | +#ifdef SQLITE_MAX_MMAP_SIZE |
| 417 | + "MAX_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE), |
| 418 | +#endif |
| 419 | +#ifdef SQLITE_MAX_MMAP_SIZE_ |
| 420 | + "MAX_MMAP_SIZE_=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE_), |
| 421 | +#endif |
| 422 | +#ifdef SQLITE_MAX_PAGE_COUNT |
| 423 | + "MAX_PAGE_COUNT=" CTIMEOPT_VAL(SQLITE_MAX_PAGE_COUNT), |
| 424 | +#endif |
| 425 | +#ifdef SQLITE_MAX_PAGE_SIZE |
| 426 | + "MAX_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_PAGE_SIZE), |
| 427 | +#endif |
| 428 | +#ifdef SQLITE_MAX_SCHEMA_RETRY |
| 429 | + "MAX_SCHEMA_RETRY=" CTIMEOPT_VAL(SQLITE_MAX_SCHEMA_RETRY), |
| 430 | +#endif |
| 431 | +#ifdef SQLITE_MAX_SQL_LENGTH |
| 432 | + "MAX_SQL_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_SQL_LENGTH), |
| 433 | +#endif |
| 434 | +#ifdef SQLITE_MAX_TRIGGER_DEPTH |
| 435 | + "MAX_TRIGGER_DEPTH=" CTIMEOPT_VAL(SQLITE_MAX_TRIGGER_DEPTH), |
| 436 | +#endif |
| 437 | +#ifdef SQLITE_MAX_VARIABLE_NUMBER |
| 438 | + "MAX_VARIABLE_NUMBER=" CTIMEOPT_VAL(SQLITE_MAX_VARIABLE_NUMBER), |
| 439 | +#endif |
| 440 | +#ifdef SQLITE_MAX_VDBE_OP |
| 441 | + "MAX_VDBE_OP=" CTIMEOPT_VAL(SQLITE_MAX_VDBE_OP), |
| 442 | +#endif |
| 443 | +#ifdef SQLITE_MAX_WORKER_THREADS |
| 444 | + "MAX_WORKER_THREADS=" CTIMEOPT_VAL(SQLITE_MAX_WORKER_THREADS), |
| 445 | +#endif |
| 446 | +#if SQLITE_MEMDEBUG |
| 447 | + "MEMDEBUG", |
| 448 | +#endif |
| 449 | +#if SQLITE_MIXED_ENDIAN_64BIT_FLOAT |
| 450 | + "MIXED_ENDIAN_64BIT_FLOAT", |
| 451 | +#endif |
| 452 | +#if SQLITE_MMAP_READWRITE |
| 453 | + "MMAP_READWRITE", |
| 454 | +#endif |
| 455 | +#if SQLITE_MUTEX_NOOP |
| 456 | + "MUTEX_NOOP", |
| 457 | +#endif |
| 458 | +#if SQLITE_MUTEX_NREF |
| 459 | + "MUTEX_NREF", |
| 460 | +#endif |
| 461 | +#if SQLITE_MUTEX_OMIT |
| 462 | + "MUTEX_OMIT", |
| 463 | +#endif |
| 464 | +#if SQLITE_MUTEX_PTHREADS |
| 465 | + "MUTEX_PTHREADS", |
| 466 | +#endif |
| 467 | +#if SQLITE_MUTEX_W32 |
| 468 | + "MUTEX_W32", |
| 469 | +#endif |
| 470 | +#if SQLITE_NEED_ERR_NAME |
| 471 | + "NEED_ERR_NAME", |
| 472 | +#endif |
| 473 | +#if SQLITE_NOINLINE |
| 474 | + "NOINLINE", |
| 475 | +#endif |
| 476 | +#if SQLITE_NO_SYNC |
| 477 | + "NO_SYNC", |
| 478 | +#endif |
| 479 | +#if SQLITE_OMIT_ALTERTABLE |
| 480 | + "OMIT_ALTERTABLE", |
| 481 | +#endif |
| 482 | +#if SQLITE_OMIT_ANALYZE |
| 483 | + "OMIT_ANALYZE", |
| 484 | +#endif |
| 485 | +#if SQLITE_OMIT_ATTACH |
| 486 | + "OMIT_ATTACH", |
| 487 | +#endif |
| 488 | +#if SQLITE_OMIT_AUTHORIZATION |
| 489 | + "OMIT_AUTHORIZATION", |
| 490 | +#endif |
| 491 | +#if SQLITE_OMIT_AUTOINCREMENT |
| 492 | + "OMIT_AUTOINCREMENT", |
| 493 | +#endif |
| 494 | +#if SQLITE_OMIT_AUTOINIT |
| 495 | + "OMIT_AUTOINIT", |
| 496 | +#endif |
| 497 | +#if SQLITE_OMIT_AUTOMATIC_INDEX |
| 498 | + "OMIT_AUTOMATIC_INDEX", |
| 499 | +#endif |
| 500 | +#if SQLITE_OMIT_AUTORESET |
| 501 | + "OMIT_AUTORESET", |
| 502 | +#endif |
| 503 | +#if SQLITE_OMIT_AUTOVACUUM |
| 504 | + "OMIT_AUTOVACUUM", |
| 505 | +#endif |
| 506 | +#if SQLITE_OMIT_BETWEEN_OPTIMIZATION |
| 507 | + "OMIT_BETWEEN_OPTIMIZATION", |
| 508 | +#endif |
| 509 | +#if SQLITE_OMIT_BLOB_LITERAL |
| 510 | + "OMIT_BLOB_LITERAL", |
| 511 | +#endif |
| 512 | +#if SQLITE_OMIT_BTREECOUNT |
| 513 | + "OMIT_BTREECOUNT", |
| 514 | +#endif |
| 515 | +#if SQLITE_OMIT_CAST |
| 516 | + "OMIT_CAST", |
| 517 | +#endif |
| 518 | +#if SQLITE_OMIT_CHECK |
| 519 | + "OMIT_CHECK", |
| 520 | +#endif |
| 521 | +#if SQLITE_OMIT_COMPLETE |
| 522 | + "OMIT_COMPLETE", |
| 523 | +#endif |
| 524 | +#if SQLITE_OMIT_COMPOUND_SELECT |
| 525 | + "OMIT_COMPOUND_SELECT", |
| 526 | +#endif |
| 527 | +#if SQLITE_OMIT_CONFLICT_CLAUSE |
| 528 | + "OMIT_CONFLICT_CLAUSE", |
| 529 | +#endif |
| 530 | +#if SQLITE_OMIT_CTE |
| 531 | + "OMIT_CTE", |
| 532 | +#endif |
| 533 | +#if SQLITE_OMIT_DATETIME_FUNCS |
| 534 | + "OMIT_DATETIME_FUNCS", |
| 535 | +#endif |
| 536 | +#if SQLITE_OMIT_DECLTYPE |
| 537 | + "OMIT_DECLTYPE", |
| 538 | +#endif |
| 539 | +#if SQLITE_OMIT_DEPRECATED |
| 540 | + "OMIT_DEPRECATED", |
| 541 | +#endif |
| 542 | +#if SQLITE_OMIT_DISKIO |
| 543 | + "OMIT_DISKIO", |
| 544 | +#endif |
| 545 | +#if SQLITE_OMIT_EXPLAIN |
| 546 | + "OMIT_EXPLAIN", |
| 547 | +#endif |
| 548 | +#if SQLITE_OMIT_FLAG_PRAGMAS |
| 549 | + "OMIT_FLAG_PRAGMAS", |
| 550 | +#endif |
| 551 | +#if SQLITE_OMIT_FLOATING_POINT |
| 552 | + "OMIT_FLOATING_POINT", |
| 553 | +#endif |
| 554 | +#if SQLITE_OMIT_FOREIGN_KEY |
| 555 | + "OMIT_FOREIGN_KEY", |
| 556 | +#endif |
| 557 | +#if SQLITE_OMIT_GET_TABLE |
| 558 | + "OMIT_GET_TABLE", |
| 559 | +#endif |
| 560 | +#if SQLITE_OMIT_HEX_INTEGER |
| 561 | + "OMIT_HEX_INTEGER", |
| 562 | +#endif |
| 563 | +#if SQLITE_OMIT_INCRBLOB |
| 564 | + "OMIT_INCRBLOB", |
| 565 | +#endif |
| 566 | +#if SQLITE_OMIT_INTEGRITY_CHECK |
| 567 | + "OMIT_INTEGRITY_CHECK", |
| 568 | +#endif |
| 569 | +#if SQLITE_OMIT_LIKE_OPTIMIZATION |
| 570 | + "OMIT_LIKE_OPTIMIZATION", |
| 571 | +#endif |
| 572 | +#if SQLITE_OMIT_LOAD_EXTENSION |
| 573 | + "OMIT_LOAD_EXTENSION", |
| 574 | +#endif |
| 575 | +#if SQLITE_OMIT_LOCALTIME |
| 576 | + "OMIT_LOCALTIME", |
| 577 | +#endif |
| 578 | +#if SQLITE_OMIT_LOOKASIDE |
| 579 | + "OMIT_LOOKASIDE", |
| 580 | +#endif |
| 581 | +#if SQLITE_OMIT_MEMORYDB |
| 582 | + "OMIT_MEMORYDB", |
| 583 | +#endif |
| 584 | +#if SQLITE_OMIT_OR_OPTIMIZATION |
| 585 | + "OMIT_OR_OPTIMIZATION", |
| 586 | +#endif |
| 587 | +#if SQLITE_OMIT_PAGER_PRAGMAS |
| 588 | + "OMIT_PAGER_PRAGMAS", |
| 589 | +#endif |
| 590 | +#if SQLITE_OMIT_PARSER_TRACE |
| 591 | + "OMIT_PARSER_TRACE", |
| 592 | +#endif |
| 593 | +#if SQLITE_OMIT_POPEN |
| 594 | + "OMIT_POPEN", |
| 595 | +#endif |
| 596 | +#if SQLITE_OMIT_PRAGMA |
| 597 | + "OMIT_PRAGMA", |
| 598 | +#endif |
| 599 | +#if SQLITE_OMIT_PROGRESS_CALLBACK |
| 600 | + "OMIT_PROGRESS_CALLBACK", |
| 601 | +#endif |
| 602 | +#if SQLITE_OMIT_QUICKBALANCE |
| 603 | + "OMIT_QUICKBALANCE", |
| 604 | +#endif |
| 605 | +#if SQLITE_OMIT_REINDEX |
| 606 | + "OMIT_REINDEX", |
| 607 | +#endif |
| 608 | +#if SQLITE_OMIT_SCHEMA_PRAGMAS |
| 609 | + "OMIT_SCHEMA_PRAGMAS", |
| 610 | +#endif |
| 611 | +#if SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS |
| 612 | + "OMIT_SCHEMA_VERSION_PRAGMAS", |
| 613 | +#endif |
| 614 | +#if SQLITE_OMIT_SHARED_CACHE |
| 615 | + "OMIT_SHARED_CACHE", |
| 616 | +#endif |
| 617 | +#if SQLITE_OMIT_SHUTDOWN_DIRECTORIES |
| 618 | + "OMIT_SHUTDOWN_DIRECTORIES", |
| 619 | +#endif |
| 620 | +#if SQLITE_OMIT_SUBQUERY |
| 621 | + "OMIT_SUBQUERY", |
| 622 | +#endif |
| 623 | +#if SQLITE_OMIT_TCL_VARIABLE |
| 624 | + "OMIT_TCL_VARIABLE", |
| 625 | +#endif |
| 626 | +#if SQLITE_OMIT_TEMPDB |
| 627 | + "OMIT_TEMPDB", |
| 628 | +#endif |
| 629 | +#if SQLITE_OMIT_TEST_CONTROL |
| 630 | + "OMIT_TEST_CONTROL", |
| 631 | +#endif |
| 632 | +#if SQLITE_OMIT_TRACE |
| 633 | + "OMIT_TRACE", |
| 634 | +#endif |
| 635 | +#if SQLITE_OMIT_TRIGGER |
| 636 | + "OMIT_TRIGGER", |
| 637 | +#endif |
| 638 | +#if SQLITE_OMIT_TRUNCATE_OPTIMIZATION |
| 639 | + "OMIT_TRUNCATE_OPTIMIZATION", |
| 640 | +#endif |
| 641 | +#if SQLITE_OMIT_UTF16 |
| 642 | + "OMIT_UTF16", |
| 643 | +#endif |
| 644 | +#if SQLITE_OMIT_VACUUM |
| 645 | + "OMIT_VACUUM", |
| 646 | +#endif |
| 647 | +#if SQLITE_OMIT_VIEW |
| 648 | + "OMIT_VIEW", |
| 649 | +#endif |
| 650 | +#if SQLITE_OMIT_VIRTUALTABLE |
| 651 | + "OMIT_VIRTUALTABLE", |
| 652 | +#endif |
| 653 | +#if SQLITE_OMIT_WAL |
| 654 | + "OMIT_WAL", |
| 655 | +#endif |
| 656 | +#if SQLITE_OMIT_WSD |
| 657 | + "OMIT_WSD", |
| 658 | +#endif |
| 659 | +#if SQLITE_OMIT_XFER_OPT |
| 660 | + "OMIT_XFER_OPT", |
| 661 | +#endif |
| 662 | +#if SQLITE_PCACHE_SEPARATE_HEADER |
| 663 | + "PCACHE_SEPARATE_HEADER", |
| 664 | +#endif |
| 665 | +#if SQLITE_PERFORMANCE_TRACE |
| 666 | + "PERFORMANCE_TRACE", |
| 667 | +#endif |
| 668 | +#if SQLITE_POWERSAFE_OVERWRITE |
| 669 | + "POWERSAFE_OVERWRITE", |
| 670 | +#endif |
| 671 | +#if SQLITE_PREFER_PROXY_LOCKING |
| 672 | + "PREFER_PROXY_LOCKING", |
| 673 | +#endif |
| 674 | +#if SQLITE_PROXY_DEBUG |
| 675 | + "PROXY_DEBUG", |
| 676 | +#endif |
| 677 | +#if SQLITE_REVERSE_UNORDERED_SELECTS |
| 678 | + "REVERSE_UNORDERED_SELECTS", |
| 679 | +#endif |
| 680 | +#if SQLITE_RTREE_INT_ONLY |
| 681 | + "RTREE_INT_ONLY", |
| 682 | +#endif |
| 683 | +#if SQLITE_SECURE_DELETE |
| 684 | + "SECURE_DELETE", |
| 685 | +#endif |
| 686 | +#if SQLITE_SMALL_STACK |
| 687 | + "SMALL_STACK", |
| 688 | +#endif |
| 689 | +#ifdef SQLITE_SORTER_PMASZ |
| 690 | + "SORTER_PMASZ=" CTIMEOPT_VAL(SQLITE_SORTER_PMASZ), |
| 691 | +#endif |
| 692 | +#if SQLITE_SOUNDEX |
| 693 | + "SOUNDEX", |
| 694 | +#endif |
| 695 | +#ifdef SQLITE_STAT4_SAMPLES |
| 696 | + "STAT4_SAMPLES=" CTIMEOPT_VAL(SQLITE_STAT4_SAMPLES), |
| 697 | +#endif |
| 698 | +#ifdef SQLITE_STMTJRNL_SPILL |
| 699 | + "STMTJRNL_SPILL=" CTIMEOPT_VAL(SQLITE_STMTJRNL_SPILL), |
| 700 | +#endif |
| 701 | +#if SQLITE_SUBSTR_COMPATIBILITY |
| 702 | + "SUBSTR_COMPATIBILITY", |
| 703 | +#endif |
| 704 | +#if SQLITE_SYSTEM_MALLOC |
| 705 | + "SYSTEM_MALLOC", |
| 706 | +#endif |
| 707 | +#if SQLITE_TCL |
| 708 | + "TCL", |
| 709 | +#endif |
| 710 | +#ifdef SQLITE_TEMP_STORE |
| 711 | + "TEMP_STORE=" CTIMEOPT_VAL(SQLITE_TEMP_STORE), |
| 712 | +#endif |
| 713 | +#if SQLITE_TEST |
| 714 | + "TEST", |
| 715 | +#endif |
| 716 | +#if defined(SQLITE_THREADSAFE) |
| 717 | + "THREADSAFE=" CTIMEOPT_VAL(SQLITE_THREADSAFE), |
| 718 | +#elif defined(THREADSAFE) |
| 719 | + "THREADSAFE=" CTIMEOPT_VAL(THREADSAFE), |
| 720 | +#else |
| 721 | + "THREADSAFE=1", |
| 722 | +#endif |
| 723 | +#if SQLITE_UNLINK_AFTER_CLOSE |
| 724 | + "UNLINK_AFTER_CLOSE", |
| 725 | +#endif |
| 726 | +#if SQLITE_UNTESTABLE |
| 727 | + "UNTESTABLE", |
| 728 | +#endif |
| 729 | +#if SQLITE_USER_AUTHENTICATION |
| 730 | + "USER_AUTHENTICATION", |
| 731 | +#endif |
| 732 | +#if SQLITE_USE_ALLOCA |
| 733 | + "USE_ALLOCA", |
| 734 | +#endif |
| 735 | +#if SQLITE_USE_FCNTL_TRACE |
| 736 | + "USE_FCNTL_TRACE", |
| 737 | +#endif |
| 738 | +#if SQLITE_USE_URI |
| 739 | + "USE_URI", |
| 740 | +#endif |
| 741 | +#if SQLITE_VDBE_COVERAGE |
| 742 | + "VDBE_COVERAGE", |
| 743 | +#endif |
| 744 | +#if SQLITE_WIN32_MALLOC |
| 745 | + "WIN32_MALLOC", |
| 746 | +#endif |
| 747 | +#if SQLITE_ZERO_MALLOC |
| 748 | + "ZERO_MALLOC", |
| 749 | +#endif |
| 750 | +/* |
| 751 | +** END CODE GENERATED BY tool/mkctime.tcl |
| 752 | +*/ |
| 753 | +}; |
| 754 | + |
| 755 | +SQLITE_PRIVATE const char **sqlite3CompileOptions(int *pnOpt){ |
| 756 | + *pnOpt = sizeof(sqlite3azCompileOpt) / sizeof(sqlite3azCompileOpt[0]); |
| 757 | + return (const char**)sqlite3azCompileOpt; |
| 758 | +} |
| 759 | + |
| 760 | +#endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */ |
| 761 | + |
| 762 | +/************** End of ctime.c ***********************************************/ |
| 25 | 763 | /************** Begin file sqliteInt.h ***************************************/ |
| 26 | 764 | /* |
| 27 | 765 | ** 2001 September 15 |
| 28 | 766 | ** |
| 29 | 767 | ** The author disclaims copyright to this source code. In place of |
| | @@ -398,11 +1136,11 @@ |
| 398 | 1136 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 399 | 1137 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 400 | 1138 | */ |
| 401 | 1139 | #define SQLITE_VERSION "3.20.0" |
| 402 | 1140 | #define SQLITE_VERSION_NUMBER 3020000 |
| 403 | | -#define SQLITE_SOURCE_ID "2017-06-15 13:07:56 9afd7a2ffd3a39456190ad05e85ff6485298aae262d9e0698a58c1d73507a36f" |
| 1141 | +#define SQLITE_SOURCE_ID "2017-06-24 13:31:40 0583b84ab444db3ae3c93db619b67bf84b0305ab989200e77214e02ff2dc923a" |
| 404 | 1142 | |
| 405 | 1143 | /* |
| 406 | 1144 | ** CAPI3REF: Run-Time Library Version Numbers |
| 407 | 1145 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 408 | 1146 | ** |
| | @@ -11101,10 +11839,15 @@ |
| 11101 | 11839 | ** threads can use SQLite as long as no two threads try to use the same |
| 11102 | 11840 | ** database connection at the same time. |
| 11103 | 11841 | ** |
| 11104 | 11842 | ** Older versions of SQLite used an optional THREADSAFE macro. |
| 11105 | 11843 | ** We support that for legacy. |
| 11844 | +** |
| 11845 | +** To ensure that the correct value of "THREADSAFE" is reported when querying |
| 11846 | +** for compile-time options at runtime (e.g. "PRAGMA compile_options"), this |
| 11847 | +** logic is partially replicated in ctime.c. If it is updated here, it should |
| 11848 | +** also be updated there. |
| 11106 | 11849 | */ |
| 11107 | 11850 | #if !defined(SQLITE_THREADSAFE) |
| 11108 | 11851 | # if defined(THREADSAFE) |
| 11109 | 11852 | # define SQLITE_THREADSAFE THREADSAFE |
| 11110 | 11853 | # else |
| | @@ -11691,11 +12434,10 @@ |
| 11691 | 12434 | ** Provide a default value for SQLITE_TEMP_STORE in case it is not specified |
| 11692 | 12435 | ** on the command-line |
| 11693 | 12436 | */ |
| 11694 | 12437 | #ifndef SQLITE_TEMP_STORE |
| 11695 | 12438 | # define SQLITE_TEMP_STORE 1 |
| 11696 | | -# define SQLITE_TEMP_STORE_xc 1 /* Exclude from ctime.c */ |
| 11697 | 12439 | #endif |
| 11698 | 12440 | |
| 11699 | 12441 | /* |
| 11700 | 12442 | ** If no value has been provided for SQLITE_MAX_WORKER_THREADS, or if |
| 11701 | 12443 | ** SQLITE_TEMP_STORE is set to 3 (never use temporary files), set it |
| | @@ -11992,21 +12734,19 @@ |
| 11992 | 12734 | || defined(__DragonFly__) |
| 11993 | 12735 | # define SQLITE_MAX_MMAP_SIZE 0x7fff0000 /* 2147418112 */ |
| 11994 | 12736 | # else |
| 11995 | 12737 | # define SQLITE_MAX_MMAP_SIZE 0 |
| 11996 | 12738 | # endif |
| 11997 | | -# define SQLITE_MAX_MMAP_SIZE_xc 1 /* exclude from ctime.c */ |
| 11998 | 12739 | #endif |
| 11999 | 12740 | |
| 12000 | 12741 | /* |
| 12001 | 12742 | ** The default MMAP_SIZE is zero on all platforms. Or, even if a larger |
| 12002 | 12743 | ** default MMAP_SIZE is specified at compile-time, make sure that it does |
| 12003 | 12744 | ** not exceed the maximum mmap size. |
| 12004 | 12745 | */ |
| 12005 | 12746 | #ifndef SQLITE_DEFAULT_MMAP_SIZE |
| 12006 | 12747 | # define SQLITE_DEFAULT_MMAP_SIZE 0 |
| 12007 | | -# define SQLITE_DEFAULT_MMAP_SIZE_xc 1 /* Exclude from ctime.c */ |
| 12008 | 12748 | #endif |
| 12009 | 12749 | #if SQLITE_DEFAULT_MMAP_SIZE>SQLITE_MAX_MMAP_SIZE |
| 12010 | 12750 | # undef SQLITE_DEFAULT_MMAP_SIZE |
| 12011 | 12751 | # define SQLITE_DEFAULT_MMAP_SIZE SQLITE_MAX_MMAP_SIZE |
| 12012 | 12752 | #endif |
| | @@ -17157,10 +17897,12 @@ |
| 17157 | 17897 | SQLITE_PRIVATE int sqlite3ExprIsVector(Expr *pExpr); |
| 17158 | 17898 | SQLITE_PRIVATE Expr *sqlite3VectorFieldSubexpr(Expr*, int); |
| 17159 | 17899 | SQLITE_PRIVATE Expr *sqlite3ExprForVectorField(Parse*,Expr*,int); |
| 17160 | 17900 | SQLITE_PRIVATE void sqlite3VectorErrorMsg(Parse*, Expr*); |
| 17161 | 17901 | |
| 17902 | +SQLITE_PRIVATE const char **sqlite3CompileOptions(int *pnOpt); |
| 17903 | + |
| 17162 | 17904 | #endif /* SQLITEINT_H */ |
| 17163 | 17905 | |
| 17164 | 17906 | /************** End of sqliteInt.h *******************************************/ |
| 17165 | 17907 | /************** Begin file global.c ******************************************/ |
| 17166 | 17908 | /* |
| | @@ -17461,476 +18203,10 @@ |
| 17461 | 18203 | ** Name of the default collating sequence |
| 17462 | 18204 | */ |
| 17463 | 18205 | SQLITE_PRIVATE const char sqlite3StrBINARY[] = "BINARY"; |
| 17464 | 18206 | |
| 17465 | 18207 | /************** End of global.c **********************************************/ |
| 17466 | | -/************** Begin file ctime.c *******************************************/ |
| 17467 | | -/* |
| 17468 | | -** 2010 February 23 |
| 17469 | | -** |
| 17470 | | -** The author disclaims copyright to this source code. In place of |
| 17471 | | -** a legal notice, here is a blessing: |
| 17472 | | -** |
| 17473 | | -** May you do good and not evil. |
| 17474 | | -** May you find forgiveness for yourself and forgive others. |
| 17475 | | -** May you share freely, never taking more than you give. |
| 17476 | | -** |
| 17477 | | -************************************************************************* |
| 17478 | | -** |
| 17479 | | -** This file implements routines used to report what compile-time options |
| 17480 | | -** SQLite was built with. |
| 17481 | | -*/ |
| 17482 | | - |
| 17483 | | -#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS |
| 17484 | | - |
| 17485 | | -/* #include "sqliteInt.h" */ |
| 17486 | | - |
| 17487 | | -/* |
| 17488 | | -** An array of names of all compile-time options. This array should |
| 17489 | | -** be sorted A-Z. |
| 17490 | | -** |
| 17491 | | -** This array looks large, but in a typical installation actually uses |
| 17492 | | -** only a handful of compile-time options, so most times this array is usually |
| 17493 | | -** rather short and uses little memory space. |
| 17494 | | -*/ |
| 17495 | | -static const char * const azCompileOpt[] = { |
| 17496 | | - |
| 17497 | | -/* These macros are provided to "stringify" the value of the define |
| 17498 | | -** for those options in which the value is meaningful. */ |
| 17499 | | -#define CTIMEOPT_VAL_(opt) #opt |
| 17500 | | -#define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt) |
| 17501 | | - |
| 17502 | | -#if SQLITE_32BIT_ROWID |
| 17503 | | - "32BIT_ROWID", |
| 17504 | | -#endif |
| 17505 | | -#if SQLITE_4_BYTE_ALIGNED_MALLOC |
| 17506 | | - "4_BYTE_ALIGNED_MALLOC", |
| 17507 | | -#endif |
| 17508 | | -#if SQLITE_CASE_SENSITIVE_LIKE |
| 17509 | | - "CASE_SENSITIVE_LIKE", |
| 17510 | | -#endif |
| 17511 | | -#if SQLITE_CHECK_PAGES |
| 17512 | | - "CHECK_PAGES", |
| 17513 | | -#endif |
| 17514 | | -#if defined(__clang__) && defined(__clang_major__) |
| 17515 | | - "COMPILER=clang-" CTIMEOPT_VAL(__clang_major__) "." |
| 17516 | | - CTIMEOPT_VAL(__clang_minor__) "." |
| 17517 | | - CTIMEOPT_VAL(__clang_patchlevel__), |
| 17518 | | -#elif defined(_MSC_VER) |
| 17519 | | - "COMPILER=msvc-" CTIMEOPT_VAL(_MSC_VER), |
| 17520 | | -#elif defined(__GNUC__) && defined(__VERSION__) |
| 17521 | | - "COMPILER=gcc-" __VERSION__, |
| 17522 | | -#endif |
| 17523 | | -#if SQLITE_COVERAGE_TEST |
| 17524 | | - "COVERAGE_TEST", |
| 17525 | | -#endif |
| 17526 | | -#ifdef SQLITE_DEBUG |
| 17527 | | - "DEBUG", |
| 17528 | | -#endif |
| 17529 | | -#if SQLITE_DEFAULT_LOCKING_MODE |
| 17530 | | - "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE), |
| 17531 | | -#endif |
| 17532 | | -#if defined(SQLITE_DEFAULT_MMAP_SIZE) && !defined(SQLITE_DEFAULT_MMAP_SIZE_xc) |
| 17533 | | - "DEFAULT_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_MMAP_SIZE), |
| 17534 | | -#endif |
| 17535 | | -#if SQLITE_DEFAULT_SYNCHRONOUS |
| 17536 | | - "DEFAULT_SYNCHRONOUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_SYNCHRONOUS), |
| 17537 | | -#endif |
| 17538 | | -#if SQLITE_DEFAULT_WAL_SYNCHRONOUS |
| 17539 | | - "DEFAULT_WAL_SYNCHRONOUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_WAL_SYNCHRONOUS), |
| 17540 | | -#endif |
| 17541 | | -#if SQLITE_DIRECT_OVERFLOW_READ |
| 17542 | | - "DIRECT_OVERFLOW_READ", |
| 17543 | | -#endif |
| 17544 | | -#if SQLITE_DISABLE_DIRSYNC |
| 17545 | | - "DISABLE_DIRSYNC", |
| 17546 | | -#endif |
| 17547 | | -#if SQLITE_DISABLE_LFS |
| 17548 | | - "DISABLE_LFS", |
| 17549 | | -#endif |
| 17550 | | -#if SQLITE_ENABLE_8_3_NAMES |
| 17551 | | - "ENABLE_8_3_NAMES=" CTIMEOPT_VAL(SQLITE_ENABLE_8_3_NAMES), |
| 17552 | | -#endif |
| 17553 | | -#if SQLITE_ENABLE_API_ARMOR |
| 17554 | | - "ENABLE_API_ARMOR", |
| 17555 | | -#endif |
| 17556 | | -#if SQLITE_ENABLE_ATOMIC_WRITE |
| 17557 | | - "ENABLE_ATOMIC_WRITE", |
| 17558 | | -#endif |
| 17559 | | -#if SQLITE_ENABLE_CEROD |
| 17560 | | - "ENABLE_CEROD", |
| 17561 | | -#endif |
| 17562 | | -#if SQLITE_ENABLE_COLUMN_METADATA |
| 17563 | | - "ENABLE_COLUMN_METADATA", |
| 17564 | | -#endif |
| 17565 | | -#if SQLITE_ENABLE_DBSTAT_VTAB |
| 17566 | | - "ENABLE_DBSTAT_VTAB", |
| 17567 | | -#endif |
| 17568 | | -#if SQLITE_ENABLE_EXPENSIVE_ASSERT |
| 17569 | | - "ENABLE_EXPENSIVE_ASSERT", |
| 17570 | | -#endif |
| 17571 | | -#if SQLITE_ENABLE_FTS1 |
| 17572 | | - "ENABLE_FTS1", |
| 17573 | | -#endif |
| 17574 | | -#if SQLITE_ENABLE_FTS2 |
| 17575 | | - "ENABLE_FTS2", |
| 17576 | | -#endif |
| 17577 | | -#if SQLITE_ENABLE_FTS3 |
| 17578 | | - "ENABLE_FTS3", |
| 17579 | | -#endif |
| 17580 | | -#if SQLITE_ENABLE_FTS3_PARENTHESIS |
| 17581 | | - "ENABLE_FTS3_PARENTHESIS", |
| 17582 | | -#endif |
| 17583 | | -#if SQLITE_ENABLE_FTS4 |
| 17584 | | - "ENABLE_FTS4", |
| 17585 | | -#endif |
| 17586 | | -#if SQLITE_ENABLE_FTS5 |
| 17587 | | - "ENABLE_FTS5", |
| 17588 | | -#endif |
| 17589 | | -#if SQLITE_ENABLE_ICU |
| 17590 | | - "ENABLE_ICU", |
| 17591 | | -#endif |
| 17592 | | -#if SQLITE_ENABLE_IOTRACE |
| 17593 | | - "ENABLE_IOTRACE", |
| 17594 | | -#endif |
| 17595 | | -#if SQLITE_ENABLE_JSON1 |
| 17596 | | - "ENABLE_JSON1", |
| 17597 | | -#endif |
| 17598 | | -#if SQLITE_ENABLE_LOAD_EXTENSION |
| 17599 | | - "ENABLE_LOAD_EXTENSION", |
| 17600 | | -#endif |
| 17601 | | -#if SQLITE_ENABLE_LOCKING_STYLE |
| 17602 | | - "ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE), |
| 17603 | | -#endif |
| 17604 | | -#if SQLITE_ENABLE_MEMORY_MANAGEMENT |
| 17605 | | - "ENABLE_MEMORY_MANAGEMENT", |
| 17606 | | -#endif |
| 17607 | | -#if SQLITE_ENABLE_MEMSYS3 |
| 17608 | | - "ENABLE_MEMSYS3", |
| 17609 | | -#endif |
| 17610 | | -#if SQLITE_ENABLE_MEMSYS5 |
| 17611 | | - "ENABLE_MEMSYS5", |
| 17612 | | -#endif |
| 17613 | | -#if SQLITE_ENABLE_OVERSIZE_CELL_CHECK |
| 17614 | | - "ENABLE_OVERSIZE_CELL_CHECK", |
| 17615 | | -#endif |
| 17616 | | -#if SQLITE_ENABLE_RTREE |
| 17617 | | - "ENABLE_RTREE", |
| 17618 | | -#endif |
| 17619 | | -#if defined(SQLITE_ENABLE_STAT4) |
| 17620 | | - "ENABLE_STAT4", |
| 17621 | | -#elif defined(SQLITE_ENABLE_STAT3) |
| 17622 | | - "ENABLE_STAT3", |
| 17623 | | -#endif |
| 17624 | | -#if SQLITE_ENABLE_UNLOCK_NOTIFY |
| 17625 | | - "ENABLE_UNLOCK_NOTIFY", |
| 17626 | | -#endif |
| 17627 | | -#if SQLITE_ENABLE_UPDATE_DELETE_LIMIT |
| 17628 | | - "ENABLE_UPDATE_DELETE_LIMIT", |
| 17629 | | -#endif |
| 17630 | | -#if defined(SQLITE_ENABLE_URI_00_ERROR) |
| 17631 | | - "ENABLE_URI_00_ERROR", |
| 17632 | | -#endif |
| 17633 | | -#if SQLITE_HAS_CODEC |
| 17634 | | - "HAS_CODEC", |
| 17635 | | -#endif |
| 17636 | | -#if HAVE_ISNAN || SQLITE_HAVE_ISNAN |
| 17637 | | - "HAVE_ISNAN", |
| 17638 | | -#endif |
| 17639 | | -#if SQLITE_HOMEGROWN_RECURSIVE_MUTEX |
| 17640 | | - "HOMEGROWN_RECURSIVE_MUTEX", |
| 17641 | | -#endif |
| 17642 | | -#if SQLITE_IGNORE_AFP_LOCK_ERRORS |
| 17643 | | - "IGNORE_AFP_LOCK_ERRORS", |
| 17644 | | -#endif |
| 17645 | | -#if SQLITE_IGNORE_FLOCK_LOCK_ERRORS |
| 17646 | | - "IGNORE_FLOCK_LOCK_ERRORS", |
| 17647 | | -#endif |
| 17648 | | -#ifdef SQLITE_INT64_TYPE |
| 17649 | | - "INT64_TYPE", |
| 17650 | | -#endif |
| 17651 | | -#ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS |
| 17652 | | - "LIKE_DOESNT_MATCH_BLOBS", |
| 17653 | | -#endif |
| 17654 | | -#if SQLITE_LOCK_TRACE |
| 17655 | | - "LOCK_TRACE", |
| 17656 | | -#endif |
| 17657 | | -#if defined(SQLITE_MAX_MMAP_SIZE) && !defined(SQLITE_MAX_MMAP_SIZE_xc) |
| 17658 | | - "MAX_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE), |
| 17659 | | -#endif |
| 17660 | | -#ifdef SQLITE_MAX_SCHEMA_RETRY |
| 17661 | | - "MAX_SCHEMA_RETRY=" CTIMEOPT_VAL(SQLITE_MAX_SCHEMA_RETRY), |
| 17662 | | -#endif |
| 17663 | | -#if SQLITE_MEMDEBUG |
| 17664 | | - "MEMDEBUG", |
| 17665 | | -#endif |
| 17666 | | -#if SQLITE_MIXED_ENDIAN_64BIT_FLOAT |
| 17667 | | - "MIXED_ENDIAN_64BIT_FLOAT", |
| 17668 | | -#endif |
| 17669 | | -#if SQLITE_NO_SYNC |
| 17670 | | - "NO_SYNC", |
| 17671 | | -#endif |
| 17672 | | -#if SQLITE_OMIT_ALTERTABLE |
| 17673 | | - "OMIT_ALTERTABLE", |
| 17674 | | -#endif |
| 17675 | | -#if SQLITE_OMIT_ANALYZE |
| 17676 | | - "OMIT_ANALYZE", |
| 17677 | | -#endif |
| 17678 | | -#if SQLITE_OMIT_ATTACH |
| 17679 | | - "OMIT_ATTACH", |
| 17680 | | -#endif |
| 17681 | | -#if SQLITE_OMIT_AUTHORIZATION |
| 17682 | | - "OMIT_AUTHORIZATION", |
| 17683 | | -#endif |
| 17684 | | -#if SQLITE_OMIT_AUTOINCREMENT |
| 17685 | | - "OMIT_AUTOINCREMENT", |
| 17686 | | -#endif |
| 17687 | | -#if SQLITE_OMIT_AUTOINIT |
| 17688 | | - "OMIT_AUTOINIT", |
| 17689 | | -#endif |
| 17690 | | -#if SQLITE_OMIT_AUTOMATIC_INDEX |
| 17691 | | - "OMIT_AUTOMATIC_INDEX", |
| 17692 | | -#endif |
| 17693 | | -#if SQLITE_OMIT_AUTORESET |
| 17694 | | - "OMIT_AUTORESET", |
| 17695 | | -#endif |
| 17696 | | -#if SQLITE_OMIT_AUTOVACUUM |
| 17697 | | - "OMIT_AUTOVACUUM", |
| 17698 | | -#endif |
| 17699 | | -#if SQLITE_OMIT_BETWEEN_OPTIMIZATION |
| 17700 | | - "OMIT_BETWEEN_OPTIMIZATION", |
| 17701 | | -#endif |
| 17702 | | -#if SQLITE_OMIT_BLOB_LITERAL |
| 17703 | | - "OMIT_BLOB_LITERAL", |
| 17704 | | -#endif |
| 17705 | | -#if SQLITE_OMIT_BTREECOUNT |
| 17706 | | - "OMIT_BTREECOUNT", |
| 17707 | | -#endif |
| 17708 | | -#if SQLITE_OMIT_CAST |
| 17709 | | - "OMIT_CAST", |
| 17710 | | -#endif |
| 17711 | | -#if SQLITE_OMIT_CHECK |
| 17712 | | - "OMIT_CHECK", |
| 17713 | | -#endif |
| 17714 | | -#if SQLITE_OMIT_COMPLETE |
| 17715 | | - "OMIT_COMPLETE", |
| 17716 | | -#endif |
| 17717 | | -#if SQLITE_OMIT_COMPOUND_SELECT |
| 17718 | | - "OMIT_COMPOUND_SELECT", |
| 17719 | | -#endif |
| 17720 | | -#if SQLITE_OMIT_CTE |
| 17721 | | - "OMIT_CTE", |
| 17722 | | -#endif |
| 17723 | | -#if SQLITE_OMIT_DATETIME_FUNCS |
| 17724 | | - "OMIT_DATETIME_FUNCS", |
| 17725 | | -#endif |
| 17726 | | -#if SQLITE_OMIT_DECLTYPE |
| 17727 | | - "OMIT_DECLTYPE", |
| 17728 | | -#endif |
| 17729 | | -#if SQLITE_OMIT_DEPRECATED |
| 17730 | | - "OMIT_DEPRECATED", |
| 17731 | | -#endif |
| 17732 | | -#if SQLITE_OMIT_DISKIO |
| 17733 | | - "OMIT_DISKIO", |
| 17734 | | -#endif |
| 17735 | | -#if SQLITE_OMIT_EXPLAIN |
| 17736 | | - "OMIT_EXPLAIN", |
| 17737 | | -#endif |
| 17738 | | -#if SQLITE_OMIT_FLAG_PRAGMAS |
| 17739 | | - "OMIT_FLAG_PRAGMAS", |
| 17740 | | -#endif |
| 17741 | | -#if SQLITE_OMIT_FLOATING_POINT |
| 17742 | | - "OMIT_FLOATING_POINT", |
| 17743 | | -#endif |
| 17744 | | -#if SQLITE_OMIT_FOREIGN_KEY |
| 17745 | | - "OMIT_FOREIGN_KEY", |
| 17746 | | -#endif |
| 17747 | | -#if SQLITE_OMIT_GET_TABLE |
| 17748 | | - "OMIT_GET_TABLE", |
| 17749 | | -#endif |
| 17750 | | -#if SQLITE_OMIT_INCRBLOB |
| 17751 | | - "OMIT_INCRBLOB", |
| 17752 | | -#endif |
| 17753 | | -#if SQLITE_OMIT_INTEGRITY_CHECK |
| 17754 | | - "OMIT_INTEGRITY_CHECK", |
| 17755 | | -#endif |
| 17756 | | -#if SQLITE_OMIT_LIKE_OPTIMIZATION |
| 17757 | | - "OMIT_LIKE_OPTIMIZATION", |
| 17758 | | -#endif |
| 17759 | | -#if SQLITE_OMIT_LOAD_EXTENSION |
| 17760 | | - "OMIT_LOAD_EXTENSION", |
| 17761 | | -#endif |
| 17762 | | -#if SQLITE_OMIT_LOCALTIME |
| 17763 | | - "OMIT_LOCALTIME", |
| 17764 | | -#endif |
| 17765 | | -#if SQLITE_OMIT_LOOKASIDE |
| 17766 | | - "OMIT_LOOKASIDE", |
| 17767 | | -#endif |
| 17768 | | -#if SQLITE_OMIT_MEMORYDB |
| 17769 | | - "OMIT_MEMORYDB", |
| 17770 | | -#endif |
| 17771 | | -#if SQLITE_OMIT_OR_OPTIMIZATION |
| 17772 | | - "OMIT_OR_OPTIMIZATION", |
| 17773 | | -#endif |
| 17774 | | -#if SQLITE_OMIT_PAGER_PRAGMAS |
| 17775 | | - "OMIT_PAGER_PRAGMAS", |
| 17776 | | -#endif |
| 17777 | | -#if SQLITE_OMIT_PRAGMA |
| 17778 | | - "OMIT_PRAGMA", |
| 17779 | | -#endif |
| 17780 | | -#if SQLITE_OMIT_PROGRESS_CALLBACK |
| 17781 | | - "OMIT_PROGRESS_CALLBACK", |
| 17782 | | -#endif |
| 17783 | | -#if SQLITE_OMIT_QUICKBALANCE |
| 17784 | | - "OMIT_QUICKBALANCE", |
| 17785 | | -#endif |
| 17786 | | -#if SQLITE_OMIT_REINDEX |
| 17787 | | - "OMIT_REINDEX", |
| 17788 | | -#endif |
| 17789 | | -#if SQLITE_OMIT_SCHEMA_PRAGMAS |
| 17790 | | - "OMIT_SCHEMA_PRAGMAS", |
| 17791 | | -#endif |
| 17792 | | -#if SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS |
| 17793 | | - "OMIT_SCHEMA_VERSION_PRAGMAS", |
| 17794 | | -#endif |
| 17795 | | -#if SQLITE_OMIT_SHARED_CACHE |
| 17796 | | - "OMIT_SHARED_CACHE", |
| 17797 | | -#endif |
| 17798 | | -#if SQLITE_OMIT_SUBQUERY |
| 17799 | | - "OMIT_SUBQUERY", |
| 17800 | | -#endif |
| 17801 | | -#if SQLITE_OMIT_TCL_VARIABLE |
| 17802 | | - "OMIT_TCL_VARIABLE", |
| 17803 | | -#endif |
| 17804 | | -#if SQLITE_OMIT_TEMPDB |
| 17805 | | - "OMIT_TEMPDB", |
| 17806 | | -#endif |
| 17807 | | -#if SQLITE_OMIT_TRACE |
| 17808 | | - "OMIT_TRACE", |
| 17809 | | -#endif |
| 17810 | | -#if SQLITE_OMIT_TRIGGER |
| 17811 | | - "OMIT_TRIGGER", |
| 17812 | | -#endif |
| 17813 | | -#if SQLITE_OMIT_TRUNCATE_OPTIMIZATION |
| 17814 | | - "OMIT_TRUNCATE_OPTIMIZATION", |
| 17815 | | -#endif |
| 17816 | | -#if SQLITE_OMIT_UTF16 |
| 17817 | | - "OMIT_UTF16", |
| 17818 | | -#endif |
| 17819 | | -#if SQLITE_OMIT_VACUUM |
| 17820 | | - "OMIT_VACUUM", |
| 17821 | | -#endif |
| 17822 | | -#if SQLITE_OMIT_VIEW |
| 17823 | | - "OMIT_VIEW", |
| 17824 | | -#endif |
| 17825 | | -#if SQLITE_OMIT_VIRTUALTABLE |
| 17826 | | - "OMIT_VIRTUALTABLE", |
| 17827 | | -#endif |
| 17828 | | -#if SQLITE_OMIT_WAL |
| 17829 | | - "OMIT_WAL", |
| 17830 | | -#endif |
| 17831 | | -#if SQLITE_OMIT_WSD |
| 17832 | | - "OMIT_WSD", |
| 17833 | | -#endif |
| 17834 | | -#if SQLITE_OMIT_XFER_OPT |
| 17835 | | - "OMIT_XFER_OPT", |
| 17836 | | -#endif |
| 17837 | | -#if SQLITE_PERFORMANCE_TRACE |
| 17838 | | - "PERFORMANCE_TRACE", |
| 17839 | | -#endif |
| 17840 | | -#if SQLITE_PROXY_DEBUG |
| 17841 | | - "PROXY_DEBUG", |
| 17842 | | -#endif |
| 17843 | | -#if SQLITE_RTREE_INT_ONLY |
| 17844 | | - "RTREE_INT_ONLY", |
| 17845 | | -#endif |
| 17846 | | -#if SQLITE_SECURE_DELETE |
| 17847 | | - "SECURE_DELETE", |
| 17848 | | -#endif |
| 17849 | | -#if SQLITE_SMALL_STACK |
| 17850 | | - "SMALL_STACK", |
| 17851 | | -#endif |
| 17852 | | -#if SQLITE_SOUNDEX |
| 17853 | | - "SOUNDEX", |
| 17854 | | -#endif |
| 17855 | | -#if SQLITE_SYSTEM_MALLOC |
| 17856 | | - "SYSTEM_MALLOC", |
| 17857 | | -#endif |
| 17858 | | -#if SQLITE_TCL |
| 17859 | | - "TCL", |
| 17860 | | -#endif |
| 17861 | | -#if defined(SQLITE_TEMP_STORE) && !defined(SQLITE_TEMP_STORE_xc) |
| 17862 | | - "TEMP_STORE=" CTIMEOPT_VAL(SQLITE_TEMP_STORE), |
| 17863 | | -#endif |
| 17864 | | -#if SQLITE_TEST |
| 17865 | | - "TEST", |
| 17866 | | -#endif |
| 17867 | | -#if defined(SQLITE_THREADSAFE) |
| 17868 | | - "THREADSAFE=" CTIMEOPT_VAL(SQLITE_THREADSAFE), |
| 17869 | | -#endif |
| 17870 | | -#if SQLITE_UNTESTABLE |
| 17871 | | - "UNTESTABLE" |
| 17872 | | -#endif |
| 17873 | | -#if SQLITE_USE_ALLOCA |
| 17874 | | - "USE_ALLOCA", |
| 17875 | | -#endif |
| 17876 | | -#if SQLITE_USER_AUTHENTICATION |
| 17877 | | - "USER_AUTHENTICATION", |
| 17878 | | -#endif |
| 17879 | | -#if SQLITE_WIN32_MALLOC |
| 17880 | | - "WIN32_MALLOC", |
| 17881 | | -#endif |
| 17882 | | -#if SQLITE_ZERO_MALLOC |
| 17883 | | - "ZERO_MALLOC" |
| 17884 | | -#endif |
| 17885 | | -}; |
| 17886 | | - |
| 17887 | | -/* |
| 17888 | | -** Given the name of a compile-time option, return true if that option |
| 17889 | | -** was used and false if not. |
| 17890 | | -** |
| 17891 | | -** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix |
| 17892 | | -** is not required for a match. |
| 17893 | | -*/ |
| 17894 | | -SQLITE_API int sqlite3_compileoption_used(const char *zOptName){ |
| 17895 | | - int i, n; |
| 17896 | | - |
| 17897 | | -#if SQLITE_ENABLE_API_ARMOR |
| 17898 | | - if( zOptName==0 ){ |
| 17899 | | - (void)SQLITE_MISUSE_BKPT; |
| 17900 | | - return 0; |
| 17901 | | - } |
| 17902 | | -#endif |
| 17903 | | - if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7; |
| 17904 | | - n = sqlite3Strlen30(zOptName); |
| 17905 | | - |
| 17906 | | - /* Since ArraySize(azCompileOpt) is normally in single digits, a |
| 17907 | | - ** linear search is adequate. No need for a binary search. */ |
| 17908 | | - for(i=0; i<ArraySize(azCompileOpt); i++){ |
| 17909 | | - if( sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0 |
| 17910 | | - && sqlite3IsIdChar((unsigned char)azCompileOpt[i][n])==0 |
| 17911 | | - ){ |
| 17912 | | - return 1; |
| 17913 | | - } |
| 17914 | | - } |
| 17915 | | - return 0; |
| 17916 | | -} |
| 17917 | | - |
| 17918 | | -/* |
| 17919 | | -** Return the N-th compile-time option string. If N is out of range, |
| 17920 | | -** return a NULL pointer. |
| 17921 | | -*/ |
| 17922 | | -SQLITE_API const char *sqlite3_compileoption_get(int N){ |
| 17923 | | - if( N>=0 && N<ArraySize(azCompileOpt) ){ |
| 17924 | | - return azCompileOpt[N]; |
| 17925 | | - } |
| 17926 | | - return 0; |
| 17927 | | -} |
| 17928 | | - |
| 17929 | | -#endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */ |
| 17930 | | - |
| 17931 | | -/************** End of ctime.c ***********************************************/ |
| 17932 | 18208 | /************** Begin file status.c ******************************************/ |
| 17933 | 18209 | /* |
| 17934 | 18210 | ** 2008 June 18 |
| 17935 | 18211 | ** |
| 17936 | 18212 | ** The author disclaims copyright to this source code. In place of |
| | @@ -98938,11 +99214,12 @@ |
| 98938 | 99214 | const char *zName; |
| 98939 | 99215 | const char *zFile; |
| 98940 | 99216 | char *zPath = 0; |
| 98941 | 99217 | char *zErr = 0; |
| 98942 | 99218 | unsigned int flags; |
| 98943 | | - Db *aNew; |
| 99219 | + Db *aNew; /* New array of Db pointers */ |
| 99220 | + Db *pNew; /* Db object for the newly attached database */ |
| 98944 | 99221 | char *zErrDyn = 0; |
| 98945 | 99222 | sqlite3_vfs *pVfs; |
| 98946 | 99223 | |
| 98947 | 99224 | UNUSED_PARAMETER(NotUsed); |
| 98948 | 99225 | |
| | @@ -98986,12 +99263,12 @@ |
| 98986 | 99263 | }else{ |
| 98987 | 99264 | aNew = sqlite3DbRealloc(db, db->aDb, sizeof(db->aDb[0])*(db->nDb+1) ); |
| 98988 | 99265 | if( aNew==0 ) return; |
| 98989 | 99266 | } |
| 98990 | 99267 | db->aDb = aNew; |
| 98991 | | - aNew = &db->aDb[db->nDb]; |
| 98992 | | - memset(aNew, 0, sizeof(*aNew)); |
| 99268 | + pNew = &db->aDb[db->nDb]; |
| 99269 | + memset(pNew, 0, sizeof(*pNew)); |
| 98993 | 99270 | |
| 98994 | 99271 | /* Open the database file. If the btree is successfully opened, use |
| 98995 | 99272 | ** it to obtain the database schema. At this point the schema may |
| 98996 | 99273 | ** or may not be initialized. |
| 98997 | 99274 | */ |
| | @@ -99003,41 +99280,41 @@ |
| 99003 | 99280 | sqlite3_free(zErr); |
| 99004 | 99281 | return; |
| 99005 | 99282 | } |
| 99006 | 99283 | assert( pVfs ); |
| 99007 | 99284 | flags |= SQLITE_OPEN_MAIN_DB; |
| 99008 | | - rc = sqlite3BtreeOpen(pVfs, zPath, db, &aNew->pBt, 0, flags); |
| 99285 | + rc = sqlite3BtreeOpen(pVfs, zPath, db, &pNew->pBt, 0, flags); |
| 99009 | 99286 | sqlite3_free( zPath ); |
| 99010 | 99287 | db->nDb++; |
| 99011 | 99288 | db->skipBtreeMutex = 0; |
| 99012 | 99289 | if( rc==SQLITE_CONSTRAINT ){ |
| 99013 | 99290 | rc = SQLITE_ERROR; |
| 99014 | 99291 | zErrDyn = sqlite3MPrintf(db, "database is already attached"); |
| 99015 | 99292 | }else if( rc==SQLITE_OK ){ |
| 99016 | 99293 | Pager *pPager; |
| 99017 | | - aNew->pSchema = sqlite3SchemaGet(db, aNew->pBt); |
| 99018 | | - if( !aNew->pSchema ){ |
| 99294 | + pNew->pSchema = sqlite3SchemaGet(db, pNew->pBt); |
| 99295 | + if( !pNew->pSchema ){ |
| 99019 | 99296 | rc = SQLITE_NOMEM_BKPT; |
| 99020 | | - }else if( aNew->pSchema->file_format && aNew->pSchema->enc!=ENC(db) ){ |
| 99297 | + }else if( pNew->pSchema->file_format && pNew->pSchema->enc!=ENC(db) ){ |
| 99021 | 99298 | zErrDyn = sqlite3MPrintf(db, |
| 99022 | 99299 | "attached databases must use the same text encoding as main database"); |
| 99023 | 99300 | rc = SQLITE_ERROR; |
| 99024 | 99301 | } |
| 99025 | | - sqlite3BtreeEnter(aNew->pBt); |
| 99026 | | - pPager = sqlite3BtreePager(aNew->pBt); |
| 99302 | + sqlite3BtreeEnter(pNew->pBt); |
| 99303 | + pPager = sqlite3BtreePager(pNew->pBt); |
| 99027 | 99304 | sqlite3PagerLockingMode(pPager, db->dfltLockMode); |
| 99028 | | - sqlite3BtreeSecureDelete(aNew->pBt, |
| 99305 | + sqlite3BtreeSecureDelete(pNew->pBt, |
| 99029 | 99306 | sqlite3BtreeSecureDelete(db->aDb[0].pBt,-1) ); |
| 99030 | 99307 | #ifndef SQLITE_OMIT_PAGER_PRAGMAS |
| 99031 | | - sqlite3BtreeSetPagerFlags(aNew->pBt, |
| 99308 | + sqlite3BtreeSetPagerFlags(pNew->pBt, |
| 99032 | 99309 | PAGER_SYNCHRONOUS_FULL | (db->flags & PAGER_FLAGS_MASK)); |
| 99033 | 99310 | #endif |
| 99034 | | - sqlite3BtreeLeave(aNew->pBt); |
| 99311 | + sqlite3BtreeLeave(pNew->pBt); |
| 99035 | 99312 | } |
| 99036 | | - aNew->safety_level = SQLITE_DEFAULT_SYNCHRONOUS+1; |
| 99037 | | - aNew->zDbSName = sqlite3DbStrDup(db, zName); |
| 99038 | | - if( rc==SQLITE_OK && aNew->zDbSName==0 ){ |
| 99313 | + pNew->safety_level = SQLITE_DEFAULT_SYNCHRONOUS+1; |
| 99314 | + pNew->zDbSName = sqlite3DbStrDup(db, zName); |
| 99315 | + if( rc==SQLITE_OK && pNew->zDbSName==0 ){ |
| 99039 | 99316 | rc = SQLITE_NOMEM_BKPT; |
| 99040 | 99317 | } |
| 99041 | 99318 | |
| 99042 | 99319 | |
| 99043 | 99320 | #ifdef SQLITE_HAS_CODEC |
| | @@ -108085,14 +108362,16 @@ |
| 108085 | 108362 | sqlite3ResolveExprNames(&sNameContext, pWhere); |
| 108086 | 108363 | |
| 108087 | 108364 | /* Create VDBE to loop through the entries in pSrc that match the WHERE |
| 108088 | 108365 | ** clause. For each row found, increment either the deferred or immediate |
| 108089 | 108366 | ** foreign key constraint counter. */ |
| 108090 | | - pWInfo = sqlite3WhereBegin(pParse, pSrc, pWhere, 0, 0, 0, 0); |
| 108091 | | - sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr); |
| 108092 | | - if( pWInfo ){ |
| 108093 | | - sqlite3WhereEnd(pWInfo); |
| 108367 | + if( pParse->nErr==0 ){ |
| 108368 | + pWInfo = sqlite3WhereBegin(pParse, pSrc, pWhere, 0, 0, 0, 0); |
| 108369 | + sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr); |
| 108370 | + if( pWInfo ){ |
| 108371 | + sqlite3WhereEnd(pWInfo); |
| 108372 | + } |
| 108094 | 108373 | } |
| 108095 | 108374 | |
| 108096 | 108375 | /* Clean up the WHERE clause constructed above. */ |
| 108097 | 108376 | sqlite3ExprDelete(db, pWhere); |
| 108098 | 108377 | if( iFkIfZero ){ |
| | @@ -112945,11 +113224,11 @@ |
| 112945 | 113224 | /* iArg: */ 0 }, |
| 112946 | 113225 | #endif |
| 112947 | 113226 | #if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER) |
| 112948 | 113227 | {/* zName: */ "foreign_key_check", |
| 112949 | 113228 | /* ePragTyp: */ PragTyp_FOREIGN_KEY_CHECK, |
| 112950 | | - /* ePragFlg: */ PragFlg_NeedSchema, |
| 113229 | + /* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0, |
| 112951 | 113230 | /* ColNames: */ 39, 4, |
| 112952 | 113231 | /* iArg: */ 0 }, |
| 112953 | 113232 | #endif |
| 112954 | 113233 | #if !defined(SQLITE_OMIT_FOREIGN_KEY) |
| 112955 | 113234 | {/* zName: */ "foreign_key_list", |
| | @@ -113032,11 +113311,11 @@ |
| 113032 | 113311 | /* iArg: */ 1 }, |
| 113033 | 113312 | #endif |
| 113034 | 113313 | #if !defined(SQLITE_OMIT_INTEGRITY_CHECK) |
| 113035 | 113314 | {/* zName: */ "integrity_check", |
| 113036 | 113315 | /* ePragTyp: */ PragTyp_INTEGRITY_CHECK, |
| 113037 | | - /* ePragFlg: */ PragFlg_NeedSchema, |
| 113316 | + /* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0|PragFlg_Result1, |
| 113038 | 113317 | /* ColNames: */ 0, 0, |
| 113039 | 113318 | /* iArg: */ 0 }, |
| 113040 | 113319 | #endif |
| 113041 | 113320 | #if !defined(SQLITE_OMIT_PAGER_PRAGMAS) |
| 113042 | 113321 | {/* zName: */ "journal_mode", |
| | @@ -113127,11 +113406,11 @@ |
| 113127 | 113406 | /* iArg: */ SQLITE_QueryOnly }, |
| 113128 | 113407 | #endif |
| 113129 | 113408 | #if !defined(SQLITE_OMIT_INTEGRITY_CHECK) |
| 113130 | 113409 | {/* zName: */ "quick_check", |
| 113131 | 113410 | /* ePragTyp: */ PragTyp_INTEGRITY_CHECK, |
| 113132 | | - /* ePragFlg: */ PragFlg_NeedSchema, |
| 113411 | + /* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0|PragFlg_Result1, |
| 113133 | 113412 | /* ColNames: */ 0, 0, |
| 113134 | 113413 | /* iArg: */ 0 }, |
| 113135 | 113414 | #endif |
| 113136 | 113415 | #if !defined(SQLITE_OMIT_FLAG_PRAGMAS) |
| 113137 | 113416 | {/* zName: */ "read_uncommitted", |
| | @@ -119765,13 +120044,16 @@ |
| 119765 | 120044 | ifNullRow.pLeft = pCopy; |
| 119766 | 120045 | ifNullRow.iTable = pSubst->iNewTable; |
| 119767 | 120046 | pCopy = &ifNullRow; |
| 119768 | 120047 | } |
| 119769 | 120048 | pNew = sqlite3ExprDup(db, pCopy, 0); |
| 119770 | | - if( pNew && (pExpr->flags & EP_FromJoin) ){ |
| 120049 | + if( pNew && pSubst->isLeftJoin ){ |
| 120050 | + ExprSetProperty(pNew, EP_CanBeNull); |
| 120051 | + } |
| 120052 | + if( pNew && ExprHasProperty(pExpr,EP_FromJoin) ){ |
| 119771 | 120053 | pNew->iRightJoinTable = pExpr->iRightJoinTable; |
| 119772 | | - pNew->flags |= EP_FromJoin; |
| 120054 | + ExprSetProperty(pNew, EP_FromJoin); |
| 119773 | 120055 | } |
| 119774 | 120056 | sqlite3ExprDelete(db, pExpr); |
| 119775 | 120057 | pExpr = pNew; |
| 119776 | 120058 | } |
| 119777 | 120059 | } |
| | @@ -120060,11 +120342,11 @@ |
| 120060 | 120342 | ** |
| 120061 | 120343 | ** which is not at all the same thing. |
| 120062 | 120344 | ** |
| 120063 | 120345 | ** If the subquery is the right operand of a LEFT JOIN, then the outer |
| 120064 | 120346 | ** query cannot be an aggregate. This is an artifact of the way aggregates |
| 120065 | | - ** are processed - there is not mechanism to determine if the LEFT JOIN |
| 120347 | + ** are processed - there is no mechanism to determine if the LEFT JOIN |
| 120066 | 120348 | ** table should be all-NULL. |
| 120067 | 120349 | ** |
| 120068 | 120350 | ** See also tickets #306, #350, and #3300. |
| 120069 | 120351 | */ |
| 120070 | 120352 | if( (pSubitem->fg.jointype & JT_OUTER)!=0 ){ |
| | @@ -124879,11 +125161,11 @@ |
| 124879 | 125161 | #ifdef SQLITE_HAS_CODEC |
| 124880 | 125162 | if( db->nextPagesize ){ |
| 124881 | 125163 | extern void sqlite3CodecGetKey(sqlite3*, int, void**, int*); |
| 124882 | 125164 | int nKey; |
| 124883 | 125165 | char *zKey; |
| 124884 | | - sqlite3CodecGetKey(db, 0, (void**)&zKey, &nKey); |
| 125166 | + sqlite3CodecGetKey(db, iDb, (void**)&zKey, &nKey); |
| 124885 | 125167 | if( nKey ) db->nextPagesize = 0; |
| 124886 | 125168 | } |
| 124887 | 125169 | #endif |
| 124888 | 125170 | |
| 124889 | 125171 | sqlite3BtreeSetCacheSize(pTemp, db->aDb[iDb].pSchema->cache_size); |
| | @@ -134744,10 +135026,35 @@ |
| 134744 | 135026 | #endif |
| 134745 | 135027 | return 1; |
| 134746 | 135028 | } |
| 134747 | 135029 | return 0; |
| 134748 | 135030 | } |
| 135031 | + |
| 135032 | +/* |
| 135033 | +** Helper function for exprIsDeterministic(). |
| 135034 | +*/ |
| 135035 | +static int exprNodeIsDeterministic(Walker *pWalker, Expr *pExpr){ |
| 135036 | + if( pExpr->op==TK_FUNCTION && ExprHasProperty(pExpr, EP_ConstFunc)==0 ){ |
| 135037 | + pWalker->eCode = 0; |
| 135038 | + return WRC_Abort; |
| 135039 | + } |
| 135040 | + return WRC_Continue; |
| 135041 | +} |
| 135042 | + |
| 135043 | +/* |
| 135044 | +** Return true if the expression contains no non-deterministic SQL |
| 135045 | +** functions. Do not consider non-deterministic SQL functions that are |
| 135046 | +** part of sub-select statements. |
| 135047 | +*/ |
| 135048 | +static int exprIsDeterministic(Expr *p){ |
| 135049 | + Walker w; |
| 135050 | + memset(&w, 0, sizeof(w)); |
| 135051 | + w.eCode = 1; |
| 135052 | + w.xExprCallback = exprNodeIsDeterministic; |
| 135053 | + sqlite3WalkExpr(&w, p); |
| 135054 | + return w.eCode; |
| 135055 | +} |
| 134749 | 135056 | |
| 134750 | 135057 | /* |
| 134751 | 135058 | ** Generate the beginning of the loop used for WHERE clause processing. |
| 134752 | 135059 | ** The return value is a pointer to an opaque structure that contains |
| 134753 | 135060 | ** information needed to terminate the loop. Later, the calling routine |
| | @@ -134943,21 +135250,10 @@ |
| 134943 | 135250 | */ |
| 134944 | 135251 | initMaskSet(pMaskSet); |
| 134945 | 135252 | sqlite3WhereClauseInit(&pWInfo->sWC, pWInfo); |
| 134946 | 135253 | sqlite3WhereSplit(&pWInfo->sWC, pWhere, TK_AND); |
| 134947 | 135254 | |
| 134948 | | - /* Special case: a WHERE clause that is constant. Evaluate the |
| 134949 | | - ** expression and either jump over all of the code or fall thru. |
| 134950 | | - */ |
| 134951 | | - for(ii=0; ii<sWLB.pWC->nTerm; ii++){ |
| 134952 | | - if( nTabList==0 || sqlite3ExprIsConstantNotJoin(sWLB.pWC->a[ii].pExpr) ){ |
| 134953 | | - sqlite3ExprIfFalse(pParse, sWLB.pWC->a[ii].pExpr, pWInfo->iBreak, |
| 134954 | | - SQLITE_JUMPIFNULL); |
| 134955 | | - sWLB.pWC->a[ii].wtFlags |= TERM_CODED; |
| 134956 | | - } |
| 134957 | | - } |
| 134958 | | - |
| 134959 | 135255 | /* Special case: No FROM clause |
| 134960 | 135256 | */ |
| 134961 | 135257 | if( nTabList==0 ){ |
| 134962 | 135258 | if( pOrderBy ) pWInfo->nOBSat = pOrderBy->nExpr; |
| 134963 | 135259 | if( wctrlFlags & WHERE_WANT_DISTINCT ){ |
| | @@ -134991,10 +135287,29 @@ |
| 134991 | 135287 | #endif |
| 134992 | 135288 | |
| 134993 | 135289 | /* Analyze all of the subexpressions. */ |
| 134994 | 135290 | sqlite3WhereExprAnalyze(pTabList, &pWInfo->sWC); |
| 134995 | 135291 | if( db->mallocFailed ) goto whereBeginError; |
| 135292 | + |
| 135293 | + /* Special case: WHERE terms that do not refer to any tables in the join |
| 135294 | + ** (constant expressions). Evaluate each such term, and jump over all the |
| 135295 | + ** generated code if the result is not true. |
| 135296 | + ** |
| 135297 | + ** Do not do this if the expression contains non-deterministic functions |
| 135298 | + ** that are not within a sub-select. This is not strictly required, but |
| 135299 | + ** preserves SQLite's legacy behaviour in the following two cases: |
| 135300 | + ** |
| 135301 | + ** FROM ... WHERE random()>0; -- eval random() once per row |
| 135302 | + ** FROM ... WHERE (SELECT random())>0; -- eval random() once overall |
| 135303 | + */ |
| 135304 | + for(ii=0; ii<sWLB.pWC->nTerm; ii++){ |
| 135305 | + WhereTerm *pT = &sWLB.pWC->a[ii]; |
| 135306 | + if( pT->prereqAll==0 && (nTabList==0 || exprIsDeterministic(pT->pExpr)) ){ |
| 135307 | + sqlite3ExprIfFalse(pParse, pT->pExpr, pWInfo->iBreak, SQLITE_JUMPIFNULL); |
| 135308 | + pT->wtFlags |= TERM_CODED; |
| 135309 | + } |
| 135310 | + } |
| 134996 | 135311 | |
| 134997 | 135312 | if( wctrlFlags & WHERE_WANT_DISTINCT ){ |
| 134998 | 135313 | if( isDistinctRedundant(pParse, pTabList, &pWInfo->sWC, pResultSet) ){ |
| 134999 | 135314 | /* The DISTINCT marking is pointless. Ignore it. */ |
| 135000 | 135315 | pWInfo->eDistinct = WHERE_DISTINCT_UNIQUE; |
| | @@ -144646,10 +144961,62 @@ |
| 144646 | 144961 | SQLITE_API void sqlite3_snapshot_free(sqlite3_snapshot *pSnapshot){ |
| 144647 | 144962 | sqlite3_free(pSnapshot); |
| 144648 | 144963 | } |
| 144649 | 144964 | #endif /* SQLITE_ENABLE_SNAPSHOT */ |
| 144650 | 144965 | |
| 144966 | +#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS |
| 144967 | +/* |
| 144968 | +** Given the name of a compile-time option, return true if that option |
| 144969 | +** was used and false if not. |
| 144970 | +** |
| 144971 | +** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix |
| 144972 | +** is not required for a match. |
| 144973 | +*/ |
| 144974 | +SQLITE_API int sqlite3_compileoption_used(const char *zOptName){ |
| 144975 | + int i, n; |
| 144976 | + int nOpt; |
| 144977 | + const char **azCompileOpt; |
| 144978 | + |
| 144979 | +#if SQLITE_ENABLE_API_ARMOR |
| 144980 | + if( zOptName==0 ){ |
| 144981 | + (void)SQLITE_MISUSE_BKPT; |
| 144982 | + return 0; |
| 144983 | + } |
| 144984 | +#endif |
| 144985 | + |
| 144986 | + azCompileOpt = sqlite3CompileOptions(&nOpt); |
| 144987 | + |
| 144988 | + if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7; |
| 144989 | + n = sqlite3Strlen30(zOptName); |
| 144990 | + |
| 144991 | + /* Since nOpt is normally in single digits, a linear search is |
| 144992 | + ** adequate. No need for a binary search. */ |
| 144993 | + for(i=0; i<nOpt; i++){ |
| 144994 | + if( sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0 |
| 144995 | + && sqlite3IsIdChar((unsigned char)azCompileOpt[i][n])==0 |
| 144996 | + ){ |
| 144997 | + return 1; |
| 144998 | + } |
| 144999 | + } |
| 145000 | + return 0; |
| 145001 | +} |
| 145002 | + |
| 145003 | +/* |
| 145004 | +** Return the N-th compile-time option string. If N is out of range, |
| 145005 | +** return a NULL pointer. |
| 145006 | +*/ |
| 145007 | +SQLITE_API const char *sqlite3_compileoption_get(int N){ |
| 145008 | + int nOpt; |
| 145009 | + const char **azCompileOpt; |
| 145010 | + azCompileOpt = sqlite3CompileOptions(&nOpt); |
| 145011 | + if( N>=0 && N<nOpt ){ |
| 145012 | + return azCompileOpt[N]; |
| 145013 | + } |
| 145014 | + return 0; |
| 145015 | +} |
| 145016 | +#endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */ |
| 145017 | + |
| 144651 | 145018 | /************** End of main.c ************************************************/ |
| 144652 | 145019 | /************** Begin file notify.c ******************************************/ |
| 144653 | 145020 | /* |
| 144654 | 145021 | ** 2009 March 3 |
| 144655 | 145022 | ** |
| | @@ -199150,11 +199517,11 @@ |
| 199150 | 199517 | int nArg, /* Number of args */ |
| 199151 | 199518 | sqlite3_value **apUnused /* Function arguments */ |
| 199152 | 199519 | ){ |
| 199153 | 199520 | assert( nArg==0 ); |
| 199154 | 199521 | UNUSED_PARAM2(nArg, apUnused); |
| 199155 | | - sqlite3_result_text(pCtx, "fts5: 2017-06-13 04:31:54 35b34bdf0843b49be39e13ed212e918c2d45afdb8374b5cd02ba6d2d5b16b3b9", -1, SQLITE_TRANSIENT); |
| 199522 | + sqlite3_result_text(pCtx, "fts5: 2017-06-24 13:31:40 0583b84ab444db3ae3c93db619b67bf84b0305ab989200e77214e02ff2dc923a", -1, SQLITE_TRANSIENT); |
| 199156 | 199523 | } |
| 199157 | 199524 | |
| 199158 | 199525 | static int fts5Init(sqlite3 *db){ |
| 199159 | 199526 | static const sqlite3_module fts5Mod = { |
| 199160 | 199527 | /* iVersion */ 2, |
| 199161 | 199528 | |