OLD | NEW |
1 /* | 1 /* |
2 ** 2010 February 23 | 2 ** 2010 February 23 |
3 ** | 3 ** |
4 ** The author disclaims copyright to this source code. In place of | 4 ** The author disclaims copyright to this source code. In place of |
5 ** a legal notice, here is a blessing: | 5 ** a legal notice, here is a blessing: |
6 ** | 6 ** |
7 ** May you do good and not evil. | 7 ** May you do good and not evil. |
8 ** May you find forgiveness for yourself and forgive others. | 8 ** May you find forgiveness for yourself and forgive others. |
9 ** May you share freely, never taking more than you give. | 9 ** May you share freely, never taking more than you give. |
10 ** | 10 ** |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 #endif | 47 #endif |
48 #ifdef SQLITE_COVERAGE_TEST | 48 #ifdef SQLITE_COVERAGE_TEST |
49 "COVERAGE_TEST", | 49 "COVERAGE_TEST", |
50 #endif | 50 #endif |
51 #ifdef SQLITE_DEBUG | 51 #ifdef SQLITE_DEBUG |
52 "DEBUG", | 52 "DEBUG", |
53 #endif | 53 #endif |
54 #ifdef SQLITE_DEFAULT_LOCKING_MODE | 54 #ifdef SQLITE_DEFAULT_LOCKING_MODE |
55 "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE), | 55 "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE), |
56 #endif | 56 #endif |
| 57 #if defined(SQLITE_DEFAULT_MMAP_SIZE) && !defined(SQLITE_DEFAULT_MMAP_SIZE_xc) |
| 58 "DEFAULT_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_MMAP_SIZE), |
| 59 #endif |
57 #ifdef SQLITE_DISABLE_DIRSYNC | 60 #ifdef SQLITE_DISABLE_DIRSYNC |
58 "DISABLE_DIRSYNC", | 61 "DISABLE_DIRSYNC", |
59 #endif | 62 #endif |
60 #ifdef SQLITE_DISABLE_LFS | 63 #ifdef SQLITE_DISABLE_LFS |
61 "DISABLE_LFS", | 64 "DISABLE_LFS", |
62 #endif | 65 #endif |
63 #ifdef SQLITE_ENABLE_ATOMIC_WRITE | 66 #ifdef SQLITE_ENABLE_ATOMIC_WRITE |
64 "ENABLE_ATOMIC_WRITE", | 67 "ENABLE_ATOMIC_WRITE", |
65 #endif | 68 #endif |
66 #ifdef SQLITE_ENABLE_CEROD | 69 #ifdef SQLITE_ENABLE_CEROD |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 #endif | 110 #endif |
108 #ifdef SQLITE_ENABLE_MEMSYS5 | 111 #ifdef SQLITE_ENABLE_MEMSYS5 |
109 "ENABLE_MEMSYS5", | 112 "ENABLE_MEMSYS5", |
110 #endif | 113 #endif |
111 #ifdef SQLITE_ENABLE_OVERSIZE_CELL_CHECK | 114 #ifdef SQLITE_ENABLE_OVERSIZE_CELL_CHECK |
112 "ENABLE_OVERSIZE_CELL_CHECK", | 115 "ENABLE_OVERSIZE_CELL_CHECK", |
113 #endif | 116 #endif |
114 #ifdef SQLITE_ENABLE_RTREE | 117 #ifdef SQLITE_ENABLE_RTREE |
115 "ENABLE_RTREE", | 118 "ENABLE_RTREE", |
116 #endif | 119 #endif |
117 #ifdef SQLITE_ENABLE_STAT2 | 120 #if defined(SQLITE_ENABLE_STAT4) |
118 "ENABLE_STAT2", | 121 "ENABLE_STAT4", |
| 122 #elif defined(SQLITE_ENABLE_STAT3) |
| 123 "ENABLE_STAT3", |
119 #endif | 124 #endif |
120 #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY | 125 #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY |
121 "ENABLE_UNLOCK_NOTIFY", | 126 "ENABLE_UNLOCK_NOTIFY", |
122 #endif | 127 #endif |
123 #ifdef SQLITE_ENABLE_UPDATE_DELETE_LIMIT | 128 #ifdef SQLITE_ENABLE_UPDATE_DELETE_LIMIT |
124 "ENABLE_UPDATE_DELETE_LIMIT", | 129 "ENABLE_UPDATE_DELETE_LIMIT", |
125 #endif | 130 #endif |
126 #ifdef SQLITE_HAS_CODEC | 131 #ifdef SQLITE_HAS_CODEC |
127 "HAS_CODEC", | 132 "HAS_CODEC", |
128 #endif | 133 #endif |
129 #ifdef SQLITE_HAVE_ISNAN | 134 #ifdef SQLITE_HAVE_ISNAN |
130 "HAVE_ISNAN", | 135 "HAVE_ISNAN", |
131 #endif | 136 #endif |
132 #ifdef SQLITE_HOMEGROWN_RECURSIVE_MUTEX | 137 #ifdef SQLITE_HOMEGROWN_RECURSIVE_MUTEX |
133 "HOMEGROWN_RECURSIVE_MUTEX", | 138 "HOMEGROWN_RECURSIVE_MUTEX", |
134 #endif | 139 #endif |
135 #ifdef SQLITE_IGNORE_AFP_LOCK_ERRORS | 140 #ifdef SQLITE_IGNORE_AFP_LOCK_ERRORS |
136 "IGNORE_AFP_LOCK_ERRORS", | 141 "IGNORE_AFP_LOCK_ERRORS", |
137 #endif | 142 #endif |
138 #ifdef SQLITE_IGNORE_FLOCK_LOCK_ERRORS | 143 #ifdef SQLITE_IGNORE_FLOCK_LOCK_ERRORS |
139 "IGNORE_FLOCK_LOCK_ERRORS", | 144 "IGNORE_FLOCK_LOCK_ERRORS", |
140 #endif | 145 #endif |
141 #ifdef SQLITE_INT64_TYPE | 146 #ifdef SQLITE_INT64_TYPE |
142 "INT64_TYPE", | 147 "INT64_TYPE", |
143 #endif | 148 #endif |
144 #ifdef SQLITE_LOCK_TRACE | 149 #ifdef SQLITE_LOCK_TRACE |
145 "LOCK_TRACE", | 150 "LOCK_TRACE", |
146 #endif | 151 #endif |
| 152 #if defined(SQLITE_MAX_MMAP_SIZE) && !defined(SQLITE_MAX_MMAP_SIZE_xc) |
| 153 "MAX_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE), |
| 154 #endif |
| 155 #ifdef SQLITE_MAX_SCHEMA_RETRY |
| 156 "MAX_SCHEMA_RETRY=" CTIMEOPT_VAL(SQLITE_MAX_SCHEMA_RETRY), |
| 157 #endif |
147 #ifdef SQLITE_MEMDEBUG | 158 #ifdef SQLITE_MEMDEBUG |
148 "MEMDEBUG", | 159 "MEMDEBUG", |
149 #endif | 160 #endif |
150 #ifdef SQLITE_MIXED_ENDIAN_64BIT_FLOAT | 161 #ifdef SQLITE_MIXED_ENDIAN_64BIT_FLOAT |
151 "MIXED_ENDIAN_64BIT_FLOAT", | 162 "MIXED_ENDIAN_64BIT_FLOAT", |
152 #endif | 163 #endif |
153 #ifdef SQLITE_NO_SYNC | 164 #ifdef SQLITE_NO_SYNC |
154 "NO_SYNC", | 165 "NO_SYNC", |
155 #endif | 166 #endif |
156 #ifdef SQLITE_OMIT_ALTERTABLE | 167 #ifdef SQLITE_OMIT_ALTERTABLE |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 #endif | 202 #endif |
192 #ifdef SQLITE_OMIT_BUILTIN_TEST | 203 #ifdef SQLITE_OMIT_BUILTIN_TEST |
193 "OMIT_BUILTIN_TEST", | 204 "OMIT_BUILTIN_TEST", |
194 #endif | 205 #endif |
195 #ifdef SQLITE_OMIT_CAST | 206 #ifdef SQLITE_OMIT_CAST |
196 "OMIT_CAST", | 207 "OMIT_CAST", |
197 #endif | 208 #endif |
198 #ifdef SQLITE_OMIT_CHECK | 209 #ifdef SQLITE_OMIT_CHECK |
199 "OMIT_CHECK", | 210 "OMIT_CHECK", |
200 #endif | 211 #endif |
201 /* // redundant | |
202 ** #ifdef SQLITE_OMIT_COMPILEOPTION_DIAGS | |
203 ** "OMIT_COMPILEOPTION_DIAGS", | |
204 ** #endif | |
205 */ | |
206 #ifdef SQLITE_OMIT_COMPLETE | 212 #ifdef SQLITE_OMIT_COMPLETE |
207 "OMIT_COMPLETE", | 213 "OMIT_COMPLETE", |
208 #endif | 214 #endif |
209 #ifdef SQLITE_OMIT_COMPOUND_SELECT | 215 #ifdef SQLITE_OMIT_COMPOUND_SELECT |
210 "OMIT_COMPOUND_SELECT", | 216 "OMIT_COMPOUND_SELECT", |
211 #endif | 217 #endif |
| 218 #ifdef SQLITE_OMIT_CTE |
| 219 "OMIT_CTE", |
| 220 #endif |
212 #ifdef SQLITE_OMIT_DATETIME_FUNCS | 221 #ifdef SQLITE_OMIT_DATETIME_FUNCS |
213 "OMIT_DATETIME_FUNCS", | 222 "OMIT_DATETIME_FUNCS", |
214 #endif | 223 #endif |
215 #ifdef SQLITE_OMIT_DECLTYPE | 224 #ifdef SQLITE_OMIT_DECLTYPE |
216 "OMIT_DECLTYPE", | 225 "OMIT_DECLTYPE", |
217 #endif | 226 #endif |
218 #ifdef SQLITE_OMIT_DEPRECATED | 227 #ifdef SQLITE_OMIT_DEPRECATED |
219 "OMIT_DEPRECATED", | 228 "OMIT_DEPRECATED", |
220 #endif | 229 #endif |
221 #ifdef SQLITE_OMIT_DISKIO | 230 #ifdef SQLITE_OMIT_DISKIO |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 #endif | 331 #endif |
323 #ifdef SQLITE_OMIT_XFER_OPT | 332 #ifdef SQLITE_OMIT_XFER_OPT |
324 "OMIT_XFER_OPT", | 333 "OMIT_XFER_OPT", |
325 #endif | 334 #endif |
326 #ifdef SQLITE_PERFORMANCE_TRACE | 335 #ifdef SQLITE_PERFORMANCE_TRACE |
327 "PERFORMANCE_TRACE", | 336 "PERFORMANCE_TRACE", |
328 #endif | 337 #endif |
329 #ifdef SQLITE_PROXY_DEBUG | 338 #ifdef SQLITE_PROXY_DEBUG |
330 "PROXY_DEBUG", | 339 "PROXY_DEBUG", |
331 #endif | 340 #endif |
| 341 #ifdef SQLITE_RTREE_INT_ONLY |
| 342 "RTREE_INT_ONLY", |
| 343 #endif |
332 #ifdef SQLITE_SECURE_DELETE | 344 #ifdef SQLITE_SECURE_DELETE |
333 "SECURE_DELETE", | 345 "SECURE_DELETE", |
334 #endif | 346 #endif |
335 #ifdef SQLITE_SMALL_STACK | 347 #ifdef SQLITE_SMALL_STACK |
336 "SMALL_STACK", | 348 "SMALL_STACK", |
337 #endif | 349 #endif |
338 #ifdef SQLITE_SOUNDEX | 350 #ifdef SQLITE_SOUNDEX |
339 "SOUNDEX", | 351 "SOUNDEX", |
340 #endif | 352 #endif |
| 353 #ifdef SQLITE_SYSTEM_MALLOC |
| 354 "SYSTEM_MALLOC", |
| 355 #endif |
341 #ifdef SQLITE_TCL | 356 #ifdef SQLITE_TCL |
342 "TCL", | 357 "TCL", |
343 #endif | 358 #endif |
344 #ifdef SQLITE_TEMP_STORE | 359 #if defined(SQLITE_TEMP_STORE) && !defined(SQLITE_TEMP_STORE_xc) |
345 "TEMP_STORE=" CTIMEOPT_VAL(SQLITE_TEMP_STORE), | 360 "TEMP_STORE=" CTIMEOPT_VAL(SQLITE_TEMP_STORE), |
346 #endif | 361 #endif |
347 #ifdef SQLITE_TEST | 362 #ifdef SQLITE_TEST |
348 "TEST", | 363 "TEST", |
349 #endif | 364 #endif |
350 #ifdef SQLITE_THREADSAFE | 365 #if defined(SQLITE_THREADSAFE) |
351 "THREADSAFE=" CTIMEOPT_VAL(SQLITE_THREADSAFE), | 366 "THREADSAFE=" CTIMEOPT_VAL(SQLITE_THREADSAFE), |
352 #endif | 367 #endif |
353 #ifdef SQLITE_USE_ALLOCA | 368 #ifdef SQLITE_USE_ALLOCA |
354 "USE_ALLOCA", | 369 "USE_ALLOCA", |
355 #endif | 370 #endif |
| 371 #ifdef SQLITE_USER_AUTHENTICATION |
| 372 "USER_AUTHENTICATION", |
| 373 #endif |
| 374 #ifdef SQLITE_WIN32_MALLOC |
| 375 "WIN32_MALLOC", |
| 376 #endif |
356 #ifdef SQLITE_ZERO_MALLOC | 377 #ifdef SQLITE_ZERO_MALLOC |
357 "ZERO_MALLOC" | 378 "ZERO_MALLOC" |
358 #endif | 379 #endif |
359 }; | 380 }; |
360 | 381 |
361 /* | 382 /* |
362 ** Given the name of a compile-time option, return true if that option | 383 ** Given the name of a compile-time option, return true if that option |
363 ** was used and false if not. | 384 ** was used and false if not. |
364 ** | 385 ** |
365 ** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix | 386 ** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix |
366 ** is not required for a match. | 387 ** is not required for a match. |
367 */ | 388 */ |
368 int sqlite3_compileoption_used(const char *zOptName){ | 389 int sqlite3_compileoption_used(const char *zOptName){ |
369 int i, n; | 390 int i, n; |
370 if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7; | 391 if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7; |
371 n = sqlite3Strlen30(zOptName); | 392 n = sqlite3Strlen30(zOptName); |
372 | 393 |
373 /* Since ArraySize(azCompileOpt) is normally in single digits, a | 394 /* Since ArraySize(azCompileOpt) is normally in single digits, a |
374 ** linear search is adequate. No need for a binary search. */ | 395 ** linear search is adequate. No need for a binary search. */ |
375 for(i=0; i<ArraySize(azCompileOpt); i++){ | 396 for(i=0; i<ArraySize(azCompileOpt); i++){ |
376 if( (sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0) | 397 if( sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0 |
377 && ( (azCompileOpt[i][n]==0) || (azCompileOpt[i][n]=='=') ) ) return 1; | 398 && sqlite3IsIdChar((unsigned char)azCompileOpt[i][n])==0 |
| 399 ){ |
| 400 return 1; |
| 401 } |
378 } | 402 } |
379 return 0; | 403 return 0; |
380 } | 404 } |
381 | 405 |
382 /* | 406 /* |
383 ** Return the N-th compile-time option string. If N is out of range, | 407 ** Return the N-th compile-time option string. If N is out of range, |
384 ** return a NULL pointer. | 408 ** return a NULL pointer. |
385 */ | 409 */ |
386 const char *sqlite3_compileoption_get(int N){ | 410 const char *sqlite3_compileoption_get(int N){ |
387 if( N>=0 && N<ArraySize(azCompileOpt) ){ | 411 if( N>=0 && N<ArraySize(azCompileOpt) ){ |
388 return azCompileOpt[N]; | 412 return azCompileOpt[N]; |
389 } | 413 } |
390 return 0; | 414 return 0; |
391 } | 415 } |
392 | 416 |
393 #endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */ | 417 #endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */ |
OLD | NEW |