| OLD | NEW | 
 | (Empty) | 
|     1 /* |  | 
|     2 ** 2001 September 15 |  | 
|     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 ** Internal interface definitions for SQLite. |  | 
|    13 ** |  | 
|    14 */ |  | 
|    15 #ifndef _SQLITEINT_H_ |  | 
|    16 #define _SQLITEINT_H_ |  | 
|    17  |  | 
|    18 /* |  | 
|    19 ** These #defines should enable >2GB file support on POSIX if the |  | 
|    20 ** underlying operating system supports it.  If the OS lacks |  | 
|    21 ** large file support, or if the OS is windows, these should be no-ops. |  | 
|    22 ** |  | 
|    23 ** Ticket #2739:  The _LARGEFILE_SOURCE macro must appear before any |  | 
|    24 ** system #includes.  Hence, this block of code must be the very first |  | 
|    25 ** code in all source files. |  | 
|    26 ** |  | 
|    27 ** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch |  | 
|    28 ** on the compiler command line.  This is necessary if you are compiling |  | 
|    29 ** on a recent machine (ex: Red Hat 7.2) but you want your code to work |  | 
|    30 ** on an older machine (ex: Red Hat 6.0).  If you compile on Red Hat 7.2 |  | 
|    31 ** without this option, LFS is enable.  But LFS does not exist in the kernel |  | 
|    32 ** in Red Hat 6.0, so the code won't work.  Hence, for maximum binary |  | 
|    33 ** portability you should omit LFS. |  | 
|    34 ** |  | 
|    35 ** Similar is true for Mac OS X.  LFS is only supported on Mac OS X 9 and later. |  | 
|    36 */ |  | 
|    37 #ifndef SQLITE_DISABLE_LFS |  | 
|    38 # define _LARGE_FILE       1 |  | 
|    39 # ifndef _FILE_OFFSET_BITS |  | 
|    40 #   define _FILE_OFFSET_BITS 64 |  | 
|    41 # endif |  | 
|    42 # define _LARGEFILE_SOURCE 1 |  | 
|    43 #endif |  | 
|    44  |  | 
|    45 /* |  | 
|    46 ** Include the configuration header output by 'configure' if we're using the |  | 
|    47 ** autoconf-based build |  | 
|    48 */ |  | 
|    49 #ifdef _HAVE_SQLITE_CONFIG_H |  | 
|    50 #include "config.h" |  | 
|    51 #endif |  | 
|    52  |  | 
|    53 #include "sqliteLimit.h" |  | 
|    54  |  | 
|    55 /* Disable nuisance warnings on Borland compilers */ |  | 
|    56 #if defined(__BORLANDC__) |  | 
|    57 #pragma warn -rch /* unreachable code */ |  | 
|    58 #pragma warn -ccc /* Condition is always true or false */ |  | 
|    59 #pragma warn -aus /* Assigned value is never used */ |  | 
|    60 #pragma warn -csu /* Comparing signed and unsigned */ |  | 
|    61 #pragma warn -spa /* Suspicious pointer arithmetic */ |  | 
|    62 #endif |  | 
|    63  |  | 
|    64 /* Needed for various definitions... */ |  | 
|    65 #ifndef _GNU_SOURCE |  | 
|    66 # define _GNU_SOURCE |  | 
|    67 #endif |  | 
|    68  |  | 
|    69 /* |  | 
|    70 ** Include standard header files as necessary |  | 
|    71 */ |  | 
|    72 #ifdef HAVE_STDINT_H |  | 
|    73 #include <stdint.h> |  | 
|    74 #endif |  | 
|    75 #ifdef HAVE_INTTYPES_H |  | 
|    76 #include <inttypes.h> |  | 
|    77 #endif |  | 
|    78  |  | 
|    79 #define SQLITE_INDEX_SAMPLES 10 |  | 
|    80  |  | 
|    81 /* |  | 
|    82 ** This macro is used to "hide" some ugliness in casting an int |  | 
|    83 ** value to a ptr value under the MSVC 64-bit compiler.   Casting |  | 
|    84 ** non 64-bit values to ptr types results in a "hard" error with  |  | 
|    85 ** the MSVC 64-bit compiler which this attempts to avoid.   |  | 
|    86 ** |  | 
|    87 ** A simple compiler pragma or casting sequence could not be found |  | 
|    88 ** to correct this in all situations, so this macro was introduced. |  | 
|    89 ** |  | 
|    90 ** It could be argued that the intptr_t type could be used in this |  | 
|    91 ** case, but that type is not available on all compilers, or  |  | 
|    92 ** requires the #include of specific headers which differs between |  | 
|    93 ** platforms. |  | 
|    94 ** |  | 
|    95 ** Ticket #3860:  The llvm-gcc-4.2 compiler from Apple chokes on |  | 
|    96 ** the ((void*)&((char*)0)[X]) construct.  But MSVC chokes on ((void*)(X)). |  | 
|    97 ** So we have to define the macros in different ways depending on the |  | 
|    98 ** compiler. |  | 
|    99 */ |  | 
|   100 #if defined(__GNUC__) |  | 
|   101 # if defined(HAVE_STDINT_H) |  | 
|   102 #   define SQLITE_INT_TO_PTR(X)  ((void*)(intptr_t)(X)) |  | 
|   103 #   define SQLITE_PTR_TO_INT(X)  ((int)(intptr_t)(X)) |  | 
|   104 # else |  | 
|   105 #   define SQLITE_INT_TO_PTR(X)  ((void*)(X)) |  | 
|   106 #   define SQLITE_PTR_TO_INT(X)  ((int)(X)) |  | 
|   107 # endif |  | 
|   108 #else |  | 
|   109 # define SQLITE_INT_TO_PTR(X)   ((void*)&((char*)0)[X]) |  | 
|   110 # define SQLITE_PTR_TO_INT(X)   ((int)(((char*)X)-(char*)0)) |  | 
|   111 #endif |  | 
|   112  |  | 
|   113  |  | 
|   114 /* |  | 
|   115 ** The SQLITE_THREADSAFE macro must be defined as either 0 or 1. |  | 
|   116 ** Older versions of SQLite used an optional THREADSAFE macro. |  | 
|   117 ** We support that for legacy |  | 
|   118 */ |  | 
|   119 #if !defined(SQLITE_THREADSAFE) |  | 
|   120 #if defined(THREADSAFE) |  | 
|   121 # define SQLITE_THREADSAFE THREADSAFE |  | 
|   122 #else |  | 
|   123 # define SQLITE_THREADSAFE 1 |  | 
|   124 #endif |  | 
|   125 #endif |  | 
|   126  |  | 
|   127 /* |  | 
|   128 ** The SQLITE_DEFAULT_MEMSTATUS macro must be defined as either 0 or 1. |  | 
|   129 ** It determines whether or not the features related to  |  | 
|   130 ** SQLITE_CONFIG_MEMSTATUS are available by default or not. This value can |  | 
|   131 ** be overridden at runtime using the sqlite3_config() API. |  | 
|   132 */ |  | 
|   133 #if !defined(SQLITE_DEFAULT_MEMSTATUS) |  | 
|   134 # define SQLITE_DEFAULT_MEMSTATUS 1 |  | 
|   135 #endif |  | 
|   136  |  | 
|   137 /* |  | 
|   138 ** Exactly one of the following macros must be defined in order to |  | 
|   139 ** specify which memory allocation subsystem to use. |  | 
|   140 ** |  | 
|   141 **     SQLITE_SYSTEM_MALLOC          // Use normal system malloc() |  | 
|   142 **     SQLITE_MEMDEBUG               // Debugging version of system malloc() |  | 
|   143 **     SQLITE_MEMORY_SIZE            // internal allocator #1 |  | 
|   144 **     SQLITE_MMAP_HEAP_SIZE         // internal mmap() allocator |  | 
|   145 **     SQLITE_POW2_MEMORY_SIZE       // internal power-of-two allocator |  | 
|   146 ** |  | 
|   147 ** If none of the above are defined, then set SQLITE_SYSTEM_MALLOC as |  | 
|   148 ** the default. |  | 
|   149 */ |  | 
|   150 #if defined(SQLITE_SYSTEM_MALLOC)+defined(SQLITE_MEMDEBUG)+\ |  | 
|   151     defined(SQLITE_MEMORY_SIZE)+defined(SQLITE_MMAP_HEAP_SIZE)+\ |  | 
|   152     defined(SQLITE_POW2_MEMORY_SIZE)>1 |  | 
|   153 # error "At most one of the following compile-time configuration options\ |  | 
|   154  is allows: SQLITE_SYSTEM_MALLOC, SQLITE_MEMDEBUG, SQLITE_MEMORY_SIZE,\ |  | 
|   155  SQLITE_MMAP_HEAP_SIZE, SQLITE_POW2_MEMORY_SIZE" |  | 
|   156 #endif |  | 
|   157 #if defined(SQLITE_SYSTEM_MALLOC)+defined(SQLITE_MEMDEBUG)+\ |  | 
|   158     defined(SQLITE_MEMORY_SIZE)+defined(SQLITE_MMAP_HEAP_SIZE)+\ |  | 
|   159     defined(SQLITE_POW2_MEMORY_SIZE)==0 |  | 
|   160 # define SQLITE_SYSTEM_MALLOC 1 |  | 
|   161 #endif |  | 
|   162  |  | 
|   163 /* |  | 
|   164 ** If SQLITE_MALLOC_SOFT_LIMIT is not zero, then try to keep the |  | 
|   165 ** sizes of memory allocations below this value where possible. |  | 
|   166 */ |  | 
|   167 #if !defined(SQLITE_MALLOC_SOFT_LIMIT) |  | 
|   168 # define SQLITE_MALLOC_SOFT_LIMIT 1024 |  | 
|   169 #endif |  | 
|   170  |  | 
|   171 /* |  | 
|   172 ** We need to define _XOPEN_SOURCE as follows in order to enable |  | 
|   173 ** recursive mutexes on most Unix systems.  But Mac OS X is different. |  | 
|   174 ** The _XOPEN_SOURCE define causes problems for Mac OS X we are told, |  | 
|   175 ** so it is omitted there.  See ticket #2673. |  | 
|   176 ** |  | 
|   177 ** Later we learn that _XOPEN_SOURCE is poorly or incorrectly |  | 
|   178 ** implemented on some systems.  So we avoid defining it at all |  | 
|   179 ** if it is already defined or if it is unneeded because we are |  | 
|   180 ** not doing a threadsafe build.  Ticket #2681. |  | 
|   181 ** |  | 
|   182 ** See also ticket #2741. |  | 
|   183 */ |  | 
|   184 #if !defined(_XOPEN_SOURCE) && !defined(__DARWIN__) && !defined(__APPLE__) && SQ
      LITE_THREADSAFE |  | 
|   185 #  define _XOPEN_SOURCE 500  /* Needed to enable pthread recursive mutexes */ |  | 
|   186 #endif |  | 
|   187  |  | 
|   188 /* |  | 
|   189 ** The TCL headers are only needed when compiling the TCL bindings. |  | 
|   190 */ |  | 
|   191 #if defined(SQLITE_TCL) || defined(TCLSH) |  | 
|   192 # include <tcl.h> |  | 
|   193 #endif |  | 
|   194  |  | 
|   195 /* |  | 
|   196 ** Many people are failing to set -DNDEBUG=1 when compiling SQLite. |  | 
|   197 ** Setting NDEBUG makes the code smaller and run faster.  So the following |  | 
|   198 ** lines are added to automatically set NDEBUG unless the -DSQLITE_DEBUG=1 |  | 
|   199 ** option is set.  Thus NDEBUG becomes an opt-in rather than an opt-out |  | 
|   200 ** feature. |  | 
|   201 */ |  | 
|   202 #if !defined(NDEBUG) && !defined(SQLITE_DEBUG)  |  | 
|   203 # define NDEBUG 1 |  | 
|   204 #endif |  | 
|   205  |  | 
|   206 /* |  | 
|   207 ** The testcase() macro is used to aid in coverage testing.  When  |  | 
|   208 ** doing coverage testing, the condition inside the argument to |  | 
|   209 ** testcase() must be evaluated both true and false in order to |  | 
|   210 ** get full branch coverage.  The testcase() macro is inserted |  | 
|   211 ** to help ensure adequate test coverage in places where simple |  | 
|   212 ** condition/decision coverage is inadequate.  For example, testcase() |  | 
|   213 ** can be used to make sure boundary values are tested.  For |  | 
|   214 ** bitmask tests, testcase() can be used to make sure each bit |  | 
|   215 ** is significant and used at least once.  On switch statements |  | 
|   216 ** where multiple cases go to the same block of code, testcase() |  | 
|   217 ** can insure that all cases are evaluated. |  | 
|   218 ** |  | 
|   219 */ |  | 
|   220 #ifdef SQLITE_COVERAGE_TEST |  | 
|   221   void sqlite3Coverage(int); |  | 
|   222 # define testcase(X)  if( X ){ sqlite3Coverage(__LINE__); } |  | 
|   223 #else |  | 
|   224 # define testcase(X) |  | 
|   225 #endif |  | 
|   226  |  | 
|   227 /* |  | 
|   228 ** The TESTONLY macro is used to enclose variable declarations or |  | 
|   229 ** other bits of code that are needed to support the arguments |  | 
|   230 ** within testcase() and assert() macros. |  | 
|   231 */ |  | 
|   232 #if !defined(NDEBUG) || defined(SQLITE_COVERAGE_TEST) |  | 
|   233 # define TESTONLY(X)  X |  | 
|   234 #else |  | 
|   235 # define TESTONLY(X) |  | 
|   236 #endif |  | 
|   237  |  | 
|   238 /* |  | 
|   239 ** Sometimes we need a small amount of code such as a variable initialization |  | 
|   240 ** to setup for a later assert() statement.  We do not want this code to |  | 
|   241 ** appear when assert() is disabled.  The following macro is therefore |  | 
|   242 ** used to contain that setup code.  The "VVA" acronym stands for |  | 
|   243 ** "Verification, Validation, and Accreditation".  In other words, the |  | 
|   244 ** code within VVA_ONLY() will only run during verification processes. |  | 
|   245 */ |  | 
|   246 #ifndef NDEBUG |  | 
|   247 # define VVA_ONLY(X)  X |  | 
|   248 #else |  | 
|   249 # define VVA_ONLY(X) |  | 
|   250 #endif |  | 
|   251  |  | 
|   252 /* |  | 
|   253 ** The ALWAYS and NEVER macros surround boolean expressions which  |  | 
|   254 ** are intended to always be true or false, respectively.  Such |  | 
|   255 ** expressions could be omitted from the code completely.  But they |  | 
|   256 ** are included in a few cases in order to enhance the resilience |  | 
|   257 ** of SQLite to unexpected behavior - to make the code "self-healing" |  | 
|   258 ** or "ductile" rather than being "brittle" and crashing at the first |  | 
|   259 ** hint of unplanned behavior. |  | 
|   260 ** |  | 
|   261 ** In other words, ALWAYS and NEVER are added for defensive code. |  | 
|   262 ** |  | 
|   263 ** When doing coverage testing ALWAYS and NEVER are hard-coded to |  | 
|   264 ** be true and false so that the unreachable code then specify will |  | 
|   265 ** not be counted as untested code. |  | 
|   266 */ |  | 
|   267 #if defined(SQLITE_COVERAGE_TEST) |  | 
|   268 # define ALWAYS(X)      (1) |  | 
|   269 # define NEVER(X)       (0) |  | 
|   270 #elif !defined(NDEBUG) |  | 
|   271 # define ALWAYS(X)      ((X)?1:(assert(0),0)) |  | 
|   272 # define NEVER(X)       ((X)?(assert(0),1):0) |  | 
|   273 #else |  | 
|   274 # define ALWAYS(X)      (X) |  | 
|   275 # define NEVER(X)       (X) |  | 
|   276 #endif |  | 
|   277  |  | 
|   278 /* |  | 
|   279 ** The macro unlikely() is a hint that surrounds a boolean |  | 
|   280 ** expression that is usually false.  Macro likely() surrounds |  | 
|   281 ** a boolean expression that is usually true.  GCC is able to |  | 
|   282 ** use these hints to generate better code, sometimes. |  | 
|   283 */ |  | 
|   284 #if defined(__GNUC__) && 0 |  | 
|   285 # define likely(X)    __builtin_expect((X),1) |  | 
|   286 # define unlikely(X)  __builtin_expect((X),0) |  | 
|   287 #else |  | 
|   288 # define likely(X)    !!(X) |  | 
|   289 # define unlikely(X)  !!(X) |  | 
|   290 #endif |  | 
|   291  |  | 
|   292 #include "sqlite3.h" |  | 
|   293 #include "hash.h" |  | 
|   294 #include "parse.h" |  | 
|   295 #include <stdio.h> |  | 
|   296 #include <stdlib.h> |  | 
|   297 #include <string.h> |  | 
|   298 #include <assert.h> |  | 
|   299 #include <stddef.h> |  | 
|   300  |  | 
|   301 /* |  | 
|   302 ** If compiling for a processor that lacks floating point support, |  | 
|   303 ** substitute integer for floating-point |  | 
|   304 */ |  | 
|   305 #ifdef SQLITE_OMIT_FLOATING_POINT |  | 
|   306 # define double sqlite_int64 |  | 
|   307 # define LONGDOUBLE_TYPE sqlite_int64 |  | 
|   308 # ifndef SQLITE_BIG_DBL |  | 
|   309 #   define SQLITE_BIG_DBL (((sqlite3_int64)1)<<50) |  | 
|   310 # endif |  | 
|   311 # define SQLITE_OMIT_DATETIME_FUNCS 1 |  | 
|   312 # define SQLITE_OMIT_TRACE 1 |  | 
|   313 # undef SQLITE_MIXED_ENDIAN_64BIT_FLOAT |  | 
|   314 # undef SQLITE_HAVE_ISNAN |  | 
|   315 #endif |  | 
|   316 #ifndef SQLITE_BIG_DBL |  | 
|   317 # define SQLITE_BIG_DBL (1e99) |  | 
|   318 #endif |  | 
|   319  |  | 
|   320 /* |  | 
|   321 ** OMIT_TEMPDB is set to 1 if SQLITE_OMIT_TEMPDB is defined, or 0 |  | 
|   322 ** afterward. Having this macro allows us to cause the C compiler  |  | 
|   323 ** to omit code used by TEMP tables without messy #ifndef statements. |  | 
|   324 */ |  | 
|   325 #ifdef SQLITE_OMIT_TEMPDB |  | 
|   326 #define OMIT_TEMPDB 1 |  | 
|   327 #else |  | 
|   328 #define OMIT_TEMPDB 0 |  | 
|   329 #endif |  | 
|   330  |  | 
|   331 /* |  | 
|   332 ** If the following macro is set to 1, then NULL values are considered |  | 
|   333 ** distinct when determining whether or not two entries are the same |  | 
|   334 ** in a UNIQUE index.  This is the way PostgreSQL, Oracle, DB2, MySQL, |  | 
|   335 ** OCELOT, and Firebird all work.  The SQL92 spec explicitly says this |  | 
|   336 ** is the way things are suppose to work. |  | 
|   337 ** |  | 
|   338 ** If the following macro is set to 0, the NULLs are indistinct for |  | 
|   339 ** a UNIQUE index.  In this mode, you can only have a single NULL entry |  | 
|   340 ** for a column declared UNIQUE.  This is the way Informix and SQL Server |  | 
|   341 ** work. |  | 
|   342 */ |  | 
|   343 #define NULL_DISTINCT_FOR_UNIQUE 1 |  | 
|   344  |  | 
|   345 /* |  | 
|   346 ** The "file format" number is an integer that is incremented whenever |  | 
|   347 ** the VDBE-level file format changes.  The following macros define the |  | 
|   348 ** the default file format for new databases and the maximum file format |  | 
|   349 ** that the library can read. |  | 
|   350 */ |  | 
|   351 #define SQLITE_MAX_FILE_FORMAT 4 |  | 
|   352 #ifndef SQLITE_DEFAULT_FILE_FORMAT |  | 
|   353 # define SQLITE_DEFAULT_FILE_FORMAT 1 |  | 
|   354 #endif |  | 
|   355  |  | 
|   356 #ifndef SQLITE_DEFAULT_RECURSIVE_TRIGGERS |  | 
|   357 # define SQLITE_DEFAULT_RECURSIVE_TRIGGERS 0 |  | 
|   358 #endif |  | 
|   359  |  | 
|   360 /* |  | 
|   361 ** Provide a default value for SQLITE_TEMP_STORE in case it is not specified |  | 
|   362 ** on the command-line |  | 
|   363 */ |  | 
|   364 #ifndef SQLITE_TEMP_STORE |  | 
|   365 # define SQLITE_TEMP_STORE 1 |  | 
|   366 #endif |  | 
|   367  |  | 
|   368 /* |  | 
|   369 ** GCC does not define the offsetof() macro so we'll have to do it |  | 
|   370 ** ourselves. |  | 
|   371 */ |  | 
|   372 #ifndef offsetof |  | 
|   373 #define offsetof(STRUCTURE,FIELD) ((int)((char*)&((STRUCTURE*)0)->FIELD)) |  | 
|   374 #endif |  | 
|   375  |  | 
|   376 /* |  | 
|   377 ** Check to see if this machine uses EBCDIC.  (Yes, believe it or |  | 
|   378 ** not, there are still machines out there that use EBCDIC.) |  | 
|   379 */ |  | 
|   380 #if 'A' == '\301' |  | 
|   381 # define SQLITE_EBCDIC 1 |  | 
|   382 #else |  | 
|   383 # define SQLITE_ASCII 1 |  | 
|   384 #endif |  | 
|   385  |  | 
|   386 /* |  | 
|   387 ** Integers of known sizes.  These typedefs might change for architectures |  | 
|   388 ** where the sizes very.  Preprocessor macros are available so that the |  | 
|   389 ** types can be conveniently redefined at compile-type.  Like this: |  | 
|   390 ** |  | 
|   391 **         cc '-DUINTPTR_TYPE=long long int' ... |  | 
|   392 */ |  | 
|   393 #ifndef UINT32_TYPE |  | 
|   394 # ifdef HAVE_UINT32_T |  | 
|   395 #  define UINT32_TYPE uint32_t |  | 
|   396 # else |  | 
|   397 #  define UINT32_TYPE unsigned int |  | 
|   398 # endif |  | 
|   399 #endif |  | 
|   400 #ifndef UINT16_TYPE |  | 
|   401 # ifdef HAVE_UINT16_T |  | 
|   402 #  define UINT16_TYPE uint16_t |  | 
|   403 # else |  | 
|   404 #  define UINT16_TYPE unsigned short int |  | 
|   405 # endif |  | 
|   406 #endif |  | 
|   407 #ifndef INT16_TYPE |  | 
|   408 # ifdef HAVE_INT16_T |  | 
|   409 #  define INT16_TYPE int16_t |  | 
|   410 # else |  | 
|   411 #  define INT16_TYPE short int |  | 
|   412 # endif |  | 
|   413 #endif |  | 
|   414 #ifndef UINT8_TYPE |  | 
|   415 # ifdef HAVE_UINT8_T |  | 
|   416 #  define UINT8_TYPE uint8_t |  | 
|   417 # else |  | 
|   418 #  define UINT8_TYPE unsigned char |  | 
|   419 # endif |  | 
|   420 #endif |  | 
|   421 #ifndef INT8_TYPE |  | 
|   422 # ifdef HAVE_INT8_T |  | 
|   423 #  define INT8_TYPE int8_t |  | 
|   424 # else |  | 
|   425 #  define INT8_TYPE signed char |  | 
|   426 # endif |  | 
|   427 #endif |  | 
|   428 #ifndef LONGDOUBLE_TYPE |  | 
|   429 # define LONGDOUBLE_TYPE long double |  | 
|   430 #endif |  | 
|   431 typedef sqlite_int64 i64;          /* 8-byte signed integer */ |  | 
|   432 typedef sqlite_uint64 u64;         /* 8-byte unsigned integer */ |  | 
|   433 typedef UINT32_TYPE u32;           /* 4-byte unsigned integer */ |  | 
|   434 typedef UINT16_TYPE u16;           /* 2-byte unsigned integer */ |  | 
|   435 typedef INT16_TYPE i16;            /* 2-byte signed integer */ |  | 
|   436 typedef UINT8_TYPE u8;             /* 1-byte unsigned integer */ |  | 
|   437 typedef INT8_TYPE i8;              /* 1-byte signed integer */ |  | 
|   438  |  | 
|   439 /* |  | 
|   440 ** SQLITE_MAX_U32 is a u64 constant that is the maximum u64 value |  | 
|   441 ** that can be stored in a u32 without loss of data.  The value |  | 
|   442 ** is 0x00000000ffffffff.  But because of quirks of some compilers, we |  | 
|   443 ** have to specify the value in the less intuitive manner shown: |  | 
|   444 */ |  | 
|   445 #define SQLITE_MAX_U32  ((((u64)1)<<32)-1) |  | 
|   446  |  | 
|   447 /* |  | 
|   448 ** Macros to determine whether the machine is big or little endian, |  | 
|   449 ** evaluated at runtime. |  | 
|   450 */ |  | 
|   451 #ifdef SQLITE_AMALGAMATION |  | 
|   452 const int sqlite3one = 1; |  | 
|   453 #else |  | 
|   454 extern const int sqlite3one; |  | 
|   455 #endif |  | 
|   456 #if defined(i386) || defined(__i386__) || defined(_M_IX86)\ |  | 
|   457                              || defined(__x86_64) || defined(__x86_64__) |  | 
|   458 # define SQLITE_BIGENDIAN    0 |  | 
|   459 # define SQLITE_LITTLEENDIAN 1 |  | 
|   460 # define SQLITE_UTF16NATIVE  SQLITE_UTF16LE |  | 
|   461 #else |  | 
|   462 # define SQLITE_BIGENDIAN    (*(char *)(&sqlite3one)==0) |  | 
|   463 # define SQLITE_LITTLEENDIAN (*(char *)(&sqlite3one)==1) |  | 
|   464 # define SQLITE_UTF16NATIVE (SQLITE_BIGENDIAN?SQLITE_UTF16BE:SQLITE_UTF16LE) |  | 
|   465 #endif |  | 
|   466  |  | 
|   467 /* |  | 
|   468 ** Constants for the largest and smallest possible 64-bit signed integers. |  | 
|   469 ** These macros are designed to work correctly on both 32-bit and 64-bit |  | 
|   470 ** compilers. |  | 
|   471 */ |  | 
|   472 #define LARGEST_INT64  (0xffffffff|(((i64)0x7fffffff)<<32)) |  | 
|   473 #define SMALLEST_INT64 (((i64)-1) - LARGEST_INT64) |  | 
|   474  |  | 
|   475 /*  |  | 
|   476 ** Round up a number to the next larger multiple of 8.  This is used |  | 
|   477 ** to force 8-byte alignment on 64-bit architectures. |  | 
|   478 */ |  | 
|   479 #define ROUND8(x)     (((x)+7)&~7) |  | 
|   480  |  | 
|   481 /* |  | 
|   482 ** Round down to the nearest multiple of 8 |  | 
|   483 */ |  | 
|   484 #define ROUNDDOWN8(x) ((x)&~7) |  | 
|   485  |  | 
|   486 /* |  | 
|   487 ** Assert that the pointer X is aligned to an 8-byte boundary. |  | 
|   488 */ |  | 
|   489 #define EIGHT_BYTE_ALIGNMENT(X)   ((((char*)(X) - (char*)0)&7)==0) |  | 
|   490  |  | 
|   491  |  | 
|   492 /* |  | 
|   493 ** An instance of the following structure is used to store the busy-handler |  | 
|   494 ** callback for a given sqlite handle.  |  | 
|   495 ** |  | 
|   496 ** The sqlite.busyHandler member of the sqlite struct contains the busy |  | 
|   497 ** callback for the database handle. Each pager opened via the sqlite |  | 
|   498 ** handle is passed a pointer to sqlite.busyHandler. The busy-handler |  | 
|   499 ** callback is currently invoked only from within pager.c. |  | 
|   500 */ |  | 
|   501 typedef struct BusyHandler BusyHandler; |  | 
|   502 struct BusyHandler { |  | 
|   503   int (*xFunc)(void *,int);  /* The busy callback */ |  | 
|   504   void *pArg;                /* First arg to busy callback */ |  | 
|   505   int nBusy;                 /* Incremented with each busy call */ |  | 
|   506 }; |  | 
|   507  |  | 
|   508 /* |  | 
|   509 ** Name of the master database table.  The master database table |  | 
|   510 ** is a special table that holds the names and attributes of all |  | 
|   511 ** user tables and indices. |  | 
|   512 */ |  | 
|   513 #define MASTER_NAME       "sqlite_master" |  | 
|   514 #define TEMP_MASTER_NAME  "sqlite_temp_master" |  | 
|   515  |  | 
|   516 /* |  | 
|   517 ** The root-page of the master database table. |  | 
|   518 */ |  | 
|   519 #define MASTER_ROOT       1 |  | 
|   520  |  | 
|   521 /* |  | 
|   522 ** The name of the schema table. |  | 
|   523 */ |  | 
|   524 #define SCHEMA_TABLE(x)  ((!OMIT_TEMPDB)&&(x==1)?TEMP_MASTER_NAME:MASTER_NAME) |  | 
|   525  |  | 
|   526 /* |  | 
|   527 ** A convenience macro that returns the number of elements in |  | 
|   528 ** an array. |  | 
|   529 */ |  | 
|   530 #define ArraySize(X)    ((int)(sizeof(X)/sizeof(X[0]))) |  | 
|   531  |  | 
|   532 /* |  | 
|   533 ** The following value as a destructor means to use sqlite3DbFree(). |  | 
|   534 ** This is an internal extension to SQLITE_STATIC and SQLITE_TRANSIENT. |  | 
|   535 */ |  | 
|   536 #define SQLITE_DYNAMIC   ((sqlite3_destructor_type)sqlite3DbFree) |  | 
|   537  |  | 
|   538 /* |  | 
|   539 ** When SQLITE_OMIT_WSD is defined, it means that the target platform does |  | 
|   540 ** not support Writable Static Data (WSD) such as global and static variables. |  | 
|   541 ** All variables must either be on the stack or dynamically allocated from |  | 
|   542 ** the heap.  When WSD is unsupported, the variable declarations scattered |  | 
|   543 ** throughout the SQLite code must become constants instead.  The SQLITE_WSD |  | 
|   544 ** macro is used for this purpose.  And instead of referencing the variable |  | 
|   545 ** directly, we use its constant as a key to lookup the run-time allocated |  | 
|   546 ** buffer that holds real variable.  The constant is also the initializer |  | 
|   547 ** for the run-time allocated buffer. |  | 
|   548 ** |  | 
|   549 ** In the usual case where WSD is supported, the SQLITE_WSD and GLOBAL |  | 
|   550 ** macros become no-ops and have zero performance impact. |  | 
|   551 */ |  | 
|   552 #ifdef SQLITE_OMIT_WSD |  | 
|   553   #define SQLITE_WSD const |  | 
|   554   #define GLOBAL(t,v) (*(t*)sqlite3_wsd_find((void*)&(v), sizeof(v))) |  | 
|   555   #define sqlite3GlobalConfig GLOBAL(struct Sqlite3Config, sqlite3Config) |  | 
|   556   int sqlite3_wsd_init(int N, int J); |  | 
|   557   void *sqlite3_wsd_find(void *K, int L); |  | 
|   558 #else |  | 
|   559   #define SQLITE_WSD  |  | 
|   560   #define GLOBAL(t,v) v |  | 
|   561   #define sqlite3GlobalConfig sqlite3Config |  | 
|   562 #endif |  | 
|   563  |  | 
|   564 /* |  | 
|   565 ** The following macros are used to suppress compiler warnings and to |  | 
|   566 ** make it clear to human readers when a function parameter is deliberately  |  | 
|   567 ** left unused within the body of a function. This usually happens when |  | 
|   568 ** a function is called via a function pointer. For example the  |  | 
|   569 ** implementation of an SQL aggregate step callback may not use the |  | 
|   570 ** parameter indicating the number of arguments passed to the aggregate, |  | 
|   571 ** if it knows that this is enforced elsewhere. |  | 
|   572 ** |  | 
|   573 ** When a function parameter is not used at all within the body of a function, |  | 
|   574 ** it is generally named "NotUsed" or "NotUsed2" to make things even clearer. |  | 
|   575 ** However, these macros may also be used to suppress warnings related to |  | 
|   576 ** parameters that may or may not be used depending on compilation options. |  | 
|   577 ** For example those parameters only used in assert() statements. In these |  | 
|   578 ** cases the parameters are named as per the usual conventions. |  | 
|   579 */ |  | 
|   580 #define UNUSED_PARAMETER(x) (void)(x) |  | 
|   581 #define UNUSED_PARAMETER2(x,y) UNUSED_PARAMETER(x),UNUSED_PARAMETER(y) |  | 
|   582  |  | 
|   583 /* |  | 
|   584 ** Forward references to structures |  | 
|   585 */ |  | 
|   586 typedef struct AggInfo AggInfo; |  | 
|   587 typedef struct AuthContext AuthContext; |  | 
|   588 typedef struct AutoincInfo AutoincInfo; |  | 
|   589 typedef struct Bitvec Bitvec; |  | 
|   590 typedef struct RowSet RowSet; |  | 
|   591 typedef struct CollSeq CollSeq; |  | 
|   592 typedef struct Column Column; |  | 
|   593 typedef struct Db Db; |  | 
|   594 typedef struct Schema Schema; |  | 
|   595 typedef struct Expr Expr; |  | 
|   596 typedef struct ExprList ExprList; |  | 
|   597 typedef struct ExprSpan ExprSpan; |  | 
|   598 typedef struct FKey FKey; |  | 
|   599 typedef struct FuncDef FuncDef; |  | 
|   600 typedef struct FuncDefHash FuncDefHash; |  | 
|   601 typedef struct IdList IdList; |  | 
|   602 typedef struct Index Index; |  | 
|   603 typedef struct IndexSample IndexSample; |  | 
|   604 typedef struct KeyClass KeyClass; |  | 
|   605 typedef struct KeyInfo KeyInfo; |  | 
|   606 typedef struct Lookaside Lookaside; |  | 
|   607 typedef struct LookasideSlot LookasideSlot; |  | 
|   608 typedef struct Module Module; |  | 
|   609 typedef struct NameContext NameContext; |  | 
|   610 typedef struct Parse Parse; |  | 
|   611 typedef struct Savepoint Savepoint; |  | 
|   612 typedef struct Select Select; |  | 
|   613 typedef struct SrcList SrcList; |  | 
|   614 typedef struct StrAccum StrAccum; |  | 
|   615 typedef struct Table Table; |  | 
|   616 typedef struct TableLock TableLock; |  | 
|   617 typedef struct Token Token; |  | 
|   618 typedef struct TriggerPrg TriggerPrg; |  | 
|   619 typedef struct TriggerStep TriggerStep; |  | 
|   620 typedef struct Trigger Trigger; |  | 
|   621 typedef struct UnpackedRecord UnpackedRecord; |  | 
|   622 typedef struct VTable VTable; |  | 
|   623 typedef struct Walker Walker; |  | 
|   624 typedef struct WherePlan WherePlan; |  | 
|   625 typedef struct WhereInfo WhereInfo; |  | 
|   626 typedef struct WhereLevel WhereLevel; |  | 
|   627  |  | 
|   628 /* |  | 
|   629 ** Defer sourcing vdbe.h and btree.h until after the "u8" and  |  | 
|   630 ** "BusyHandler" typedefs. vdbe.h also requires a few of the opaque |  | 
|   631 ** pointer types (i.e. FuncDef) defined above. |  | 
|   632 */ |  | 
|   633 #include "btree.h" |  | 
|   634 #include "vdbe.h" |  | 
|   635 #include "pager.h" |  | 
|   636 #include "pcache.h" |  | 
|   637  |  | 
|   638 #include "os.h" |  | 
|   639 #include "mutex.h" |  | 
|   640  |  | 
|   641  |  | 
|   642 /* |  | 
|   643 ** Each database file to be accessed by the system is an instance |  | 
|   644 ** of the following structure.  There are normally two of these structures |  | 
|   645 ** in the sqlite.aDb[] array.  aDb[0] is the main database file and |  | 
|   646 ** aDb[1] is the database file used to hold temporary tables.  Additional |  | 
|   647 ** databases may be attached. |  | 
|   648 */ |  | 
|   649 struct Db { |  | 
|   650   char *zName;         /* Name of this database */ |  | 
|   651   Btree *pBt;          /* The B*Tree structure for this database file */ |  | 
|   652   u8 inTrans;          /* 0: not writable.  1: Transaction.  2: Checkpoint */ |  | 
|   653   u8 safety_level;     /* How aggressive at syncing data to disk */ |  | 
|   654   Schema *pSchema;     /* Pointer to database schema (possibly shared) */ |  | 
|   655 }; |  | 
|   656  |  | 
|   657 /* |  | 
|   658 ** An instance of the following structure stores a database schema. |  | 
|   659 ** |  | 
|   660 ** If there are no virtual tables configured in this schema, the |  | 
|   661 ** Schema.db variable is set to NULL. After the first virtual table |  | 
|   662 ** has been added, it is set to point to the database connection  |  | 
|   663 ** used to create the connection. Once a virtual table has been |  | 
|   664 ** added to the Schema structure and the Schema.db variable populated,  |  | 
|   665 ** only that database connection may use the Schema to prepare  |  | 
|   666 ** statements. |  | 
|   667 */ |  | 
|   668 struct Schema { |  | 
|   669   int schema_cookie;   /* Database schema version number for this file */ |  | 
|   670   Hash tblHash;        /* All tables indexed by name */ |  | 
|   671   Hash idxHash;        /* All (named) indices indexed by name */ |  | 
|   672   Hash trigHash;       /* All triggers indexed by name */ |  | 
|   673   Table *pSeqTab;      /* The sqlite_sequence table used by AUTOINCREMENT */ |  | 
|   674   u8 file_format;      /* Schema format version for this file */ |  | 
|   675   u8 enc;              /* Text encoding used by this database */ |  | 
|   676   u16 flags;           /* Flags associated with this schema */ |  | 
|   677   int cache_size;      /* Number of pages to use in the cache */ |  | 
|   678 #ifndef SQLITE_OMIT_VIRTUALTABLE |  | 
|   679   sqlite3 *db;         /* "Owner" connection. See comment above */ |  | 
|   680 #endif |  | 
|   681 }; |  | 
|   682  |  | 
|   683 /* |  | 
|   684 ** These macros can be used to test, set, or clear bits in the  |  | 
|   685 ** Db.flags field. |  | 
|   686 */ |  | 
|   687 #define DbHasProperty(D,I,P)     (((D)->aDb[I].pSchema->flags&(P))==(P)) |  | 
|   688 #define DbHasAnyProperty(D,I,P)  (((D)->aDb[I].pSchema->flags&(P))!=0) |  | 
|   689 #define DbSetProperty(D,I,P)     (D)->aDb[I].pSchema->flags|=(P) |  | 
|   690 #define DbClearProperty(D,I,P)   (D)->aDb[I].pSchema->flags&=~(P) |  | 
|   691  |  | 
|   692 /* |  | 
|   693 ** Allowed values for the DB.flags field. |  | 
|   694 ** |  | 
|   695 ** The DB_SchemaLoaded flag is set after the database schema has been |  | 
|   696 ** read into internal hash tables. |  | 
|   697 ** |  | 
|   698 ** DB_UnresetViews means that one or more views have column names that |  | 
|   699 ** have been filled out.  If the schema changes, these column names might |  | 
|   700 ** changes and so the view will need to be reset. |  | 
|   701 */ |  | 
|   702 #define DB_SchemaLoaded    0x0001  /* The schema has been loaded */ |  | 
|   703 #define DB_UnresetViews    0x0002  /* Some views have defined column names */ |  | 
|   704 #define DB_Empty           0x0004  /* The file is empty (length 0 bytes) */ |  | 
|   705  |  | 
|   706 /* |  | 
|   707 ** The number of different kinds of things that can be limited |  | 
|   708 ** using the sqlite3_limit() interface. |  | 
|   709 */ |  | 
|   710 #define SQLITE_N_LIMIT (SQLITE_LIMIT_TRIGGER_DEPTH+1) |  | 
|   711  |  | 
|   712 /* |  | 
|   713 ** Lookaside malloc is a set of fixed-size buffers that can be used |  | 
|   714 ** to satisfy small transient memory allocation requests for objects |  | 
|   715 ** associated with a particular database connection.  The use of |  | 
|   716 ** lookaside malloc provides a significant performance enhancement |  | 
|   717 ** (approx 10%) by avoiding numerous malloc/free requests while parsing |  | 
|   718 ** SQL statements. |  | 
|   719 ** |  | 
|   720 ** The Lookaside structure holds configuration information about the |  | 
|   721 ** lookaside malloc subsystem.  Each available memory allocation in |  | 
|   722 ** the lookaside subsystem is stored on a linked list of LookasideSlot |  | 
|   723 ** objects. |  | 
|   724 ** |  | 
|   725 ** Lookaside allocations are only allowed for objects that are associated |  | 
|   726 ** with a particular database connection.  Hence, schema information cannot |  | 
|   727 ** be stored in lookaside because in shared cache mode the schema information |  | 
|   728 ** is shared by multiple database connections.  Therefore, while parsing |  | 
|   729 ** schema information, the Lookaside.bEnabled flag is cleared so that |  | 
|   730 ** lookaside allocations are not used to construct the schema objects. |  | 
|   731 */ |  | 
|   732 struct Lookaside { |  | 
|   733   u16 sz;                 /* Size of each buffer in bytes */ |  | 
|   734   u8 bEnabled;            /* False to disable new lookaside allocations */ |  | 
|   735   u8 bMalloced;           /* True if pStart obtained from sqlite3_malloc() */ |  | 
|   736   int nOut;               /* Number of buffers currently checked out */ |  | 
|   737   int mxOut;              /* Highwater mark for nOut */ |  | 
|   738   LookasideSlot *pFree;   /* List of available buffers */ |  | 
|   739   void *pStart;           /* First byte of available memory space */ |  | 
|   740   void *pEnd;             /* First byte past end of available space */ |  | 
|   741 }; |  | 
|   742 struct LookasideSlot { |  | 
|   743   LookasideSlot *pNext;    /* Next buffer in the list of free buffers */ |  | 
|   744 }; |  | 
|   745  |  | 
|   746 /* |  | 
|   747 ** A hash table for function definitions. |  | 
|   748 ** |  | 
|   749 ** Hash each FuncDef structure into one of the FuncDefHash.a[] slots. |  | 
|   750 ** Collisions are on the FuncDef.pHash chain. |  | 
|   751 */ |  | 
|   752 struct FuncDefHash { |  | 
|   753   FuncDef *a[23];       /* Hash table for functions */ |  | 
|   754 }; |  | 
|   755  |  | 
|   756 /* |  | 
|   757 ** Each database is an instance of the following structure. |  | 
|   758 ** |  | 
|   759 ** The sqlite.lastRowid records the last insert rowid generated by an |  | 
|   760 ** insert statement.  Inserts on views do not affect its value.  Each |  | 
|   761 ** trigger has its own context, so that lastRowid can be updated inside |  | 
|   762 ** triggers as usual.  The previous value will be restored once the trigger |  | 
|   763 ** exits.  Upon entering a before or instead of trigger, lastRowid is no |  | 
|   764 ** longer (since after version 2.8.12) reset to -1. |  | 
|   765 ** |  | 
|   766 ** The sqlite.nChange does not count changes within triggers and keeps no |  | 
|   767 ** context.  It is reset at start of sqlite3_exec. |  | 
|   768 ** The sqlite.lsChange represents the number of changes made by the last |  | 
|   769 ** insert, update, or delete statement.  It remains constant throughout the |  | 
|   770 ** length of a statement and is then updated by OP_SetCounts.  It keeps a |  | 
|   771 ** context stack just like lastRowid so that the count of changes |  | 
|   772 ** within a trigger is not seen outside the trigger.  Changes to views do not |  | 
|   773 ** affect the value of lsChange. |  | 
|   774 ** The sqlite.csChange keeps track of the number of current changes (since |  | 
|   775 ** the last statement) and is used to update sqlite_lsChange. |  | 
|   776 ** |  | 
|   777 ** The member variables sqlite.errCode, sqlite.zErrMsg and sqlite.zErrMsg16 |  | 
|   778 ** store the most recent error code and, if applicable, string. The |  | 
|   779 ** internal function sqlite3Error() is used to set these variables |  | 
|   780 ** consistently. |  | 
|   781 */ |  | 
|   782 struct sqlite3 { |  | 
|   783   sqlite3_vfs *pVfs;            /* OS Interface */ |  | 
|   784   int nDb;                      /* Number of backends currently in use */ |  | 
|   785   Db *aDb;                      /* All backends */ |  | 
|   786   int flags;                    /* Miscellaneous flags. See below */ |  | 
|   787   int openFlags;                /* Flags passed to sqlite3_vfs.xOpen() */ |  | 
|   788   int errCode;                  /* Most recent error code (SQLITE_*) */ |  | 
|   789   int errMask;                  /* & result codes with this before returning */ |  | 
|   790   u8 autoCommit;                /* The auto-commit flag. */ |  | 
|   791   u8 temp_store;                /* 1: file 2: memory 0: default */ |  | 
|   792   u8 mallocFailed;              /* True if we have seen a malloc failure */ |  | 
|   793   u8 dfltLockMode;              /* Default locking-mode for attached dbs */ |  | 
|   794   u8 dfltJournalMode;           /* Default journal mode for attached dbs */ |  | 
|   795   signed char nextAutovac;      /* Autovac setting after VACUUM if >=0 */ |  | 
|   796   int nextPagesize;             /* Pagesize after VACUUM if >0 */ |  | 
|   797   int nTable;                   /* Number of tables in the database */ |  | 
|   798   CollSeq *pDfltColl;           /* The default collating sequence (BINARY) */ |  | 
|   799   i64 lastRowid;                /* ROWID of most recent insert (see above) */ |  | 
|   800   u32 magic;                    /* Magic number for detect library misuse */ |  | 
|   801   int nChange;                  /* Value returned by sqlite3_changes() */ |  | 
|   802   int nTotalChange;             /* Value returned by sqlite3_total_changes() */ |  | 
|   803   sqlite3_mutex *mutex;         /* Connection mutex */ |  | 
|   804   int aLimit[SQLITE_N_LIMIT];   /* Limits */ |  | 
|   805   struct sqlite3InitInfo {      /* Information used during initialization */ |  | 
|   806     int iDb;                    /* When back is being initialized */ |  | 
|   807     int newTnum;                /* Rootpage of table being initialized */ |  | 
|   808     u8 busy;                    /* TRUE if currently initializing */ |  | 
|   809     u8 orphanTrigger;           /* Last statement is orphaned TEMP trigger */ |  | 
|   810   } init; |  | 
|   811   int nExtension;               /* Number of loaded extensions */ |  | 
|   812   void **aExtension;            /* Array of shared library handles */ |  | 
|   813   struct Vdbe *pVdbe;           /* List of active virtual machines */ |  | 
|   814   int activeVdbeCnt;            /* Number of VDBEs currently executing */ |  | 
|   815   int writeVdbeCnt;             /* Number of active VDBEs that are writing */ |  | 
|   816   void (*xTrace)(void*,const char*);        /* Trace function */ |  | 
|   817   void *pTraceArg;                          /* Argument to the trace function */ |  | 
|   818   void (*xProfile)(void*,const char*,u64);  /* Profiling function */ |  | 
|   819   void *pProfileArg;                        /* Argument to profile function */ |  | 
|   820   void *pCommitArg;                 /* Argument to xCommitCallback() */    |  | 
|   821   int (*xCommitCallback)(void*);    /* Invoked at every commit. */ |  | 
|   822   void *pRollbackArg;               /* Argument to xRollbackCallback() */    |  | 
|   823   void (*xRollbackCallback)(void*); /* Invoked at every commit. */ |  | 
|   824   void *pUpdateArg; |  | 
|   825   void (*xUpdateCallback)(void*,int, const char*,const char*,sqlite_int64); |  | 
|   826   void(*xCollNeeded)(void*,sqlite3*,int eTextRep,const char*); |  | 
|   827   void(*xCollNeeded16)(void*,sqlite3*,int eTextRep,const void*); |  | 
|   828   void *pCollNeededArg; |  | 
|   829   sqlite3_value *pErr;          /* Most recent error message */ |  | 
|   830   char *zErrMsg;                /* Most recent error message (UTF-8 encoded) */ |  | 
|   831   char *zErrMsg16;              /* Most recent error message (UTF-16 encoded) */ |  | 
|   832   union { |  | 
|   833     volatile int isInterrupted; /* True if sqlite3_interrupt has been called */ |  | 
|   834     double notUsed1;            /* Spacer */ |  | 
|   835   } u1; |  | 
|   836   Lookaside lookaside;          /* Lookaside malloc configuration */ |  | 
|   837 #ifndef SQLITE_OMIT_AUTHORIZATION |  | 
|   838   int (*xAuth)(void*,int,const char*,const char*,const char*,const char*); |  | 
|   839                                 /* Access authorization function */ |  | 
|   840   void *pAuthArg;               /* 1st argument to the access auth function */ |  | 
|   841 #endif |  | 
|   842 #ifndef SQLITE_OMIT_PROGRESS_CALLBACK |  | 
|   843   int (*xProgress)(void *);     /* The progress callback */ |  | 
|   844   void *pProgressArg;           /* Argument to the progress callback */ |  | 
|   845   int nProgressOps;             /* Number of opcodes for progress callback */ |  | 
|   846 #endif |  | 
|   847 #ifndef SQLITE_OMIT_VIRTUALTABLE |  | 
|   848   Hash aModule;                 /* populated by sqlite3_create_module() */ |  | 
|   849   Table *pVTab;                 /* vtab with active Connect/Create method */ |  | 
|   850   VTable **aVTrans;             /* Virtual tables with open transactions */ |  | 
|   851   int nVTrans;                  /* Allocated size of aVTrans */ |  | 
|   852   VTable *pDisconnect;    /* Disconnect these in next sqlite3_prepare() */ |  | 
|   853 #endif |  | 
|   854   FuncDefHash aFunc;            /* Hash table of connection functions */ |  | 
|   855   Hash aCollSeq;                /* All collating sequences */ |  | 
|   856   BusyHandler busyHandler;      /* Busy callback */ |  | 
|   857   int busyTimeout;              /* Busy handler timeout, in msec */ |  | 
|   858   Db aDbStatic[2];              /* Static space for the 2 default backends */ |  | 
|   859   Savepoint *pSavepoint;        /* List of active savepoints */ |  | 
|   860   int nSavepoint;               /* Number of non-transaction savepoints */ |  | 
|   861   int nStatement;               /* Number of nested statement-transactions  */ |  | 
|   862   u8 isTransactionSavepoint;    /* True if the outermost savepoint is a TS */ |  | 
|   863  |  | 
|   864 #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY |  | 
|   865   /* The following variables are all protected by the STATIC_MASTER  |  | 
|   866   ** mutex, not by sqlite3.mutex. They are used by code in notify.c.  |  | 
|   867   ** |  | 
|   868   ** When X.pUnlockConnection==Y, that means that X is waiting for Y to |  | 
|   869   ** unlock so that it can proceed. |  | 
|   870   ** |  | 
|   871   ** When X.pBlockingConnection==Y, that means that something that X tried |  | 
|   872   ** tried to do recently failed with an SQLITE_LOCKED error due to locks |  | 
|   873   ** held by Y. |  | 
|   874   */ |  | 
|   875   sqlite3 *pBlockingConnection; /* Connection that caused SQLITE_LOCKED */ |  | 
|   876   sqlite3 *pUnlockConnection;           /* Connection to watch for unlock */ |  | 
|   877   void *pUnlockArg;                     /* Argument to xUnlockNotify */ |  | 
|   878   void (*xUnlockNotify)(void **, int);  /* Unlock notify callback */ |  | 
|   879   sqlite3 *pNextBlocked;        /* Next in list of all blocked connections */ |  | 
|   880 #endif |  | 
|   881 }; |  | 
|   882  |  | 
|   883 /* |  | 
|   884 ** A macro to discover the encoding of a database. |  | 
|   885 */ |  | 
|   886 #define ENC(db) ((db)->aDb[0].pSchema->enc) |  | 
|   887  |  | 
|   888 /* |  | 
|   889 ** Possible values for the sqlite.flags and or Db.flags fields. |  | 
|   890 ** |  | 
|   891 ** On sqlite.flags, the SQLITE_InTrans value means that we have |  | 
|   892 ** executed a BEGIN.  On Db.flags, SQLITE_InTrans means a statement |  | 
|   893 ** transaction is active on that particular database file. |  | 
|   894 */ |  | 
|   895 #define SQLITE_VdbeTrace      0x00000001  /* True to trace VDBE execution */ |  | 
|   896 #define SQLITE_InTrans        0x00000008  /* True if in a transaction */ |  | 
|   897 #define SQLITE_InternChanges  0x00000010  /* Uncommitted Hash table changes */ |  | 
|   898 #define SQLITE_FullColNames   0x00000020  /* Show full column names on SELECT */ |  | 
|   899 #define SQLITE_ShortColNames  0x00000040  /* Show short columns names */ |  | 
|   900 #define SQLITE_CountRows      0x00000080  /* Count rows changed by INSERT, */ |  | 
|   901                                           /*   DELETE, or UPDATE and return */ |  | 
|   902                                           /*   the count using a callback. */ |  | 
|   903 #define SQLITE_NullCallback   0x00000100  /* Invoke the callback once if the */ |  | 
|   904                                           /*   result set is empty */ |  | 
|   905 #define SQLITE_SqlTrace       0x00000200  /* Debug print SQL as it executes */ |  | 
|   906 #define SQLITE_VdbeListing    0x00000400  /* Debug listings of VDBE programs */ |  | 
|   907 #define SQLITE_WriteSchema    0x00000800  /* OK to update SQLITE_MASTER */ |  | 
|   908 #define SQLITE_NoReadlock     0x00001000  /* Readlocks are omitted when  |  | 
|   909                                           ** accessing read-only databases */ |  | 
|   910 #define SQLITE_IgnoreChecks   0x00002000  /* Do not enforce check constraints */ |  | 
|   911 #define SQLITE_ReadUncommitted 0x00004000 /* For shared-cache mode */ |  | 
|   912 #define SQLITE_LegacyFileFmt  0x00008000  /* Create new databases in format 1 */ |  | 
|   913 #define SQLITE_FullFSync      0x00010000  /* Use full fsync on the backend */ |  | 
|   914 #define SQLITE_LoadExtension  0x00020000  /* Enable load_extension */ |  | 
|   915  |  | 
|   916 #define SQLITE_RecoveryMode   0x00040000  /* Ignore schema errors */ |  | 
|   917 #define SQLITE_ReverseOrder   0x00100000  /* Reverse unordered SELECTs */ |  | 
|   918 #define SQLITE_RecTriggers    0x00200000  /* Enable recursive triggers */ |  | 
|   919  |  | 
|   920 /* |  | 
|   921 ** Possible values for the sqlite.magic field. |  | 
|   922 ** The numbers are obtained at random and have no special meaning, other |  | 
|   923 ** than being distinct from one another. |  | 
|   924 */ |  | 
|   925 #define SQLITE_MAGIC_OPEN     0xa029a697  /* Database is open */ |  | 
|   926 #define SQLITE_MAGIC_CLOSED   0x9f3c2d33  /* Database is closed */ |  | 
|   927 #define SQLITE_MAGIC_SICK     0x4b771290  /* Error and awaiting close */ |  | 
|   928 #define SQLITE_MAGIC_BUSY     0xf03b7906  /* Database currently in use */ |  | 
|   929 #define SQLITE_MAGIC_ERROR    0xb5357930  /* An SQLITE_MISUSE error occurred */ |  | 
|   930  |  | 
|   931 /* |  | 
|   932 ** Each SQL function is defined by an instance of the following |  | 
|   933 ** structure.  A pointer to this structure is stored in the sqlite.aFunc |  | 
|   934 ** hash table.  When multiple functions have the same name, the hash table |  | 
|   935 ** points to a linked list of these structures. |  | 
|   936 */ |  | 
|   937 struct FuncDef { |  | 
|   938   i16 nArg;            /* Number of arguments.  -1 means unlimited */ |  | 
|   939   u8 iPrefEnc;         /* Preferred text encoding (SQLITE_UTF8, 16LE, 16BE) */ |  | 
|   940   u8 flags;            /* Some combination of SQLITE_FUNC_* */ |  | 
|   941   void *pUserData;     /* User data parameter */ |  | 
|   942   FuncDef *pNext;      /* Next function with same name */ |  | 
|   943   void (*xFunc)(sqlite3_context*,int,sqlite3_value**); /* Regular function */ |  | 
|   944   void (*xStep)(sqlite3_context*,int,sqlite3_value**); /* Aggregate step */ |  | 
|   945   void (*xFinalize)(sqlite3_context*);                /* Aggregate finalizer */ |  | 
|   946   char *zName;         /* SQL name of the function. */ |  | 
|   947   FuncDef *pHash;      /* Next with a different name but the same hash */ |  | 
|   948 }; |  | 
|   949  |  | 
|   950 /* |  | 
|   951 ** Possible values for FuncDef.flags |  | 
|   952 */ |  | 
|   953 #define SQLITE_FUNC_LIKE     0x01 /* Candidate for the LIKE optimization */ |  | 
|   954 #define SQLITE_FUNC_CASE     0x02 /* Case-sensitive LIKE-type function */ |  | 
|   955 #define SQLITE_FUNC_EPHEM    0x04 /* Ephemeral.  Delete with VDBE */ |  | 
|   956 #define SQLITE_FUNC_NEEDCOLL 0x08 /* sqlite3GetFuncCollSeq() might be called */ |  | 
|   957 #define SQLITE_FUNC_PRIVATE  0x10 /* Allowed for internal use only */ |  | 
|   958 #define SQLITE_FUNC_COUNT    0x20 /* Built-in count(*) aggregate */ |  | 
|   959  |  | 
|   960 /* |  | 
|   961 ** The following three macros, FUNCTION(), LIKEFUNC() and AGGREGATE() are |  | 
|   962 ** used to create the initializers for the FuncDef structures. |  | 
|   963 ** |  | 
|   964 **   FUNCTION(zName, nArg, iArg, bNC, xFunc) |  | 
|   965 **     Used to create a scalar function definition of a function zName  |  | 
|   966 **     implemented by C function xFunc that accepts nArg arguments. The |  | 
|   967 **     value passed as iArg is cast to a (void*) and made available |  | 
|   968 **     as the user-data (sqlite3_user_data()) for the function. If  |  | 
|   969 **     argument bNC is true, then the SQLITE_FUNC_NEEDCOLL flag is set. |  | 
|   970 ** |  | 
|   971 **   AGGREGATE(zName, nArg, iArg, bNC, xStep, xFinal) |  | 
|   972 **     Used to create an aggregate function definition implemented by |  | 
|   973 **     the C functions xStep and xFinal. The first four parameters |  | 
|   974 **     are interpreted in the same way as the first 4 parameters to |  | 
|   975 **     FUNCTION(). |  | 
|   976 ** |  | 
|   977 **   LIKEFUNC(zName, nArg, pArg, flags) |  | 
|   978 **     Used to create a scalar function definition of a function zName  |  | 
|   979 **     that accepts nArg arguments and is implemented by a call to C  |  | 
|   980 **     function likeFunc. Argument pArg is cast to a (void *) and made |  | 
|   981 **     available as the function user-data (sqlite3_user_data()). The |  | 
|   982 **     FuncDef.flags variable is set to the value passed as the flags |  | 
|   983 **     parameter. |  | 
|   984 */ |  | 
|   985 #define FUNCTION(zName, nArg, iArg, bNC, xFunc) \ |  | 
|   986   {nArg, SQLITE_UTF8, bNC*SQLITE_FUNC_NEEDCOLL, \ |  | 
|   987    SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, #zName, 0} |  | 
|   988 #define STR_FUNCTION(zName, nArg, pArg, bNC, xFunc) \ |  | 
|   989   {nArg, SQLITE_UTF8, bNC*SQLITE_FUNC_NEEDCOLL, \ |  | 
|   990    pArg, 0, xFunc, 0, 0, #zName, 0} |  | 
|   991 #define LIKEFUNC(zName, nArg, arg, flags) \ |  | 
|   992   {nArg, SQLITE_UTF8, flags, (void *)arg, 0, likeFunc, 0, 0, #zName, 0} |  | 
|   993 #define AGGREGATE(zName, nArg, arg, nc, xStep, xFinal) \ |  | 
|   994   {nArg, SQLITE_UTF8, nc*SQLITE_FUNC_NEEDCOLL, \ |  | 
|   995    SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,#zName,0} |  | 
|   996  |  | 
|   997 /* |  | 
|   998 ** All current savepoints are stored in a linked list starting at |  | 
|   999 ** sqlite3.pSavepoint. The first element in the list is the most recently |  | 
|  1000 ** opened savepoint. Savepoints are added to the list by the vdbe |  | 
|  1001 ** OP_Savepoint instruction. |  | 
|  1002 */ |  | 
|  1003 struct Savepoint { |  | 
|  1004   char *zName;                        /* Savepoint name (nul-terminated) */ |  | 
|  1005   Savepoint *pNext;                   /* Parent savepoint (if any) */ |  | 
|  1006 }; |  | 
|  1007  |  | 
|  1008 /* |  | 
|  1009 ** The following are used as the second parameter to sqlite3Savepoint(), |  | 
|  1010 ** and as the P1 argument to the OP_Savepoint instruction. |  | 
|  1011 */ |  | 
|  1012 #define SAVEPOINT_BEGIN      0 |  | 
|  1013 #define SAVEPOINT_RELEASE    1 |  | 
|  1014 #define SAVEPOINT_ROLLBACK   2 |  | 
|  1015  |  | 
|  1016  |  | 
|  1017 /* |  | 
|  1018 ** Each SQLite module (virtual table definition) is defined by an |  | 
|  1019 ** instance of the following structure, stored in the sqlite3.aModule |  | 
|  1020 ** hash table. |  | 
|  1021 */ |  | 
|  1022 struct Module { |  | 
|  1023   const sqlite3_module *pModule;       /* Callback pointers */ |  | 
|  1024   const char *zName;                   /* Name passed to create_module() */ |  | 
|  1025   void *pAux;                          /* pAux passed to create_module() */ |  | 
|  1026   void (*xDestroy)(void *);            /* Module destructor function */ |  | 
|  1027 }; |  | 
|  1028  |  | 
|  1029 /* |  | 
|  1030 ** information about each column of an SQL table is held in an instance |  | 
|  1031 ** of this structure. |  | 
|  1032 */ |  | 
|  1033 struct Column { |  | 
|  1034   char *zName;     /* Name of this column */ |  | 
|  1035   Expr *pDflt;     /* Default value of this column */ |  | 
|  1036   char *zDflt;     /* Original text of the default value */ |  | 
|  1037   char *zType;     /* Data type for this column */ |  | 
|  1038   char *zColl;     /* Collating sequence.  If NULL, use the default */ |  | 
|  1039   u8 notNull;      /* True if there is a NOT NULL constraint */ |  | 
|  1040   u8 isPrimKey;    /* True if this column is part of the PRIMARY KEY */ |  | 
|  1041   char affinity;   /* One of the SQLITE_AFF_... values */ |  | 
|  1042 #ifndef SQLITE_OMIT_VIRTUALTABLE |  | 
|  1043   u8 isHidden;     /* True if this column is 'hidden' */ |  | 
|  1044 #endif |  | 
|  1045 }; |  | 
|  1046  |  | 
|  1047 /* |  | 
|  1048 ** A "Collating Sequence" is defined by an instance of the following |  | 
|  1049 ** structure. Conceptually, a collating sequence consists of a name and |  | 
|  1050 ** a comparison routine that defines the order of that sequence. |  | 
|  1051 ** |  | 
|  1052 ** There may two separate implementations of the collation function, one |  | 
|  1053 ** that processes text in UTF-8 encoding (CollSeq.xCmp) and another that |  | 
|  1054 ** processes text encoded in UTF-16 (CollSeq.xCmp16), using the machine |  | 
|  1055 ** native byte order. When a collation sequence is invoked, SQLite selects |  | 
|  1056 ** the version that will require the least expensive encoding |  | 
|  1057 ** translations, if any. |  | 
|  1058 ** |  | 
|  1059 ** The CollSeq.pUser member variable is an extra parameter that passed in |  | 
|  1060 ** as the first argument to the UTF-8 comparison function, xCmp. |  | 
|  1061 ** CollSeq.pUser16 is the equivalent for the UTF-16 comparison function, |  | 
|  1062 ** xCmp16. |  | 
|  1063 ** |  | 
|  1064 ** If both CollSeq.xCmp and CollSeq.xCmp16 are NULL, it means that the |  | 
|  1065 ** collating sequence is undefined.  Indices built on an undefined |  | 
|  1066 ** collating sequence may not be read or written. |  | 
|  1067 */ |  | 
|  1068 struct CollSeq { |  | 
|  1069   char *zName;          /* Name of the collating sequence, UTF-8 encoded */ |  | 
|  1070   u8 enc;               /* Text encoding handled by xCmp() */ |  | 
|  1071   u8 type;              /* One of the SQLITE_COLL_... values below */ |  | 
|  1072   void *pUser;          /* First argument to xCmp() */ |  | 
|  1073   int (*xCmp)(void*,int, const void*, int, const void*); |  | 
|  1074   void (*xDel)(void*);  /* Destructor for pUser */ |  | 
|  1075 }; |  | 
|  1076  |  | 
|  1077 /* |  | 
|  1078 ** Allowed values of CollSeq.type: |  | 
|  1079 */ |  | 
|  1080 #define SQLITE_COLL_BINARY  1  /* The default memcmp() collating sequence */ |  | 
|  1081 #define SQLITE_COLL_NOCASE  2  /* The built-in NOCASE collating sequence */ |  | 
|  1082 #define SQLITE_COLL_REVERSE 3  /* The built-in REVERSE collating sequence */ |  | 
|  1083 #define SQLITE_COLL_USER    0  /* Any other user-defined collating sequence */ |  | 
|  1084  |  | 
|  1085 /* |  | 
|  1086 ** A sort order can be either ASC or DESC. |  | 
|  1087 */ |  | 
|  1088 #define SQLITE_SO_ASC       0  /* Sort in ascending order */ |  | 
|  1089 #define SQLITE_SO_DESC      1  /* Sort in ascending order */ |  | 
|  1090  |  | 
|  1091 /* |  | 
|  1092 ** Column affinity types. |  | 
|  1093 ** |  | 
|  1094 ** These used to have mnemonic name like 'i' for SQLITE_AFF_INTEGER and |  | 
|  1095 ** 't' for SQLITE_AFF_TEXT.  But we can save a little space and improve |  | 
|  1096 ** the speed a little by numbering the values consecutively.   |  | 
|  1097 ** |  | 
|  1098 ** But rather than start with 0 or 1, we begin with 'a'.  That way, |  | 
|  1099 ** when multiple affinity types are concatenated into a string and |  | 
|  1100 ** used as the P4 operand, they will be more readable. |  | 
|  1101 ** |  | 
|  1102 ** Note also that the numeric types are grouped together so that testing |  | 
|  1103 ** for a numeric type is a single comparison. |  | 
|  1104 */ |  | 
|  1105 #define SQLITE_AFF_TEXT     'a' |  | 
|  1106 #define SQLITE_AFF_NONE     'b' |  | 
|  1107 #define SQLITE_AFF_NUMERIC  'c' |  | 
|  1108 #define SQLITE_AFF_INTEGER  'd' |  | 
|  1109 #define SQLITE_AFF_REAL     'e' |  | 
|  1110  |  | 
|  1111 #define sqlite3IsNumericAffinity(X)  ((X)>=SQLITE_AFF_NUMERIC) |  | 
|  1112  |  | 
|  1113 /* |  | 
|  1114 ** The SQLITE_AFF_MASK values masks off the significant bits of an |  | 
|  1115 ** affinity value.  |  | 
|  1116 */ |  | 
|  1117 #define SQLITE_AFF_MASK     0x67 |  | 
|  1118  |  | 
|  1119 /* |  | 
|  1120 ** Additional bit values that can be ORed with an affinity without |  | 
|  1121 ** changing the affinity. |  | 
|  1122 */ |  | 
|  1123 #define SQLITE_JUMPIFNULL   0x08  /* jumps if either operand is NULL */ |  | 
|  1124 #define SQLITE_STOREP2      0x10  /* Store result in reg[P2] rather than jump */ |  | 
|  1125  |  | 
|  1126 /* |  | 
|  1127 ** An object of this type is created for each virtual table present in |  | 
|  1128 ** the database schema.  |  | 
|  1129 ** |  | 
|  1130 ** If the database schema is shared, then there is one instance of this |  | 
|  1131 ** structure for each database connection (sqlite3*) that uses the shared |  | 
|  1132 ** schema. This is because each database connection requires its own unique |  | 
|  1133 ** instance of the sqlite3_vtab* handle used to access the virtual table  |  | 
|  1134 ** implementation. sqlite3_vtab* handles can not be shared between  |  | 
|  1135 ** database connections, even when the rest of the in-memory database  |  | 
|  1136 ** schema is shared, as the implementation often stores the database |  | 
|  1137 ** connection handle passed to it via the xConnect() or xCreate() method |  | 
|  1138 ** during initialization internally. This database connection handle may |  | 
|  1139 ** then used by the virtual table implementation to access real tables  |  | 
|  1140 ** within the database. So that they appear as part of the callers  |  | 
|  1141 ** transaction, these accesses need to be made via the same database  |  | 
|  1142 ** connection as that used to execute SQL operations on the virtual table. |  | 
|  1143 ** |  | 
|  1144 ** All VTable objects that correspond to a single table in a shared |  | 
|  1145 ** database schema are initially stored in a linked-list pointed to by |  | 
|  1146 ** the Table.pVTable member variable of the corresponding Table object. |  | 
|  1147 ** When an sqlite3_prepare() operation is required to access the virtual |  | 
|  1148 ** table, it searches the list for the VTable that corresponds to the |  | 
|  1149 ** database connection doing the preparing so as to use the correct |  | 
|  1150 ** sqlite3_vtab* handle in the compiled query. |  | 
|  1151 ** |  | 
|  1152 ** When an in-memory Table object is deleted (for example when the |  | 
|  1153 ** schema is being reloaded for some reason), the VTable objects are not  |  | 
|  1154 ** deleted and the sqlite3_vtab* handles are not xDisconnect()ed  |  | 
|  1155 ** immediately. Instead, they are moved from the Table.pVTable list to |  | 
|  1156 ** another linked list headed by the sqlite3.pDisconnect member of the |  | 
|  1157 ** corresponding sqlite3 structure. They are then deleted/xDisconnected  |  | 
|  1158 ** next time a statement is prepared using said sqlite3*. This is done |  | 
|  1159 ** to avoid deadlock issues involving multiple sqlite3.mutex mutexes. |  | 
|  1160 ** Refer to comments above function sqlite3VtabUnlockList() for an |  | 
|  1161 ** explanation as to why it is safe to add an entry to an sqlite3.pDisconnect |  | 
|  1162 ** list without holding the corresponding sqlite3.mutex mutex. |  | 
|  1163 ** |  | 
|  1164 ** The memory for objects of this type is always allocated by  |  | 
|  1165 ** sqlite3DbMalloc(), using the connection handle stored in VTable.db as  |  | 
|  1166 ** the first argument. |  | 
|  1167 */ |  | 
|  1168 struct VTable { |  | 
|  1169   sqlite3 *db;              /* Database connection associated with this table */ |  | 
|  1170   Module *pMod;             /* Pointer to module implementation */ |  | 
|  1171   sqlite3_vtab *pVtab;      /* Pointer to vtab instance */ |  | 
|  1172   int nRef;                 /* Number of pointers to this structure */ |  | 
|  1173   VTable *pNext;            /* Next in linked list (see above) */ |  | 
|  1174 }; |  | 
|  1175  |  | 
|  1176 /* |  | 
|  1177 ** Each SQL table is represented in memory by an instance of the |  | 
|  1178 ** following structure. |  | 
|  1179 ** |  | 
|  1180 ** Table.zName is the name of the table.  The case of the original |  | 
|  1181 ** CREATE TABLE statement is stored, but case is not significant for |  | 
|  1182 ** comparisons. |  | 
|  1183 ** |  | 
|  1184 ** Table.nCol is the number of columns in this table.  Table.aCol is a |  | 
|  1185 ** pointer to an array of Column structures, one for each column. |  | 
|  1186 ** |  | 
|  1187 ** If the table has an INTEGER PRIMARY KEY, then Table.iPKey is the index of |  | 
|  1188 ** the column that is that key.   Otherwise Table.iPKey is negative.  Note |  | 
|  1189 ** that the datatype of the PRIMARY KEY must be INTEGER for this field to |  | 
|  1190 ** be set.  An INTEGER PRIMARY KEY is used as the rowid for each row of |  | 
|  1191 ** the table.  If a table has no INTEGER PRIMARY KEY, then a random rowid |  | 
|  1192 ** is generated for each row of the table.  TF_HasPrimaryKey is set if |  | 
|  1193 ** the table has any PRIMARY KEY, INTEGER or otherwise. |  | 
|  1194 ** |  | 
|  1195 ** Table.tnum is the page number for the root BTree page of the table in the |  | 
|  1196 ** database file.  If Table.iDb is the index of the database table backend |  | 
|  1197 ** in sqlite.aDb[].  0 is for the main database and 1 is for the file that |  | 
|  1198 ** holds temporary tables and indices.  If TF_Ephemeral is set |  | 
|  1199 ** then the table is stored in a file that is automatically deleted |  | 
|  1200 ** when the VDBE cursor to the table is closed.  In this case Table.tnum  |  | 
|  1201 ** refers VDBE cursor number that holds the table open, not to the root |  | 
|  1202 ** page number.  Transient tables are used to hold the results of a |  | 
|  1203 ** sub-query that appears instead of a real table name in the FROM clause  |  | 
|  1204 ** of a SELECT statement. |  | 
|  1205 */ |  | 
|  1206 struct Table { |  | 
|  1207   sqlite3 *dbMem;      /* DB connection used for lookaside allocations. */ |  | 
|  1208   char *zName;         /* Name of the table or view */ |  | 
|  1209   int iPKey;           /* If not negative, use aCol[iPKey] as the primary key */ |  | 
|  1210   int nCol;            /* Number of columns in this table */ |  | 
|  1211   Column *aCol;        /* Information about each column */ |  | 
|  1212   Index *pIndex;       /* List of SQL indexes on this table. */ |  | 
|  1213   int tnum;            /* Root BTree node for this table (see note above) */ |  | 
|  1214   Select *pSelect;     /* NULL for tables.  Points to definition if a view. */ |  | 
|  1215   u16 nRef;            /* Number of pointers to this Table */ |  | 
|  1216   u8 tabFlags;         /* Mask of TF_* values */ |  | 
|  1217   u8 keyConf;          /* What to do in case of uniqueness conflict on iPKey */ |  | 
|  1218   FKey *pFKey;         /* Linked list of all foreign keys in this table */ |  | 
|  1219   char *zColAff;       /* String defining the affinity of each column */ |  | 
|  1220 #ifndef SQLITE_OMIT_CHECK |  | 
|  1221   Expr *pCheck;        /* The AND of all CHECK constraints */ |  | 
|  1222 #endif |  | 
|  1223 #ifndef SQLITE_OMIT_ALTERTABLE |  | 
|  1224   int addColOffset;    /* Offset in CREATE TABLE stmt to add a new column */ |  | 
|  1225 #endif |  | 
|  1226 #ifndef SQLITE_OMIT_VIRTUALTABLE |  | 
|  1227   VTable *pVTable;     /* List of VTable objects. */ |  | 
|  1228   int nModuleArg;      /* Number of arguments to the module */ |  | 
|  1229   char **azModuleArg;  /* Text of all module args. [0] is module name */ |  | 
|  1230 #endif |  | 
|  1231   Trigger *pTrigger;   /* List of triggers stored in pSchema */ |  | 
|  1232   Schema *pSchema;     /* Schema that contains this table */ |  | 
|  1233   Table *pNextZombie;  /* Next on the Parse.pZombieTab list */ |  | 
|  1234 }; |  | 
|  1235  |  | 
|  1236 /* |  | 
|  1237 ** Allowed values for Tabe.tabFlags. |  | 
|  1238 */ |  | 
|  1239 #define TF_Readonly        0x01    /* Read-only system table */ |  | 
|  1240 #define TF_Ephemeral       0x02    /* An ephemeral table */ |  | 
|  1241 #define TF_HasPrimaryKey   0x04    /* Table has a primary key */ |  | 
|  1242 #define TF_Autoincrement   0x08    /* Integer primary key is autoincrement */ |  | 
|  1243 #define TF_Virtual         0x10    /* Is a virtual table */ |  | 
|  1244 #define TF_NeedMetadata    0x20    /* aCol[].zType and aCol[].pColl missing */ |  | 
|  1245  |  | 
|  1246  |  | 
|  1247  |  | 
|  1248 /* |  | 
|  1249 ** Test to see whether or not a table is a virtual table.  This is |  | 
|  1250 ** done as a macro so that it will be optimized out when virtual |  | 
|  1251 ** table support is omitted from the build. |  | 
|  1252 */ |  | 
|  1253 #ifndef SQLITE_OMIT_VIRTUALTABLE |  | 
|  1254 #  define IsVirtual(X)      (((X)->tabFlags & TF_Virtual)!=0) |  | 
|  1255 #  define IsHiddenColumn(X) ((X)->isHidden) |  | 
|  1256 #else |  | 
|  1257 #  define IsVirtual(X)      0 |  | 
|  1258 #  define IsHiddenColumn(X) 0 |  | 
|  1259 #endif |  | 
|  1260  |  | 
|  1261 /* |  | 
|  1262 ** Each foreign key constraint is an instance of the following structure. |  | 
|  1263 ** |  | 
|  1264 ** A foreign key is associated with two tables.  The "from" table is |  | 
|  1265 ** the table that contains the REFERENCES clause that creates the foreign |  | 
|  1266 ** key.  The "to" table is the table that is named in the REFERENCES clause. |  | 
|  1267 ** Consider this example: |  | 
|  1268 ** |  | 
|  1269 **     CREATE TABLE ex1( |  | 
|  1270 **       a INTEGER PRIMARY KEY, |  | 
|  1271 **       b INTEGER CONSTRAINT fk1 REFERENCES ex2(x) |  | 
|  1272 **     ); |  | 
|  1273 ** |  | 
|  1274 ** For foreign key "fk1", the from-table is "ex1" and the to-table is "ex2". |  | 
|  1275 ** |  | 
|  1276 ** Each REFERENCES clause generates an instance of the following structure |  | 
|  1277 ** which is attached to the from-table.  The to-table need not exist when |  | 
|  1278 ** the from-table is created.  The existence of the to-table is not checked. |  | 
|  1279 */ |  | 
|  1280 struct FKey { |  | 
|  1281   Table *pFrom;     /* The table that contains the REFERENCES clause */ |  | 
|  1282   FKey *pNextFrom;  /* Next foreign key in pFrom */ |  | 
|  1283   char *zTo;        /* Name of table that the key points to */ |  | 
|  1284   int nCol;         /* Number of columns in this key */ |  | 
|  1285   u8 isDeferred;    /* True if constraint checking is deferred till COMMIT */ |  | 
|  1286   u8 updateConf;    /* How to resolve conflicts that occur on UPDATE */ |  | 
|  1287   u8 deleteConf;    /* How to resolve conflicts that occur on DELETE */ |  | 
|  1288   u8 insertConf;    /* How to resolve conflicts that occur on INSERT */ |  | 
|  1289   struct sColMap {  /* Mapping of columns in pFrom to columns in zTo */ |  | 
|  1290     int iFrom;         /* Index of column in pFrom */ |  | 
|  1291     char *zCol;        /* Name of column in zTo.  If 0 use PRIMARY KEY */ |  | 
|  1292   } aCol[1];        /* One entry for each of nCol column s */ |  | 
|  1293 }; |  | 
|  1294  |  | 
|  1295 /* |  | 
|  1296 ** SQLite supports many different ways to resolve a constraint |  | 
|  1297 ** error.  ROLLBACK processing means that a constraint violation |  | 
|  1298 ** causes the operation in process to fail and for the current transaction |  | 
|  1299 ** to be rolled back.  ABORT processing means the operation in process |  | 
|  1300 ** fails and any prior changes from that one operation are backed out, |  | 
|  1301 ** but the transaction is not rolled back.  FAIL processing means that |  | 
|  1302 ** the operation in progress stops and returns an error code.  But prior |  | 
|  1303 ** changes due to the same operation are not backed out and no rollback |  | 
|  1304 ** occurs.  IGNORE means that the particular row that caused the constraint |  | 
|  1305 ** error is not inserted or updated.  Processing continues and no error |  | 
|  1306 ** is returned.  REPLACE means that preexisting database rows that caused |  | 
|  1307 ** a UNIQUE constraint violation are removed so that the new insert or |  | 
|  1308 ** update can proceed.  Processing continues and no error is reported. |  | 
|  1309 ** |  | 
|  1310 ** RESTRICT, SETNULL, and CASCADE actions apply only to foreign keys. |  | 
|  1311 ** RESTRICT is the same as ABORT for IMMEDIATE foreign keys and the |  | 
|  1312 ** same as ROLLBACK for DEFERRED keys.  SETNULL means that the foreign |  | 
|  1313 ** key is set to NULL.  CASCADE means that a DELETE or UPDATE of the |  | 
|  1314 ** referenced table row is propagated into the row that holds the |  | 
|  1315 ** foreign key. |  | 
|  1316 **  |  | 
|  1317 ** The following symbolic values are used to record which type |  | 
|  1318 ** of action to take. |  | 
|  1319 */ |  | 
|  1320 #define OE_None     0   /* There is no constraint to check */ |  | 
|  1321 #define OE_Rollback 1   /* Fail the operation and rollback the transaction */ |  | 
|  1322 #define OE_Abort    2   /* Back out changes but do no rollback transaction */ |  | 
|  1323 #define OE_Fail     3   /* Stop the operation but leave all prior changes */ |  | 
|  1324 #define OE_Ignore   4   /* Ignore the error. Do not do the INSERT or UPDATE */ |  | 
|  1325 #define OE_Replace  5   /* Delete existing record, then do INSERT or UPDATE */ |  | 
|  1326  |  | 
|  1327 #define OE_Restrict 6   /* OE_Abort for IMMEDIATE, OE_Rollback for DEFERRED */ |  | 
|  1328 #define OE_SetNull  7   /* Set the foreign key value to NULL */ |  | 
|  1329 #define OE_SetDflt  8   /* Set the foreign key value to its default */ |  | 
|  1330 #define OE_Cascade  9   /* Cascade the changes */ |  | 
|  1331  |  | 
|  1332 #define OE_Default  99  /* Do whatever the default action is */ |  | 
|  1333  |  | 
|  1334  |  | 
|  1335 /* |  | 
|  1336 ** An instance of the following structure is passed as the first |  | 
|  1337 ** argument to sqlite3VdbeKeyCompare and is used to control the  |  | 
|  1338 ** comparison of the two index keys. |  | 
|  1339 */ |  | 
|  1340 struct KeyInfo { |  | 
|  1341   sqlite3 *db;        /* The database connection */ |  | 
|  1342   u8 enc;             /* Text encoding - one of the TEXT_Utf* values */ |  | 
|  1343   u16 nField;         /* Number of entries in aColl[] */ |  | 
|  1344   u8 *aSortOrder;     /* If defined an aSortOrder[i] is true, sort DESC */ |  | 
|  1345   CollSeq *aColl[1];  /* Collating sequence for each term of the key */ |  | 
|  1346 }; |  | 
|  1347  |  | 
|  1348 /* |  | 
|  1349 ** An instance of the following structure holds information about a |  | 
|  1350 ** single index record that has already been parsed out into individual |  | 
|  1351 ** values. |  | 
|  1352 ** |  | 
|  1353 ** A record is an object that contains one or more fields of data. |  | 
|  1354 ** Records are used to store the content of a table row and to store |  | 
|  1355 ** the key of an index.  A blob encoding of a record is created by |  | 
|  1356 ** the OP_MakeRecord opcode of the VDBE and is disassembled by the |  | 
|  1357 ** OP_Column opcode. |  | 
|  1358 ** |  | 
|  1359 ** This structure holds a record that has already been disassembled |  | 
|  1360 ** into its constituent fields. |  | 
|  1361 */ |  | 
|  1362 struct UnpackedRecord { |  | 
|  1363   KeyInfo *pKeyInfo;  /* Collation and sort-order information */ |  | 
|  1364   u16 nField;         /* Number of entries in apMem[] */ |  | 
|  1365   u16 flags;          /* Boolean settings.  UNPACKED_... below */ |  | 
|  1366   i64 rowid;          /* Used by UNPACKED_PREFIX_SEARCH */ |  | 
|  1367   Mem *aMem;          /* Values */ |  | 
|  1368 }; |  | 
|  1369  |  | 
|  1370 /* |  | 
|  1371 ** Allowed values of UnpackedRecord.flags |  | 
|  1372 */ |  | 
|  1373 #define UNPACKED_NEED_FREE     0x0001  /* Memory is from sqlite3Malloc() */ |  | 
|  1374 #define UNPACKED_NEED_DESTROY  0x0002  /* apMem[]s should all be destroyed */ |  | 
|  1375 #define UNPACKED_IGNORE_ROWID  0x0004  /* Ignore trailing rowid on key1 */ |  | 
|  1376 #define UNPACKED_INCRKEY       0x0008  /* Make this key an epsilon larger */ |  | 
|  1377 #define UNPACKED_PREFIX_MATCH  0x0010  /* A prefix match is considered OK */ |  | 
|  1378 #define UNPACKED_PREFIX_SEARCH 0x0020  /* A prefix match is considered OK */ |  | 
|  1379  |  | 
|  1380 /* |  | 
|  1381 ** Each SQL index is represented in memory by an |  | 
|  1382 ** instance of the following structure. |  | 
|  1383 ** |  | 
|  1384 ** The columns of the table that are to be indexed are described |  | 
|  1385 ** by the aiColumn[] field of this structure.  For example, suppose |  | 
|  1386 ** we have the following table and index: |  | 
|  1387 ** |  | 
|  1388 **     CREATE TABLE Ex1(c1 int, c2 int, c3 text); |  | 
|  1389 **     CREATE INDEX Ex2 ON Ex1(c3,c1); |  | 
|  1390 ** |  | 
|  1391 ** In the Table structure describing Ex1, nCol==3 because there are |  | 
|  1392 ** three columns in the table.  In the Index structure describing |  | 
|  1393 ** Ex2, nColumn==2 since 2 of the 3 columns of Ex1 are indexed. |  | 
|  1394 ** The value of aiColumn is {2, 0}.  aiColumn[0]==2 because the  |  | 
|  1395 ** first column to be indexed (c3) has an index of 2 in Ex1.aCol[]. |  | 
|  1396 ** The second column to be indexed (c1) has an index of 0 in |  | 
|  1397 ** Ex1.aCol[], hence Ex2.aiColumn[1]==0. |  | 
|  1398 ** |  | 
|  1399 ** The Index.onError field determines whether or not the indexed columns |  | 
|  1400 ** must be unique and what to do if they are not.  When Index.onError=OE_None, |  | 
|  1401 ** it means this is not a unique index.  Otherwise it is a unique index |  | 
|  1402 ** and the value of Index.onError indicate the which conflict resolution  |  | 
|  1403 ** algorithm to employ whenever an attempt is made to insert a non-unique |  | 
|  1404 ** element. |  | 
|  1405 */ |  | 
|  1406 struct Index { |  | 
|  1407   char *zName;     /* Name of this index */ |  | 
|  1408   int nColumn;     /* Number of columns in the table used by this index */ |  | 
|  1409   int *aiColumn;   /* Which columns are used by this index.  1st is 0 */ |  | 
|  1410   unsigned *aiRowEst; /* Result of ANALYZE: Est. rows selected by each column */ |  | 
|  1411   Table *pTable;   /* The SQL table being indexed */ |  | 
|  1412   int tnum;        /* Page containing root of this index in database file */ |  | 
|  1413   u8 onError;      /* OE_Abort, OE_Ignore, OE_Replace, or OE_None */ |  | 
|  1414   u8 autoIndex;    /* True if is automatically created (ex: by UNIQUE) */ |  | 
|  1415   char *zColAff;   /* String defining the affinity of each column */ |  | 
|  1416   Index *pNext;    /* The next index associated with the same table */ |  | 
|  1417   Schema *pSchema; /* Schema containing this index */ |  | 
|  1418   u8 *aSortOrder;  /* Array of size Index.nColumn. True==DESC, False==ASC */ |  | 
|  1419   char **azColl;   /* Array of collation sequence names for index */ |  | 
|  1420   IndexSample *aSample;    /* Array of SQLITE_INDEX_SAMPLES samples */ |  | 
|  1421 }; |  | 
|  1422  |  | 
|  1423 /* |  | 
|  1424 ** Each sample stored in the sqlite_stat2 table is represented in memory  |  | 
|  1425 ** using a structure of this type. |  | 
|  1426 */ |  | 
|  1427 struct IndexSample { |  | 
|  1428   union { |  | 
|  1429     char *z;        /* Value if eType is SQLITE_TEXT or SQLITE_BLOB */ |  | 
|  1430     double r;       /* Value if eType is SQLITE_FLOAT or SQLITE_INTEGER */ |  | 
|  1431   } u; |  | 
|  1432   u8 eType;         /* SQLITE_NULL, SQLITE_INTEGER ... etc. */ |  | 
|  1433   u8 nByte;         /* Size in byte of text or blob. */ |  | 
|  1434 }; |  | 
|  1435  |  | 
|  1436 /* |  | 
|  1437 ** Each token coming out of the lexer is an instance of |  | 
|  1438 ** this structure.  Tokens are also used as part of an expression. |  | 
|  1439 ** |  | 
|  1440 ** Note if Token.z==0 then Token.dyn and Token.n are undefined and |  | 
|  1441 ** may contain random values.  Do not make any assumptions about Token.dyn |  | 
|  1442 ** and Token.n when Token.z==0. |  | 
|  1443 */ |  | 
|  1444 struct Token { |  | 
|  1445   const char *z;     /* Text of the token.  Not NULL-terminated! */ |  | 
|  1446   unsigned int n;    /* Number of characters in this token */ |  | 
|  1447 }; |  | 
|  1448  |  | 
|  1449 /* |  | 
|  1450 ** An instance of this structure contains information needed to generate |  | 
|  1451 ** code for a SELECT that contains aggregate functions. |  | 
|  1452 ** |  | 
|  1453 ** If Expr.op==TK_AGG_COLUMN or TK_AGG_FUNCTION then Expr.pAggInfo is a |  | 
|  1454 ** pointer to this structure.  The Expr.iColumn field is the index in |  | 
|  1455 ** AggInfo.aCol[] or AggInfo.aFunc[] of information needed to generate |  | 
|  1456 ** code for that node. |  | 
|  1457 ** |  | 
|  1458 ** AggInfo.pGroupBy and AggInfo.aFunc.pExpr point to fields within the |  | 
|  1459 ** original Select structure that describes the SELECT statement.  These |  | 
|  1460 ** fields do not need to be freed when deallocating the AggInfo structure. |  | 
|  1461 */ |  | 
|  1462 struct AggInfo { |  | 
|  1463   u8 directMode;          /* Direct rendering mode means take data directly |  | 
|  1464                           ** from source tables rather than from accumulators */ |  | 
|  1465   u8 useSortingIdx;       /* In direct mode, reference the sorting index rather |  | 
|  1466                           ** than the source table */ |  | 
|  1467   int sortingIdx;         /* Cursor number of the sorting index */ |  | 
|  1468   ExprList *pGroupBy;     /* The group by clause */ |  | 
|  1469   int nSortingColumn;     /* Number of columns in the sorting index */ |  | 
|  1470   struct AggInfo_col {    /* For each column used in source tables */ |  | 
|  1471     Table *pTab;             /* Source table */ |  | 
|  1472     int iTable;              /* Cursor number of the source table */ |  | 
|  1473     int iColumn;             /* Column number within the source table */ |  | 
|  1474     int iSorterColumn;       /* Column number in the sorting index */ |  | 
|  1475     int iMem;                /* Memory location that acts as accumulator */ |  | 
|  1476     Expr *pExpr;             /* The original expression */ |  | 
|  1477   } *aCol; |  | 
|  1478   int nColumn;            /* Number of used entries in aCol[] */ |  | 
|  1479   int nColumnAlloc;       /* Number of slots allocated for aCol[] */ |  | 
|  1480   int nAccumulator;       /* Number of columns that show through to the output. |  | 
|  1481                           ** Additional columns are used only as parameters to |  | 
|  1482                           ** aggregate functions */ |  | 
|  1483   struct AggInfo_func {   /* For each aggregate function */ |  | 
|  1484     Expr *pExpr;             /* Expression encoding the function */ |  | 
|  1485     FuncDef *pFunc;          /* The aggregate function implementation */ |  | 
|  1486     int iMem;                /* Memory location that acts as accumulator */ |  | 
|  1487     int iDistinct;           /* Ephemeral table used to enforce DISTINCT */ |  | 
|  1488   } *aFunc; |  | 
|  1489   int nFunc;              /* Number of entries in aFunc[] */ |  | 
|  1490   int nFuncAlloc;         /* Number of slots allocated for aFunc[] */ |  | 
|  1491 }; |  | 
|  1492  |  | 
|  1493 /* |  | 
|  1494 ** Each node of an expression in the parse tree is an instance |  | 
|  1495 ** of this structure. |  | 
|  1496 ** |  | 
|  1497 ** Expr.op is the opcode. The integer parser token codes are reused |  | 
|  1498 ** as opcodes here. For example, the parser defines TK_GE to be an integer |  | 
|  1499 ** code representing the ">=" operator. This same integer code is reused |  | 
|  1500 ** to represent the greater-than-or-equal-to operator in the expression |  | 
|  1501 ** tree. |  | 
|  1502 ** |  | 
|  1503 ** If the expression is an SQL literal (TK_INTEGER, TK_FLOAT, TK_BLOB,  |  | 
|  1504 ** or TK_STRING), then Expr.token contains the text of the SQL literal. If |  | 
|  1505 ** the expression is a variable (TK_VARIABLE), then Expr.token contains the  |  | 
|  1506 ** variable name. Finally, if the expression is an SQL function (TK_FUNCTION), |  | 
|  1507 ** then Expr.token contains the name of the function. |  | 
|  1508 ** |  | 
|  1509 ** Expr.pRight and Expr.pLeft are the left and right subexpressions of a |  | 
|  1510 ** binary operator. Either or both may be NULL. |  | 
|  1511 ** |  | 
|  1512 ** Expr.x.pList is a list of arguments if the expression is an SQL function, |  | 
|  1513 ** a CASE expression or an IN expression of the form "<lhs> IN (<y>, <z>...)". |  | 
|  1514 ** Expr.x.pSelect is used if the expression is a sub-select or an expression of |  | 
|  1515 ** the form "<lhs> IN (SELECT ...)". If the EP_xIsSelect bit is set in the |  | 
|  1516 ** Expr.flags mask, then Expr.x.pSelect is valid. Otherwise, Expr.x.pList is  |  | 
|  1517 ** valid. |  | 
|  1518 ** |  | 
|  1519 ** An expression of the form ID or ID.ID refers to a column in a table. |  | 
|  1520 ** For such expressions, Expr.op is set to TK_COLUMN and Expr.iTable is |  | 
|  1521 ** the integer cursor number of a VDBE cursor pointing to that table and |  | 
|  1522 ** Expr.iColumn is the column number for the specific column.  If the |  | 
|  1523 ** expression is used as a result in an aggregate SELECT, then the |  | 
|  1524 ** value is also stored in the Expr.iAgg column in the aggregate so that |  | 
|  1525 ** it can be accessed after all aggregates are computed. |  | 
|  1526 ** |  | 
|  1527 ** If the expression is an unbound variable marker (a question mark  |  | 
|  1528 ** character '?' in the original SQL) then the Expr.iTable holds the index  |  | 
|  1529 ** number for that variable. |  | 
|  1530 ** |  | 
|  1531 ** If the expression is a subquery then Expr.iColumn holds an integer |  | 
|  1532 ** register number containing the result of the subquery.  If the |  | 
|  1533 ** subquery gives a constant result, then iTable is -1.  If the subquery |  | 
|  1534 ** gives a different answer at different times during statement processing |  | 
|  1535 ** then iTable is the address of a subroutine that computes the subquery. |  | 
|  1536 ** |  | 
|  1537 ** If the Expr is of type OP_Column, and the table it is selecting from |  | 
|  1538 ** is a disk table or the "old.*" pseudo-table, then pTab points to the |  | 
|  1539 ** corresponding table definition. |  | 
|  1540 ** |  | 
|  1541 ** ALLOCATION NOTES: |  | 
|  1542 ** |  | 
|  1543 ** Expr objects can use a lot of memory space in database schema.  To |  | 
|  1544 ** help reduce memory requirements, sometimes an Expr object will be |  | 
|  1545 ** truncated.  And to reduce the number of memory allocations, sometimes |  | 
|  1546 ** two or more Expr objects will be stored in a single memory allocation, |  | 
|  1547 ** together with Expr.zToken strings. |  | 
|  1548 ** |  | 
|  1549 ** If the EP_Reduced and EP_TokenOnly flags are set when |  | 
|  1550 ** an Expr object is truncated.  When EP_Reduced is set, then all |  | 
|  1551 ** the child Expr objects in the Expr.pLeft and Expr.pRight subtrees |  | 
|  1552 ** are contained within the same memory allocation.  Note, however, that |  | 
|  1553 ** the subtrees in Expr.x.pList or Expr.x.pSelect are always separately |  | 
|  1554 ** allocated, regardless of whether or not EP_Reduced is set. |  | 
|  1555 */ |  | 
|  1556 struct Expr { |  | 
|  1557   u8 op;                 /* Operation performed by this node */ |  | 
|  1558   char affinity;         /* The affinity of the column or 0 if not a column */ |  | 
|  1559   u16 flags;             /* Various flags.  EP_* See below */ |  | 
|  1560   union { |  | 
|  1561     char *zToken;          /* Token value. Zero terminated and dequoted */ |  | 
|  1562     int iValue;            /* Integer value if EP_IntValue */ |  | 
|  1563   } u; |  | 
|  1564  |  | 
|  1565   /* If the EP_TokenOnly flag is set in the Expr.flags mask, then no |  | 
|  1566   ** space is allocated for the fields below this point. An attempt to |  | 
|  1567   ** access them will result in a segfault or malfunction.  |  | 
|  1568   *********************************************************************/ |  | 
|  1569  |  | 
|  1570   Expr *pLeft;           /* Left subnode */ |  | 
|  1571   Expr *pRight;          /* Right subnode */ |  | 
|  1572   union { |  | 
|  1573     ExprList *pList;     /* Function arguments or in "<expr> IN (<expr-list)" */ |  | 
|  1574     Select *pSelect;     /* Used for sub-selects and "<expr> IN (<select>)" */ |  | 
|  1575   } x; |  | 
|  1576   CollSeq *pColl;        /* The collation type of the column or 0 */ |  | 
|  1577  |  | 
|  1578   /* If the EP_Reduced flag is set in the Expr.flags mask, then no |  | 
|  1579   ** space is allocated for the fields below this point. An attempt to |  | 
|  1580   ** access them will result in a segfault or malfunction. |  | 
|  1581   *********************************************************************/ |  | 
|  1582  |  | 
|  1583   int iTable;            /* TK_COLUMN: cursor number of table holding column |  | 
|  1584                          ** TK_REGISTER: register number |  | 
|  1585                          ** TK_TRIGGER: 1 -> new, 0 -> old */ |  | 
|  1586   i16 iColumn;           /* TK_COLUMN: column index.  -1 for rowid */ |  | 
|  1587   i16 iAgg;              /* Which entry in pAggInfo->aCol[] or ->aFunc[] */ |  | 
|  1588   i16 iRightJoinTable;   /* If EP_FromJoin, the right table of the join */ |  | 
|  1589   u8 flags2;             /* Second set of flags.  EP2_... */ |  | 
|  1590   u8 op2;                /* If a TK_REGISTER, the original value of Expr.op */ |  | 
|  1591   AggInfo *pAggInfo;     /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */ |  | 
|  1592   Table *pTab;           /* Table for TK_COLUMN expressions. */ |  | 
|  1593 #if SQLITE_MAX_EXPR_DEPTH>0 |  | 
|  1594   int nHeight;           /* Height of the tree headed by this node */ |  | 
|  1595 #endif |  | 
|  1596 }; |  | 
|  1597  |  | 
|  1598 /* |  | 
|  1599 ** The following are the meanings of bits in the Expr.flags field. |  | 
|  1600 */ |  | 
|  1601 #define EP_FromJoin   0x0001  /* Originated in ON or USING clause of a join */ |  | 
|  1602 #define EP_Agg        0x0002  /* Contains one or more aggregate functions */ |  | 
|  1603 #define EP_Resolved   0x0004  /* IDs have been resolved to COLUMNs */ |  | 
|  1604 #define EP_Error      0x0008  /* Expression contains one or more errors */ |  | 
|  1605 #define EP_Distinct   0x0010  /* Aggregate function with DISTINCT keyword */ |  | 
|  1606 #define EP_VarSelect  0x0020  /* pSelect is correlated, not constant */ |  | 
|  1607 #define EP_DblQuoted  0x0040  /* token.z was originally in "..." */ |  | 
|  1608 #define EP_InfixFunc  0x0080  /* True for an infix function: LIKE, GLOB, etc */ |  | 
|  1609 #define EP_ExpCollate 0x0100  /* Collating sequence specified explicitly */ |  | 
|  1610 #define EP_AnyAff     0x0200  /* Can take a cached column of any affinity */ |  | 
|  1611 #define EP_FixedDest  0x0400  /* Result needed in a specific register */ |  | 
|  1612 #define EP_IntValue   0x0800  /* Integer value contained in u.iValue */ |  | 
|  1613 #define EP_xIsSelect  0x1000  /* x.pSelect is valid (otherwise x.pList is) */ |  | 
|  1614  |  | 
|  1615 #define EP_Reduced    0x2000  /* Expr struct is EXPR_REDUCEDSIZE bytes only */ |  | 
|  1616 #define EP_TokenOnly  0x4000  /* Expr struct is EXPR_TOKENONLYSIZE bytes only */ |  | 
|  1617 #define EP_Static     0x8000  /* Held in memory not obtained from malloc() */ |  | 
|  1618  |  | 
|  1619 /* |  | 
|  1620 ** The following are the meanings of bits in the Expr.flags2 field. |  | 
|  1621 */ |  | 
|  1622 #define EP2_MallocedToken  0x0001  /* Need to sqlite3DbFree() Expr.zToken */ |  | 
|  1623 #define EP2_Irreducible    0x0002  /* Cannot EXPRDUP_REDUCE this Expr */ |  | 
|  1624  |  | 
|  1625 /* |  | 
|  1626 ** The pseudo-routine sqlite3ExprSetIrreducible sets the EP2_Irreducible |  | 
|  1627 ** flag on an expression structure.  This flag is used for VV&A only.  The |  | 
|  1628 ** routine is implemented as a macro that only works when in debugging mode, |  | 
|  1629 ** so as not to burden production code. |  | 
|  1630 */ |  | 
|  1631 #ifdef SQLITE_DEBUG |  | 
|  1632 # define ExprSetIrreducible(X)  (X)->flags2 |= EP2_Irreducible |  | 
|  1633 #else |  | 
|  1634 # define ExprSetIrreducible(X) |  | 
|  1635 #endif |  | 
|  1636  |  | 
|  1637 /* |  | 
|  1638 ** These macros can be used to test, set, or clear bits in the  |  | 
|  1639 ** Expr.flags field. |  | 
|  1640 */ |  | 
|  1641 #define ExprHasProperty(E,P)     (((E)->flags&(P))==(P)) |  | 
|  1642 #define ExprHasAnyProperty(E,P)  (((E)->flags&(P))!=0) |  | 
|  1643 #define ExprSetProperty(E,P)     (E)->flags|=(P) |  | 
|  1644 #define ExprClearProperty(E,P)   (E)->flags&=~(P) |  | 
|  1645  |  | 
|  1646 /* |  | 
|  1647 ** Macros to determine the number of bytes required by a normal Expr  |  | 
|  1648 ** struct, an Expr struct with the EP_Reduced flag set in Expr.flags  |  | 
|  1649 ** and an Expr struct with the EP_TokenOnly flag set. |  | 
|  1650 */ |  | 
|  1651 #define EXPR_FULLSIZE           sizeof(Expr)           /* Full size */ |  | 
|  1652 #define EXPR_REDUCEDSIZE        offsetof(Expr,iTable)  /* Common features */ |  | 
|  1653 #define EXPR_TOKENONLYSIZE      offsetof(Expr,pLeft)   /* Fewer features */ |  | 
|  1654  |  | 
|  1655 /* |  | 
|  1656 ** Flags passed to the sqlite3ExprDup() function. See the header comment  |  | 
|  1657 ** above sqlite3ExprDup() for details. |  | 
|  1658 */ |  | 
|  1659 #define EXPRDUP_REDUCE         0x0001  /* Used reduced-size Expr nodes */ |  | 
|  1660  |  | 
|  1661 /* |  | 
|  1662 ** A list of expressions.  Each expression may optionally have a |  | 
|  1663 ** name.  An expr/name combination can be used in several ways, such |  | 
|  1664 ** as the list of "expr AS ID" fields following a "SELECT" or in the |  | 
|  1665 ** list of "ID = expr" items in an UPDATE.  A list of expressions can |  | 
|  1666 ** also be used as the argument to a function, in which case the a.zName |  | 
|  1667 ** field is not used. |  | 
|  1668 */ |  | 
|  1669 struct ExprList { |  | 
|  1670   int nExpr;             /* Number of expressions on the list */ |  | 
|  1671   int nAlloc;            /* Number of entries allocated below */ |  | 
|  1672   int iECursor;          /* VDBE Cursor associated with this ExprList */ |  | 
|  1673   struct ExprList_item { |  | 
|  1674     Expr *pExpr;           /* The list of expressions */ |  | 
|  1675     char *zName;           /* Token associated with this expression */ |  | 
|  1676     char *zSpan;           /* Original text of the expression */ |  | 
|  1677     u8 sortOrder;          /* 1 for DESC or 0 for ASC */ |  | 
|  1678     u8 done;               /* A flag to indicate when processing is finished */ |  | 
|  1679     u16 iCol;              /* For ORDER BY, column number in result set */ |  | 
|  1680     u16 iAlias;            /* Index into Parse.aAlias[] for zName */ |  | 
|  1681   } *a;                  /* One entry for each expression */ |  | 
|  1682 }; |  | 
|  1683  |  | 
|  1684 /* |  | 
|  1685 ** An instance of this structure is used by the parser to record both |  | 
|  1686 ** the parse tree for an expression and the span of input text for an |  | 
|  1687 ** expression. |  | 
|  1688 */ |  | 
|  1689 struct ExprSpan { |  | 
|  1690   Expr *pExpr;          /* The expression parse tree */ |  | 
|  1691   const char *zStart;   /* First character of input text */ |  | 
|  1692   const char *zEnd;     /* One character past the end of input text */ |  | 
|  1693 }; |  | 
|  1694  |  | 
|  1695 /* |  | 
|  1696 ** An instance of this structure can hold a simple list of identifiers, |  | 
|  1697 ** such as the list "a,b,c" in the following statements: |  | 
|  1698 ** |  | 
|  1699 **      INSERT INTO t(a,b,c) VALUES ...; |  | 
|  1700 **      CREATE INDEX idx ON t(a,b,c); |  | 
|  1701 **      CREATE TRIGGER trig BEFORE UPDATE ON t(a,b,c) ...; |  | 
|  1702 ** |  | 
|  1703 ** The IdList.a.idx field is used when the IdList represents the list of |  | 
|  1704 ** column names after a table name in an INSERT statement.  In the statement |  | 
|  1705 ** |  | 
|  1706 **     INSERT INTO t(a,b,c) ... |  | 
|  1707 ** |  | 
|  1708 ** If "a" is the k-th column of table "t", then IdList.a[0].idx==k. |  | 
|  1709 */ |  | 
|  1710 struct IdList { |  | 
|  1711   struct IdList_item { |  | 
|  1712     char *zName;      /* Name of the identifier */ |  | 
|  1713     int idx;          /* Index in some Table.aCol[] of a column named zName */ |  | 
|  1714   } *a; |  | 
|  1715   int nId;         /* Number of identifiers on the list */ |  | 
|  1716   int nAlloc;      /* Number of entries allocated for a[] below */ |  | 
|  1717 }; |  | 
|  1718  |  | 
|  1719 /* |  | 
|  1720 ** The bitmask datatype defined below is used for various optimizations. |  | 
|  1721 ** |  | 
|  1722 ** Changing this from a 64-bit to a 32-bit type limits the number of |  | 
|  1723 ** tables in a join to 32 instead of 64.  But it also reduces the size |  | 
|  1724 ** of the library by 738 bytes on ix86. |  | 
|  1725 */ |  | 
|  1726 typedef u64 Bitmask; |  | 
|  1727  |  | 
|  1728 /* |  | 
|  1729 ** The number of bits in a Bitmask.  "BMS" means "BitMask Size". |  | 
|  1730 */ |  | 
|  1731 #define BMS  ((int)(sizeof(Bitmask)*8)) |  | 
|  1732  |  | 
|  1733 /* |  | 
|  1734 ** The following structure describes the FROM clause of a SELECT statement. |  | 
|  1735 ** Each table or subquery in the FROM clause is a separate element of |  | 
|  1736 ** the SrcList.a[] array. |  | 
|  1737 ** |  | 
|  1738 ** With the addition of multiple database support, the following structure |  | 
|  1739 ** can also be used to describe a particular table such as the table that |  | 
|  1740 ** is modified by an INSERT, DELETE, or UPDATE statement.  In standard SQL, |  | 
|  1741 ** such a table must be a simple name: ID.  But in SQLite, the table can |  | 
|  1742 ** now be identified by a database name, a dot, then the table name: ID.ID. |  | 
|  1743 ** |  | 
|  1744 ** The jointype starts out showing the join type between the current table |  | 
|  1745 ** and the next table on the list.  The parser builds the list this way. |  | 
|  1746 ** But sqlite3SrcListShiftJoinType() later shifts the jointypes so that each |  | 
|  1747 ** jointype expresses the join between the table and the previous table. |  | 
|  1748 */ |  | 
|  1749 struct SrcList { |  | 
|  1750   i16 nSrc;        /* Number of tables or subqueries in the FROM clause */ |  | 
|  1751   i16 nAlloc;      /* Number of entries allocated in a[] below */ |  | 
|  1752   struct SrcList_item { |  | 
|  1753     char *zDatabase;  /* Name of database holding this table */ |  | 
|  1754     char *zName;      /* Name of the table */ |  | 
|  1755     char *zAlias;     /* The "B" part of a "A AS B" phrase.  zName is the "A" */ |  | 
|  1756     Table *pTab;      /* An SQL table corresponding to zName */ |  | 
|  1757     Select *pSelect;  /* A SELECT statement used in place of a table name */ |  | 
|  1758     u8 isPopulated;   /* Temporary table associated with SELECT is populated */ |  | 
|  1759     u8 jointype;      /* Type of join between this able and the previous */ |  | 
|  1760     u8 notIndexed;    /* True if there is a NOT INDEXED clause */ |  | 
|  1761     int iCursor;      /* The VDBE cursor number used to access this table */ |  | 
|  1762     Expr *pOn;        /* The ON clause of a join */ |  | 
|  1763     IdList *pUsing;   /* The USING clause of a join */ |  | 
|  1764     Bitmask colUsed;  /* Bit N (1<<N) set if column N of pTab is used */ |  | 
|  1765     char *zIndex;     /* Identifier from "INDEXED BY <zIndex>" clause */ |  | 
|  1766     Index *pIndex;    /* Index structure corresponding to zIndex, if any */ |  | 
|  1767   } a[1];             /* One entry for each identifier on the list */ |  | 
|  1768 }; |  | 
|  1769  |  | 
|  1770 /* |  | 
|  1771 ** Permitted values of the SrcList.a.jointype field |  | 
|  1772 */ |  | 
|  1773 #define JT_INNER     0x0001    /* Any kind of inner or cross join */ |  | 
|  1774 #define JT_CROSS     0x0002    /* Explicit use of the CROSS keyword */ |  | 
|  1775 #define JT_NATURAL   0x0004    /* True for a "natural" join */ |  | 
|  1776 #define JT_LEFT      0x0008    /* Left outer join */ |  | 
|  1777 #define JT_RIGHT     0x0010    /* Right outer join */ |  | 
|  1778 #define JT_OUTER     0x0020    /* The "OUTER" keyword is present */ |  | 
|  1779 #define JT_ERROR     0x0040    /* unknown or unsupported join type */ |  | 
|  1780  |  | 
|  1781  |  | 
|  1782 /* |  | 
|  1783 ** A WherePlan object holds information that describes a lookup |  | 
|  1784 ** strategy. |  | 
|  1785 ** |  | 
|  1786 ** This object is intended to be opaque outside of the where.c module. |  | 
|  1787 ** It is included here only so that that compiler will know how big it |  | 
|  1788 ** is.  None of the fields in this object should be used outside of |  | 
|  1789 ** the where.c module. |  | 
|  1790 ** |  | 
|  1791 ** Within the union, pIdx is only used when wsFlags&WHERE_INDEXED is true. |  | 
|  1792 ** pTerm is only used when wsFlags&WHERE_MULTI_OR is true.  And pVtabIdx |  | 
|  1793 ** is only used when wsFlags&WHERE_VIRTUALTABLE is true.  It is never the |  | 
|  1794 ** case that more than one of these conditions is true. |  | 
|  1795 */ |  | 
|  1796 struct WherePlan { |  | 
|  1797   u32 wsFlags;                   /* WHERE_* flags that describe the strategy */ |  | 
|  1798   u32 nEq;                       /* Number of == constraints */ |  | 
|  1799   union { |  | 
|  1800     Index *pIdx;                   /* Index when WHERE_INDEXED is true */ |  | 
|  1801     struct WhereTerm *pTerm;       /* WHERE clause term for OR-search */ |  | 
|  1802     sqlite3_index_info *pVtabIdx;  /* Virtual table index to use */ |  | 
|  1803   } u; |  | 
|  1804 }; |  | 
|  1805  |  | 
|  1806 /* |  | 
|  1807 ** For each nested loop in a WHERE clause implementation, the WhereInfo |  | 
|  1808 ** structure contains a single instance of this structure.  This structure |  | 
|  1809 ** is intended to be private the the where.c module and should not be |  | 
|  1810 ** access or modified by other modules. |  | 
|  1811 ** |  | 
|  1812 ** The pIdxInfo field is used to help pick the best index on a |  | 
|  1813 ** virtual table.  The pIdxInfo pointer contains indexing |  | 
|  1814 ** information for the i-th table in the FROM clause before reordering. |  | 
|  1815 ** All the pIdxInfo pointers are freed by whereInfoFree() in where.c. |  | 
|  1816 ** All other information in the i-th WhereLevel object for the i-th table |  | 
|  1817 ** after FROM clause ordering. |  | 
|  1818 */ |  | 
|  1819 struct WhereLevel { |  | 
|  1820   WherePlan plan;       /* query plan for this element of the FROM clause */ |  | 
|  1821   int iLeftJoin;        /* Memory cell used to implement LEFT OUTER JOIN */ |  | 
|  1822   int iTabCur;          /* The VDBE cursor used to access the table */ |  | 
|  1823   int iIdxCur;          /* The VDBE cursor used to access pIdx */ |  | 
|  1824   int addrBrk;          /* Jump here to break out of the loop */ |  | 
|  1825   int addrNxt;          /* Jump here to start the next IN combination */ |  | 
|  1826   int addrCont;         /* Jump here to continue with the next loop cycle */ |  | 
|  1827   int addrFirst;        /* First instruction of interior of the loop */ |  | 
|  1828   u8 iFrom;             /* Which entry in the FROM clause */ |  | 
|  1829   u8 op, p5;            /* Opcode and P5 of the opcode that ends the loop */ |  | 
|  1830   int p1, p2;           /* Operands of the opcode used to ends the loop */ |  | 
|  1831   union {               /* Information that depends on plan.wsFlags */ |  | 
|  1832     struct { |  | 
|  1833       int nIn;              /* Number of entries in aInLoop[] */ |  | 
|  1834       struct InLoop { |  | 
|  1835         int iCur;              /* The VDBE cursor used by this IN operator */ |  | 
|  1836         int addrInTop;         /* Top of the IN loop */ |  | 
|  1837       } *aInLoop;           /* Information about each nested IN operator */ |  | 
|  1838     } in;                 /* Used when plan.wsFlags&WHERE_IN_ABLE */ |  | 
|  1839   } u; |  | 
|  1840  |  | 
|  1841   /* The following field is really not part of the current level.  But |  | 
|  1842   ** we need a place to cache virtual table index information for each |  | 
|  1843   ** virtual table in the FROM clause and the WhereLevel structure is |  | 
|  1844   ** a convenient place since there is one WhereLevel for each FROM clause |  | 
|  1845   ** element. |  | 
|  1846   */ |  | 
|  1847   sqlite3_index_info *pIdxInfo;  /* Index info for n-th source table */ |  | 
|  1848 }; |  | 
|  1849  |  | 
|  1850 /* |  | 
|  1851 ** Flags appropriate for the wctrlFlags parameter of sqlite3WhereBegin() |  | 
|  1852 ** and the WhereInfo.wctrlFlags member. |  | 
|  1853 */ |  | 
|  1854 #define WHERE_ORDERBY_NORMAL   0x0000 /* No-op */ |  | 
|  1855 #define WHERE_ORDERBY_MIN      0x0001 /* ORDER BY processing for min() func */ |  | 
|  1856 #define WHERE_ORDERBY_MAX      0x0002 /* ORDER BY processing for max() func */ |  | 
|  1857 #define WHERE_ONEPASS_DESIRED  0x0004 /* Want to do one-pass UPDATE/DELETE */ |  | 
|  1858 #define WHERE_DUPLICATES_OK    0x0008 /* Ok to return a row more than once */ |  | 
|  1859 #define WHERE_OMIT_OPEN        0x0010 /* Table cursor are already open */ |  | 
|  1860 #define WHERE_OMIT_CLOSE       0x0020 /* Omit close of table & index cursors */ |  | 
|  1861 #define WHERE_FORCE_TABLE      0x0040 /* Do not use an index-only search */ |  | 
|  1862  |  | 
|  1863 /* |  | 
|  1864 ** The WHERE clause processing routine has two halves.  The |  | 
|  1865 ** first part does the start of the WHERE loop and the second |  | 
|  1866 ** half does the tail of the WHERE loop.  An instance of |  | 
|  1867 ** this structure is returned by the first half and passed |  | 
|  1868 ** into the second half to give some continuity. |  | 
|  1869 */ |  | 
|  1870 struct WhereInfo { |  | 
|  1871   Parse *pParse;       /* Parsing and code generating context */ |  | 
|  1872   u16 wctrlFlags;      /* Flags originally passed to sqlite3WhereBegin() */ |  | 
|  1873   u8 okOnePass;        /* Ok to use one-pass algorithm for UPDATE or DELETE */ |  | 
|  1874   SrcList *pTabList;             /* List of tables in the join */ |  | 
|  1875   int iTop;                      /* The very beginning of the WHERE loop */ |  | 
|  1876   int iContinue;                 /* Jump here to continue with next record */ |  | 
|  1877   int iBreak;                    /* Jump here to break out of the loop */ |  | 
|  1878   int nLevel;                    /* Number of nested loop */ |  | 
|  1879   struct WhereClause *pWC;       /* Decomposition of the WHERE clause */ |  | 
|  1880   WhereLevel a[1];               /* Information about each nest loop in WHERE */ |  | 
|  1881 }; |  | 
|  1882  |  | 
|  1883 /* |  | 
|  1884 ** A NameContext defines a context in which to resolve table and column |  | 
|  1885 ** names.  The context consists of a list of tables (the pSrcList) field and |  | 
|  1886 ** a list of named expression (pEList).  The named expression list may |  | 
|  1887 ** be NULL.  The pSrc corresponds to the FROM clause of a SELECT or |  | 
|  1888 ** to the table being operated on by INSERT, UPDATE, or DELETE.  The |  | 
|  1889 ** pEList corresponds to the result set of a SELECT and is NULL for |  | 
|  1890 ** other statements. |  | 
|  1891 ** |  | 
|  1892 ** NameContexts can be nested.  When resolving names, the inner-most  |  | 
|  1893 ** context is searched first.  If no match is found, the next outer |  | 
|  1894 ** context is checked.  If there is still no match, the next context |  | 
|  1895 ** is checked.  This process continues until either a match is found |  | 
|  1896 ** or all contexts are check.  When a match is found, the nRef member of |  | 
|  1897 ** the context containing the match is incremented.  |  | 
|  1898 ** |  | 
|  1899 ** Each subquery gets a new NameContext.  The pNext field points to the |  | 
|  1900 ** NameContext in the parent query.  Thus the process of scanning the |  | 
|  1901 ** NameContext list corresponds to searching through successively outer |  | 
|  1902 ** subqueries looking for a match. |  | 
|  1903 */ |  | 
|  1904 struct NameContext { |  | 
|  1905   Parse *pParse;       /* The parser */ |  | 
|  1906   SrcList *pSrcList;   /* One or more tables used to resolve names */ |  | 
|  1907   ExprList *pEList;    /* Optional list of named expressions */ |  | 
|  1908   int nRef;            /* Number of names resolved by this context */ |  | 
|  1909   int nErr;            /* Number of errors encountered while resolving names */ |  | 
|  1910   u8 allowAgg;         /* Aggregate functions allowed here */ |  | 
|  1911   u8 hasAgg;           /* True if aggregates are seen */ |  | 
|  1912   u8 isCheck;          /* True if resolving names in a CHECK constraint */ |  | 
|  1913   int nDepth;          /* Depth of subquery recursion. 1 for no recursion */ |  | 
|  1914   AggInfo *pAggInfo;   /* Information about aggregates at this level */ |  | 
|  1915   NameContext *pNext;  /* Next outer name context.  NULL for outermost */ |  | 
|  1916 }; |  | 
|  1917  |  | 
|  1918 /* |  | 
|  1919 ** An instance of the following structure contains all information |  | 
|  1920 ** needed to generate code for a single SELECT statement. |  | 
|  1921 ** |  | 
|  1922 ** nLimit is set to -1 if there is no LIMIT clause.  nOffset is set to 0. |  | 
|  1923 ** If there is a LIMIT clause, the parser sets nLimit to the value of the |  | 
|  1924 ** limit and nOffset to the value of the offset (or 0 if there is not |  | 
|  1925 ** offset).  But later on, nLimit and nOffset become the memory locations |  | 
|  1926 ** in the VDBE that record the limit and offset counters. |  | 
|  1927 ** |  | 
|  1928 ** addrOpenEphm[] entries contain the address of OP_OpenEphemeral opcodes. |  | 
|  1929 ** These addresses must be stored so that we can go back and fill in |  | 
|  1930 ** the P4_KEYINFO and P2 parameters later.  Neither the KeyInfo nor |  | 
|  1931 ** the number of columns in P2 can be computed at the same time |  | 
|  1932 ** as the OP_OpenEphm instruction is coded because not |  | 
|  1933 ** enough information about the compound query is known at that point. |  | 
|  1934 ** The KeyInfo for addrOpenTran[0] and [1] contains collating sequences |  | 
|  1935 ** for the result set.  The KeyInfo for addrOpenTran[2] contains collating |  | 
|  1936 ** sequences for the ORDER BY clause. |  | 
|  1937 */ |  | 
|  1938 struct Select { |  | 
|  1939   ExprList *pEList;      /* The fields of the result */ |  | 
|  1940   u8 op;                 /* One of: TK_UNION TK_ALL TK_INTERSECT TK_EXCEPT */ |  | 
|  1941   char affinity;         /* MakeRecord with this affinity for SRT_Set */ |  | 
|  1942   u16 selFlags;          /* Various SF_* values */ |  | 
|  1943   SrcList *pSrc;         /* The FROM clause */ |  | 
|  1944   Expr *pWhere;          /* The WHERE clause */ |  | 
|  1945   ExprList *pGroupBy;    /* The GROUP BY clause */ |  | 
|  1946   Expr *pHaving;         /* The HAVING clause */ |  | 
|  1947   ExprList *pOrderBy;    /* The ORDER BY clause */ |  | 
|  1948   Select *pPrior;        /* Prior select in a compound select statement */ |  | 
|  1949   Select *pNext;         /* Next select to the left in a compound */ |  | 
|  1950   Select *pRightmost;    /* Right-most select in a compound select statement */ |  | 
|  1951   Expr *pLimit;          /* LIMIT expression. NULL means not used. */ |  | 
|  1952   Expr *pOffset;         /* OFFSET expression. NULL means not used. */ |  | 
|  1953   int iLimit, iOffset;   /* Memory registers holding LIMIT & OFFSET counters */ |  | 
|  1954   int addrOpenEphm[3];   /* OP_OpenEphem opcodes related to this select */ |  | 
|  1955 }; |  | 
|  1956  |  | 
|  1957 /* |  | 
|  1958 ** Allowed values for Select.selFlags.  The "SF" prefix stands for |  | 
|  1959 ** "Select Flag". |  | 
|  1960 */ |  | 
|  1961 #define SF_Distinct        0x0001  /* Output should be DISTINCT */ |  | 
|  1962 #define SF_Resolved        0x0002  /* Identifiers have been resolved */ |  | 
|  1963 #define SF_Aggregate       0x0004  /* Contains aggregate functions */ |  | 
|  1964 #define SF_UsesEphemeral   0x0008  /* Uses the OpenEphemeral opcode */ |  | 
|  1965 #define SF_Expanded        0x0010  /* sqlite3SelectExpand() called on this */ |  | 
|  1966 #define SF_HasTypeInfo     0x0020  /* FROM subqueries have Table metadata */ |  | 
|  1967  |  | 
|  1968  |  | 
|  1969 /* |  | 
|  1970 ** The results of a select can be distributed in several ways.  The |  | 
|  1971 ** "SRT" prefix means "SELECT Result Type". |  | 
|  1972 */ |  | 
|  1973 #define SRT_Union        1  /* Store result as keys in an index */ |  | 
|  1974 #define SRT_Except       2  /* Remove result from a UNION index */ |  | 
|  1975 #define SRT_Exists       3  /* Store 1 if the result is not empty */ |  | 
|  1976 #define SRT_Discard      4  /* Do not save the results anywhere */ |  | 
|  1977  |  | 
|  1978 /* The ORDER BY clause is ignored for all of the above */ |  | 
|  1979 #define IgnorableOrderby(X) ((X->eDest)<=SRT_Discard) |  | 
|  1980  |  | 
|  1981 #define SRT_Output       5  /* Output each row of result */ |  | 
|  1982 #define SRT_Mem          6  /* Store result in a memory cell */ |  | 
|  1983 #define SRT_Set          7  /* Store results as keys in an index */ |  | 
|  1984 #define SRT_Table        8  /* Store result as data with an automatic rowid */ |  | 
|  1985 #define SRT_EphemTab     9  /* Create transient tab and store like SRT_Table */ |  | 
|  1986 #define SRT_Coroutine   10  /* Generate a single row of result */ |  | 
|  1987  |  | 
|  1988 /* |  | 
|  1989 ** A structure used to customize the behavior of sqlite3Select(). See |  | 
|  1990 ** comments above sqlite3Select() for details. |  | 
|  1991 */ |  | 
|  1992 typedef struct SelectDest SelectDest; |  | 
|  1993 struct SelectDest { |  | 
|  1994   u8 eDest;         /* How to dispose of the results */ |  | 
|  1995   u8 affinity;      /* Affinity used when eDest==SRT_Set */ |  | 
|  1996   int iParm;        /* A parameter used by the eDest disposal method */ |  | 
|  1997   int iMem;         /* Base register where results are written */ |  | 
|  1998   int nMem;         /* Number of registers allocated */ |  | 
|  1999 }; |  | 
|  2000  |  | 
|  2001 /* |  | 
|  2002 ** During code generation of statements that do inserts into AUTOINCREMENT  |  | 
|  2003 ** tables, the following information is attached to the Table.u.autoInc.p |  | 
|  2004 ** pointer of each autoincrement table to record some side information that |  | 
|  2005 ** the code generator needs.  We have to keep per-table autoincrement |  | 
|  2006 ** information in case inserts are down within triggers.  Triggers do not |  | 
|  2007 ** normally coordinate their activities, but we do need to coordinate the |  | 
|  2008 ** loading and saving of autoincrement information. |  | 
|  2009 */ |  | 
|  2010 struct AutoincInfo { |  | 
|  2011   AutoincInfo *pNext;   /* Next info block in a list of them all */ |  | 
|  2012   Table *pTab;          /* Table this info block refers to */ |  | 
|  2013   int iDb;              /* Index in sqlite3.aDb[] of database holding pTab */ |  | 
|  2014   int regCtr;           /* Memory register holding the rowid counter */ |  | 
|  2015 }; |  | 
|  2016  |  | 
|  2017 /* |  | 
|  2018 ** Size of the column cache |  | 
|  2019 */ |  | 
|  2020 #ifndef SQLITE_N_COLCACHE |  | 
|  2021 # define SQLITE_N_COLCACHE 10 |  | 
|  2022 #endif |  | 
|  2023  |  | 
|  2024 /* |  | 
|  2025 ** At least one instance of the following structure is created for each  |  | 
|  2026 ** trigger that may be fired while parsing an INSERT, UPDATE or DELETE |  | 
|  2027 ** statement. All such objects are stored in the linked list headed at |  | 
|  2028 ** Parse.pTriggerPrg and deleted once statement compilation has been |  | 
|  2029 ** completed. |  | 
|  2030 ** |  | 
|  2031 ** A Vdbe sub-program that implements the body and WHEN clause of trigger |  | 
|  2032 ** TriggerPrg.pTrigger, assuming a default ON CONFLICT clause of |  | 
|  2033 ** TriggerPrg.orconf, is stored in the TriggerPrg.pProgram variable. |  | 
|  2034 ** The Parse.pTriggerPrg list never contains two entries with the same |  | 
|  2035 ** values for both pTrigger and orconf. |  | 
|  2036 ** |  | 
|  2037 ** The TriggerPrg.oldmask variable is set to a mask of old.* columns |  | 
|  2038 ** accessed (or set to 0 for triggers fired as a result of INSERT  |  | 
|  2039 ** statements). |  | 
|  2040 */ |  | 
|  2041 struct TriggerPrg { |  | 
|  2042   Trigger *pTrigger;      /* Trigger this program was coded from */ |  | 
|  2043   int orconf;             /* Default ON CONFLICT policy */ |  | 
|  2044   SubProgram *pProgram;   /* Program implementing pTrigger/orconf */ |  | 
|  2045   u32 oldmask;            /* Mask of old.* columns accessed */ |  | 
|  2046   TriggerPrg *pNext;      /* Next entry in Parse.pTriggerPrg list */ |  | 
|  2047 }; |  | 
|  2048  |  | 
|  2049 /* |  | 
|  2050 ** An SQL parser context.  A copy of this structure is passed through |  | 
|  2051 ** the parser and down into all the parser action routine in order to |  | 
|  2052 ** carry around information that is global to the entire parse. |  | 
|  2053 ** |  | 
|  2054 ** The structure is divided into two parts.  When the parser and code |  | 
|  2055 ** generate call themselves recursively, the first part of the structure |  | 
|  2056 ** is constant but the second part is reset at the beginning and end of |  | 
|  2057 ** each recursion. |  | 
|  2058 ** |  | 
|  2059 ** The nTableLock and aTableLock variables are only used if the shared-cache  |  | 
|  2060 ** feature is enabled (if sqlite3Tsd()->useSharedData is true). They are |  | 
|  2061 ** used to store the set of table-locks required by the statement being |  | 
|  2062 ** compiled. Function sqlite3TableLock() is used to add entries to the |  | 
|  2063 ** list. |  | 
|  2064 */ |  | 
|  2065 struct Parse { |  | 
|  2066   sqlite3 *db;         /* The main database structure */ |  | 
|  2067   int rc;              /* Return code from execution */ |  | 
|  2068   char *zErrMsg;       /* An error message */ |  | 
|  2069   Vdbe *pVdbe;         /* An engine for executing database bytecode */ |  | 
|  2070   u8 colNamesSet;      /* TRUE after OP_ColumnName has been issued to pVdbe */ |  | 
|  2071   u8 nameClash;        /* A permanent table name clashes with temp table name */ |  | 
|  2072   u8 checkSchema;      /* Causes schema cookie check after an error */ |  | 
|  2073   u8 nested;           /* Number of nested calls to the parser/code generator */ |  | 
|  2074   u8 parseError;       /* True after a parsing error.  Ticket #1794 */ |  | 
|  2075   u8 nTempReg;         /* Number of temporary registers in aTempReg[] */ |  | 
|  2076   u8 nTempInUse;       /* Number of aTempReg[] currently checked out */ |  | 
|  2077   int aTempReg[8];     /* Holding area for temporary registers */ |  | 
|  2078   int nRangeReg;       /* Size of the temporary register block */ |  | 
|  2079   int iRangeReg;       /* First register in temporary register block */ |  | 
|  2080   int nErr;            /* Number of errors seen */ |  | 
|  2081   int nTab;            /* Number of previously allocated VDBE cursors */ |  | 
|  2082   int nMem;            /* Number of memory cells used so far */ |  | 
|  2083   int nSet;            /* Number of sets used so far */ |  | 
|  2084   int ckBase;          /* Base register of data during check constraints */ |  | 
|  2085   int iCacheLevel;     /* ColCache valid when aColCache[].iLevel<=iCacheLevel */ |  | 
|  2086   int iCacheCnt;       /* Counter used to generate aColCache[].lru values */ |  | 
|  2087   u8 nColCache;        /* Number of entries in the column cache */ |  | 
|  2088   u8 iColCache;        /* Next entry of the cache to replace */ |  | 
|  2089   struct yColCache { |  | 
|  2090     int iTable;           /* Table cursor number */ |  | 
|  2091     int iColumn;          /* Table column number */ |  | 
|  2092     u8 affChange;         /* True if this register has had an affinity change */ |  | 
|  2093     u8 tempReg;           /* iReg is a temp register that needs to be freed */ |  | 
|  2094     int iLevel;           /* Nesting level */ |  | 
|  2095     int iReg;             /* Reg with value of this column. 0 means none. */ |  | 
|  2096     int lru;              /* Least recently used entry has the smallest value */ |  | 
|  2097   } aColCache[SQLITE_N_COLCACHE];  /* One for each column cache entry */ |  | 
|  2098   u32 writeMask;       /* Start a write transaction on these databases */ |  | 
|  2099   u32 cookieMask;      /* Bitmask of schema verified databases */ |  | 
|  2100   u8 isMultiWrite;     /* True if statement may affect/insert multiple rows */ |  | 
|  2101   u8 mayAbort;         /* True if statement may throw an ABORT exception */ |  | 
|  2102   int cookieGoto;      /* Address of OP_Goto to cookie verifier subroutine */ |  | 
|  2103   int cookieValue[SQLITE_MAX_ATTACHED+2];  /* Values of cookies to verify */ |  | 
|  2104 #ifndef SQLITE_OMIT_SHARED_CACHE |  | 
|  2105   int nTableLock;        /* Number of locks in aTableLock */ |  | 
|  2106   TableLock *aTableLock; /* Required table locks for shared-cache mode */ |  | 
|  2107 #endif |  | 
|  2108   int regRowid;        /* Register holding rowid of CREATE TABLE entry */ |  | 
|  2109   int regRoot;         /* Register holding root page number for new objects */ |  | 
|  2110   AutoincInfo *pAinc;  /* Information about AUTOINCREMENT counters */ |  | 
|  2111   int nMaxArg;         /* Max args passed to user function by sub-program */ |  | 
|  2112  |  | 
|  2113   /* Information used while coding trigger programs. */ |  | 
|  2114   Parse *pToplevel;    /* Parse structure for main program (or NULL) */ |  | 
|  2115   Table *pTriggerTab;  /* Table triggers are being coded for */ |  | 
|  2116   u32 oldmask;         /* Mask of old.* columns referenced */ |  | 
|  2117   u8 eTriggerOp;       /* TK_UPDATE, TK_INSERT or TK_DELETE */ |  | 
|  2118   u8 eOrconf;          /* Default ON CONFLICT policy for trigger steps */ |  | 
|  2119  |  | 
|  2120   /* Above is constant between recursions.  Below is reset before and after |  | 
|  2121   ** each recursion */ |  | 
|  2122  |  | 
|  2123   int nVar;            /* Number of '?' variables seen in the SQL so far */ |  | 
|  2124   int nVarExpr;        /* Number of used slots in apVarExpr[] */ |  | 
|  2125   int nVarExprAlloc;   /* Number of allocated slots in apVarExpr[] */ |  | 
|  2126   Expr **apVarExpr;    /* Pointers to :aaa and $aaaa wildcard expressions */ |  | 
|  2127   int nAlias;          /* Number of aliased result set columns */ |  | 
|  2128   int nAliasAlloc;     /* Number of allocated slots for aAlias[] */ |  | 
|  2129   int *aAlias;         /* Register used to hold aliased result */ |  | 
|  2130   u8 explain;          /* True if the EXPLAIN flag is found on the query */ |  | 
|  2131   Token sNameToken;    /* Token with unqualified schema object name */ |  | 
|  2132   Token sLastToken;    /* The last token parsed */ |  | 
|  2133   const char *zTail;   /* All SQL text past the last semicolon parsed */ |  | 
|  2134   Table *pNewTable;    /* A table being constructed by CREATE TABLE */ |  | 
|  2135   Trigger *pNewTrigger;     /* Trigger under construct by a CREATE TRIGGER */ |  | 
|  2136   const char *zAuthContext; /* The 6th parameter to db->xAuth callbacks */ |  | 
|  2137 #ifndef SQLITE_OMIT_VIRTUALTABLE |  | 
|  2138   Token sArg;                /* Complete text of a module argument */ |  | 
|  2139   u8 declareVtab;            /* True if inside sqlite3_declare_vtab() */ |  | 
|  2140   int nVtabLock;             /* Number of virtual tables to lock */ |  | 
|  2141   Table **apVtabLock;        /* Pointer to virtual tables needing locking */ |  | 
|  2142 #endif |  | 
|  2143   int nHeight;            /* Expression tree height of current sub-select */ |  | 
|  2144   Table *pZombieTab;      /* List of Table objects to delete after code gen */ |  | 
|  2145   TriggerPrg *pTriggerPrg;    /* Linked list of coded triggers */ |  | 
|  2146 }; |  | 
|  2147  |  | 
|  2148 #ifdef SQLITE_OMIT_VIRTUALTABLE |  | 
|  2149   #define IN_DECLARE_VTAB 0 |  | 
|  2150 #else |  | 
|  2151   #define IN_DECLARE_VTAB (pParse->declareVtab) |  | 
|  2152 #endif |  | 
|  2153  |  | 
|  2154 /* |  | 
|  2155 ** An instance of the following structure can be declared on a stack and used |  | 
|  2156 ** to save the Parse.zAuthContext value so that it can be restored later. |  | 
|  2157 */ |  | 
|  2158 struct AuthContext { |  | 
|  2159   const char *zAuthContext;   /* Put saved Parse.zAuthContext here */ |  | 
|  2160   Parse *pParse;              /* The Parse structure */ |  | 
|  2161 }; |  | 
|  2162  |  | 
|  2163 /* |  | 
|  2164 ** Bitfield flags for P5 value in OP_Insert and OP_Delete |  | 
|  2165 */ |  | 
|  2166 #define OPFLAG_NCHANGE       0x01    /* Set to update db->nChange */ |  | 
|  2167 #define OPFLAG_LASTROWID     0x02    /* Set to update db->lastRowid */ |  | 
|  2168 #define OPFLAG_ISUPDATE      0x04    /* This OP_Insert is an sql UPDATE */ |  | 
|  2169 #define OPFLAG_APPEND        0x08    /* This is likely to be an append */ |  | 
|  2170 #define OPFLAG_USESEEKRESULT 0x10    /* Try to avoid a seek in BtreeInsert() */ |  | 
|  2171 #define OPFLAG_CLEARCACHE    0x20    /* Clear pseudo-table cache in OP_Column */ |  | 
|  2172  |  | 
|  2173 /* |  | 
|  2174  * Each trigger present in the database schema is stored as an instance of |  | 
|  2175  * struct Trigger.  |  | 
|  2176  * |  | 
|  2177  * Pointers to instances of struct Trigger are stored in two ways. |  | 
|  2178  * 1. In the "trigHash" hash table (part of the sqlite3* that represents the  |  | 
|  2179  *    database). This allows Trigger structures to be retrieved by name. |  | 
|  2180  * 2. All triggers associated with a single table form a linked list, using the |  | 
|  2181  *    pNext member of struct Trigger. A pointer to the first element of the |  | 
|  2182  *    linked list is stored as the "pTrigger" member of the associated |  | 
|  2183  *    struct Table. |  | 
|  2184  * |  | 
|  2185  * The "step_list" member points to the first element of a linked list |  | 
|  2186  * containing the SQL statements specified as the trigger program. |  | 
|  2187  */ |  | 
|  2188 struct Trigger { |  | 
|  2189   char *zName;            /* The name of the trigger                        */ |  | 
|  2190   char *table;            /* The table or view to which the trigger applies */ |  | 
|  2191   u8 op;                  /* One of TK_DELETE, TK_UPDATE, TK_INSERT         */ |  | 
|  2192   u8 tr_tm;               /* One of TRIGGER_BEFORE, TRIGGER_AFTER */ |  | 
|  2193   Expr *pWhen;            /* The WHEN clause of the expression (may be NULL) */ |  | 
|  2194   IdList *pColumns;       /* If this is an UPDATE OF <column-list> trigger, |  | 
|  2195                              the <column-list> is stored here */ |  | 
|  2196   Schema *pSchema;        /* Schema containing the trigger */ |  | 
|  2197   Schema *pTabSchema;     /* Schema containing the table */ |  | 
|  2198   TriggerStep *step_list; /* Link list of trigger program steps             */ |  | 
|  2199   Trigger *pNext;         /* Next trigger associated with the table */ |  | 
|  2200 }; |  | 
|  2201  |  | 
|  2202 /* |  | 
|  2203 ** A trigger is either a BEFORE or an AFTER trigger.  The following constants |  | 
|  2204 ** determine which.  |  | 
|  2205 ** |  | 
|  2206 ** If there are multiple triggers, you might of some BEFORE and some AFTER. |  | 
|  2207 ** In that cases, the constants below can be ORed together. |  | 
|  2208 */ |  | 
|  2209 #define TRIGGER_BEFORE  1 |  | 
|  2210 #define TRIGGER_AFTER   2 |  | 
|  2211  |  | 
|  2212 /* |  | 
|  2213  * An instance of struct TriggerStep is used to store a single SQL statement |  | 
|  2214  * that is a part of a trigger-program.  |  | 
|  2215  * |  | 
|  2216  * Instances of struct TriggerStep are stored in a singly linked list (linked |  | 
|  2217  * using the "pNext" member) referenced by the "step_list" member of the  |  | 
|  2218  * associated struct Trigger instance. The first element of the linked list is |  | 
|  2219  * the first step of the trigger-program. |  | 
|  2220  *  |  | 
|  2221  * The "op" member indicates whether this is a "DELETE", "INSERT", "UPDATE" or |  | 
|  2222  * "SELECT" statement. The meanings of the other members is determined by the  |  | 
|  2223  * value of "op" as follows: |  | 
|  2224  * |  | 
|  2225  * (op == TK_INSERT) |  | 
|  2226  * orconf    -> stores the ON CONFLICT algorithm |  | 
|  2227  * pSelect   -> If this is an INSERT INTO ... SELECT ... statement, then |  | 
|  2228  *              this stores a pointer to the SELECT statement. Otherwise NULL. |  | 
|  2229  * target    -> A token holding the quoted name of the table to insert into. |  | 
|  2230  * pExprList -> If this is an INSERT INTO ... VALUES ... statement, then |  | 
|  2231  *              this stores values to be inserted. Otherwise NULL. |  | 
|  2232  * pIdList   -> If this is an INSERT INTO ... (<column-names>) VALUES ...  |  | 
|  2233  *              statement, then this stores the column-names to be |  | 
|  2234  *              inserted into. |  | 
|  2235  * |  | 
|  2236  * (op == TK_DELETE) |  | 
|  2237  * target    -> A token holding the quoted name of the table to delete from. |  | 
|  2238  * pWhere    -> The WHERE clause of the DELETE statement if one is specified. |  | 
|  2239  *              Otherwise NULL. |  | 
|  2240  *  |  | 
|  2241  * (op == TK_UPDATE) |  | 
|  2242  * target    -> A token holding the quoted name of the table to update rows of. |  | 
|  2243  * pWhere    -> The WHERE clause of the UPDATE statement if one is specified. |  | 
|  2244  *              Otherwise NULL. |  | 
|  2245  * pExprList -> A list of the columns to update and the expressions to update |  | 
|  2246  *              them to. See sqlite3Update() documentation of "pChanges" |  | 
|  2247  *              argument. |  | 
|  2248  *  |  | 
|  2249  */ |  | 
|  2250 struct TriggerStep { |  | 
|  2251   u8 op;               /* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT */ |  | 
|  2252   u8 orconf;           /* OE_Rollback etc. */ |  | 
|  2253   Trigger *pTrig;      /* The trigger that this step is a part of */ |  | 
|  2254   Select *pSelect;     /* SELECT statment or RHS of INSERT INTO .. SELECT ... */ |  | 
|  2255   Token target;        /* Target table for DELETE, UPDATE, INSERT */ |  | 
|  2256   Expr *pWhere;        /* The WHERE clause for DELETE or UPDATE steps */ |  | 
|  2257   ExprList *pExprList; /* SET clause for UPDATE.  VALUES clause for INSERT */ |  | 
|  2258   IdList *pIdList;     /* Column names for INSERT */ |  | 
|  2259   TriggerStep *pNext;  /* Next in the link-list */ |  | 
|  2260   TriggerStep *pLast;  /* Last element in link-list. Valid for 1st elem only */ |  | 
|  2261 }; |  | 
|  2262  |  | 
|  2263 /* |  | 
|  2264 ** The following structure contains information used by the sqliteFix... |  | 
|  2265 ** routines as they walk the parse tree to make database references |  | 
|  2266 ** explicit.   |  | 
|  2267 */ |  | 
|  2268 typedef struct DbFixer DbFixer; |  | 
|  2269 struct DbFixer { |  | 
|  2270   Parse *pParse;      /* The parsing context.  Error messages written here */ |  | 
|  2271   const char *zDb;    /* Make sure all objects are contained in this database */ |  | 
|  2272   const char *zType;  /* Type of the container - used for error messages */ |  | 
|  2273   const Token *pName; /* Name of the container - used for error messages */ |  | 
|  2274 }; |  | 
|  2275  |  | 
|  2276 /* |  | 
|  2277 ** An objected used to accumulate the text of a string where we |  | 
|  2278 ** do not necessarily know how big the string will be in the end. |  | 
|  2279 */ |  | 
|  2280 struct StrAccum { |  | 
|  2281   sqlite3 *db;         /* Optional database for lookaside.  Can be NULL */ |  | 
|  2282   char *zBase;         /* A base allocation.  Not from malloc. */ |  | 
|  2283   char *zText;         /* The string collected so far */ |  | 
|  2284   int  nChar;          /* Length of the string so far */ |  | 
|  2285   int  nAlloc;         /* Amount of space allocated in zText */ |  | 
|  2286   int  mxAlloc;        /* Maximum allowed string length */ |  | 
|  2287   u8   mallocFailed;   /* Becomes true if any memory allocation fails */ |  | 
|  2288   u8   useMalloc;      /* True if zText is enlargeable using realloc */ |  | 
|  2289   u8   tooBig;         /* Becomes true if string size exceeds limits */ |  | 
|  2290 }; |  | 
|  2291  |  | 
|  2292 /* |  | 
|  2293 ** A pointer to this structure is used to communicate information |  | 
|  2294 ** from sqlite3Init and OP_ParseSchema into the sqlite3InitCallback. |  | 
|  2295 */ |  | 
|  2296 typedef struct { |  | 
|  2297   sqlite3 *db;        /* The database being initialized */ |  | 
|  2298   int iDb;            /* 0 for main database.  1 for TEMP, 2.. for ATTACHed */ |  | 
|  2299   char **pzErrMsg;    /* Error message stored here */ |  | 
|  2300   int rc;             /* Result code stored here */ |  | 
|  2301 } InitData; |  | 
|  2302  |  | 
|  2303 /* |  | 
|  2304 ** Structure containing global configuration data for the SQLite library. |  | 
|  2305 ** |  | 
|  2306 ** This structure also contains some state information. |  | 
|  2307 */ |  | 
|  2308 struct Sqlite3Config { |  | 
|  2309   int bMemstat;                     /* True to enable memory status */ |  | 
|  2310   int bCoreMutex;                   /* True to enable core mutexing */ |  | 
|  2311   int bFullMutex;                   /* True to enable full mutexing */ |  | 
|  2312   int mxStrlen;                     /* Maximum string length */ |  | 
|  2313   int szLookaside;                  /* Default lookaside buffer size */ |  | 
|  2314   int nLookaside;                   /* Default lookaside buffer count */ |  | 
|  2315   sqlite3_mem_methods m;            /* Low-level memory allocation interface */ |  | 
|  2316   sqlite3_mutex_methods mutex;      /* Low-level mutex interface */ |  | 
|  2317   sqlite3_pcache_methods pcache;    /* Low-level page-cache interface */ |  | 
|  2318   void *pHeap;                      /* Heap storage space */ |  | 
|  2319   int nHeap;                        /* Size of pHeap[] */ |  | 
|  2320   int mnReq, mxReq;                 /* Min and max heap requests sizes */ |  | 
|  2321   void *pScratch;                   /* Scratch memory */ |  | 
|  2322   int szScratch;                    /* Size of each scratch buffer */ |  | 
|  2323   int nScratch;                     /* Number of scratch buffers */ |  | 
|  2324   void *pPage;                      /* Page cache memory */ |  | 
|  2325   int szPage;                       /* Size of each page in pPage[] */ |  | 
|  2326   int nPage;                        /* Number of pages in pPage[] */ |  | 
|  2327   int mxParserStack;                /* maximum depth of the parser stack */ |  | 
|  2328   int sharedCacheEnabled;           /* true if shared-cache mode enabled */ |  | 
|  2329   /* The above might be initialized to non-zero.  The following need to always |  | 
|  2330   ** initially be zero, however. */ |  | 
|  2331   int isInit;                       /* True after initialization has finished */ |  | 
|  2332   int inProgress;                   /* True while initialization in progress */ |  | 
|  2333   int isMutexInit;                  /* True after mutexes are initialized */ |  | 
|  2334   int isMallocInit;                 /* True after malloc is initialized */ |  | 
|  2335   int isPCacheInit;                 /* True after malloc is initialized */ |  | 
|  2336   sqlite3_mutex *pInitMutex;        /* Mutex used by sqlite3_initialize() */ |  | 
|  2337   int nRefInitMutex;                /* Number of users of pInitMutex */ |  | 
|  2338 }; |  | 
|  2339  |  | 
|  2340 /* |  | 
|  2341 ** Context pointer passed down through the tree-walk. |  | 
|  2342 */ |  | 
|  2343 struct Walker { |  | 
|  2344   int (*xExprCallback)(Walker*, Expr*);     /* Callback for expressions */ |  | 
|  2345   int (*xSelectCallback)(Walker*,Select*);  /* Callback for SELECTs */ |  | 
|  2346   Parse *pParse;                            /* Parser context.  */ |  | 
|  2347   union {                                   /* Extra data for callback */ |  | 
|  2348     NameContext *pNC;                          /* Naming context */ |  | 
|  2349     int i;                                     /* Integer value */ |  | 
|  2350   } u; |  | 
|  2351 }; |  | 
|  2352  |  | 
|  2353 /* Forward declarations */ |  | 
|  2354 int sqlite3WalkExpr(Walker*, Expr*); |  | 
|  2355 int sqlite3WalkExprList(Walker*, ExprList*); |  | 
|  2356 int sqlite3WalkSelect(Walker*, Select*); |  | 
|  2357 int sqlite3WalkSelectExpr(Walker*, Select*); |  | 
|  2358 int sqlite3WalkSelectFrom(Walker*, Select*); |  | 
|  2359  |  | 
|  2360 /* |  | 
|  2361 ** Return code from the parse-tree walking primitives and their |  | 
|  2362 ** callbacks. |  | 
|  2363 */ |  | 
|  2364 #define WRC_Continue    0   /* Continue down into children */ |  | 
|  2365 #define WRC_Prune       1   /* Omit children but continue walking siblings */ |  | 
|  2366 #define WRC_Abort       2   /* Abandon the tree walk */ |  | 
|  2367  |  | 
|  2368 /* |  | 
|  2369 ** Assuming zIn points to the first byte of a UTF-8 character, |  | 
|  2370 ** advance zIn to point to the first byte of the next UTF-8 character. |  | 
|  2371 */ |  | 
|  2372 #define SQLITE_SKIP_UTF8(zIn) {                        \ |  | 
|  2373   if( (*(zIn++))>=0xc0 ){                              \ |  | 
|  2374     while( (*zIn & 0xc0)==0x80 ){ zIn++; }             \ |  | 
|  2375   }                                                    \ |  | 
|  2376 } |  | 
|  2377  |  | 
|  2378 /* |  | 
|  2379 ** The SQLITE_CORRUPT_BKPT macro can be either a constant (for production |  | 
|  2380 ** builds) or a function call (for debugging).  If it is a function call, |  | 
|  2381 ** it allows the operator to set a breakpoint at the spot where database |  | 
|  2382 ** corruption is first detected. |  | 
|  2383 */ |  | 
|  2384 #ifdef SQLITE_DEBUG |  | 
|  2385   int sqlite3Corrupt(void); |  | 
|  2386 # define SQLITE_CORRUPT_BKPT sqlite3Corrupt() |  | 
|  2387 #else |  | 
|  2388 # define SQLITE_CORRUPT_BKPT SQLITE_CORRUPT |  | 
|  2389 #endif |  | 
|  2390  |  | 
|  2391 /* |  | 
|  2392 ** The ctype.h header is needed for non-ASCII systems.  It is also |  | 
|  2393 ** needed by FTS3 when FTS3 is included in the amalgamation. |  | 
|  2394 */ |  | 
|  2395 #if !defined(SQLITE_ASCII) || \ |  | 
|  2396     (defined(SQLITE_ENABLE_FTS3) && defined(SQLITE_AMALGAMATION)) |  | 
|  2397 # include <ctype.h> |  | 
|  2398 #endif |  | 
|  2399  |  | 
|  2400 /* |  | 
|  2401 ** The following macros mimic the standard library functions toupper(), |  | 
|  2402 ** isspace(), isalnum(), isdigit() and isxdigit(), respectively. The |  | 
|  2403 ** sqlite versions only work for ASCII characters, regardless of locale. |  | 
|  2404 */ |  | 
|  2405 #ifdef SQLITE_ASCII |  | 
|  2406 # define sqlite3Toupper(x)  ((x)&~(sqlite3CtypeMap[(unsigned char)(x)]&0x20)) |  | 
|  2407 # define sqlite3Isspace(x)   (sqlite3CtypeMap[(unsigned char)(x)]&0x01) |  | 
|  2408 # define sqlite3Isalnum(x)   (sqlite3CtypeMap[(unsigned char)(x)]&0x06) |  | 
|  2409 # define sqlite3Isalpha(x)   (sqlite3CtypeMap[(unsigned char)(x)]&0x02) |  | 
|  2410 # define sqlite3Isdigit(x)   (sqlite3CtypeMap[(unsigned char)(x)]&0x04) |  | 
|  2411 # define sqlite3Isxdigit(x)  (sqlite3CtypeMap[(unsigned char)(x)]&0x08) |  | 
|  2412 # define sqlite3Tolower(x)   (sqlite3UpperToLower[(unsigned char)(x)]) |  | 
|  2413 #else |  | 
|  2414 # define sqlite3Toupper(x)   toupper((unsigned char)(x)) |  | 
|  2415 # define sqlite3Isspace(x)   isspace((unsigned char)(x)) |  | 
|  2416 # define sqlite3Isalnum(x)   isalnum((unsigned char)(x)) |  | 
|  2417 # define sqlite3Isalpha(x)   isalpha((unsigned char)(x)) |  | 
|  2418 # define sqlite3Isdigit(x)   isdigit((unsigned char)(x)) |  | 
|  2419 # define sqlite3Isxdigit(x)  isxdigit((unsigned char)(x)) |  | 
|  2420 # define sqlite3Tolower(x)   tolower((unsigned char)(x)) |  | 
|  2421 #endif |  | 
|  2422  |  | 
|  2423 /* |  | 
|  2424 ** Internal function prototypes |  | 
|  2425 */ |  | 
|  2426 int sqlite3StrICmp(const char *, const char *); |  | 
|  2427 int sqlite3IsNumber(const char*, int*, u8); |  | 
|  2428 int sqlite3Strlen30(const char*); |  | 
|  2429 #define sqlite3StrNICmp sqlite3_strnicmp |  | 
|  2430  |  | 
|  2431 int sqlite3MallocInit(void); |  | 
|  2432 void sqlite3MallocEnd(void); |  | 
|  2433 void *sqlite3Malloc(int); |  | 
|  2434 void *sqlite3MallocZero(int); |  | 
|  2435 void *sqlite3DbMallocZero(sqlite3*, int); |  | 
|  2436 void *sqlite3DbMallocRaw(sqlite3*, int); |  | 
|  2437 char *sqlite3DbStrDup(sqlite3*,const char*); |  | 
|  2438 char *sqlite3DbStrNDup(sqlite3*,const char*, int); |  | 
|  2439 void *sqlite3Realloc(void*, int); |  | 
|  2440 void *sqlite3DbReallocOrFree(sqlite3 *, void *, int); |  | 
|  2441 void *sqlite3DbRealloc(sqlite3 *, void *, int); |  | 
|  2442 void sqlite3DbFree(sqlite3*, void*); |  | 
|  2443 int sqlite3MallocSize(void*); |  | 
|  2444 int sqlite3DbMallocSize(sqlite3*, void*); |  | 
|  2445 void *sqlite3ScratchMalloc(int); |  | 
|  2446 void sqlite3ScratchFree(void*); |  | 
|  2447 void *sqlite3PageMalloc(int); |  | 
|  2448 void sqlite3PageFree(void*); |  | 
|  2449 void sqlite3MemSetDefault(void); |  | 
|  2450 void sqlite3BenignMallocHooks(void (*)(void), void (*)(void)); |  | 
|  2451 int sqlite3MemoryAlarm(void (*)(void*, sqlite3_int64, int), void*, sqlite3_int64
      ); |  | 
|  2452  |  | 
|  2453 /* |  | 
|  2454 ** On systems with ample stack space and that support alloca(), make |  | 
|  2455 ** use of alloca() to obtain space for large automatic objects.  By default, |  | 
|  2456 ** obtain space from malloc(). |  | 
|  2457 ** |  | 
|  2458 ** The alloca() routine never returns NULL.  This will cause code paths |  | 
|  2459 ** that deal with sqlite3StackAlloc() failures to be unreachable. |  | 
|  2460 */ |  | 
|  2461 #ifdef SQLITE_USE_ALLOCA |  | 
|  2462 # define sqlite3StackAllocRaw(D,N)   alloca(N) |  | 
|  2463 # define sqlite3StackAllocZero(D,N)  memset(alloca(N), 0, N) |  | 
|  2464 # define sqlite3StackFree(D,P)        |  | 
|  2465 #else |  | 
|  2466 # define sqlite3StackAllocRaw(D,N)   sqlite3DbMallocRaw(D,N) |  | 
|  2467 # define sqlite3StackAllocZero(D,N)  sqlite3DbMallocZero(D,N) |  | 
|  2468 # define sqlite3StackFree(D,P)       sqlite3DbFree(D,P) |  | 
|  2469 #endif |  | 
|  2470  |  | 
|  2471 #ifdef SQLITE_ENABLE_MEMSYS3 |  | 
|  2472 const sqlite3_mem_methods *sqlite3MemGetMemsys3(void); |  | 
|  2473 #endif |  | 
|  2474 #ifdef SQLITE_ENABLE_MEMSYS5 |  | 
|  2475 const sqlite3_mem_methods *sqlite3MemGetMemsys5(void); |  | 
|  2476 #endif |  | 
|  2477  |  | 
|  2478  |  | 
|  2479 #ifndef SQLITE_MUTEX_OMIT |  | 
|  2480   sqlite3_mutex_methods *sqlite3DefaultMutex(void); |  | 
|  2481   sqlite3_mutex *sqlite3MutexAlloc(int); |  | 
|  2482   int sqlite3MutexInit(void); |  | 
|  2483   int sqlite3MutexEnd(void); |  | 
|  2484 #endif |  | 
|  2485  |  | 
|  2486 int sqlite3StatusValue(int); |  | 
|  2487 void sqlite3StatusAdd(int, int); |  | 
|  2488 void sqlite3StatusSet(int, int); |  | 
|  2489  |  | 
|  2490 int sqlite3IsNaN(double); |  | 
|  2491  |  | 
|  2492 void sqlite3VXPrintf(StrAccum*, int, const char*, va_list); |  | 
|  2493 char *sqlite3MPrintf(sqlite3*,const char*, ...); |  | 
|  2494 char *sqlite3VMPrintf(sqlite3*,const char*, va_list); |  | 
|  2495 char *sqlite3MAppendf(sqlite3*,char*,const char*,...); |  | 
|  2496 #if defined(SQLITE_TEST) || defined(SQLITE_DEBUG) |  | 
|  2497   void sqlite3DebugPrintf(const char*, ...); |  | 
|  2498 #endif |  | 
|  2499 #if defined(SQLITE_TEST) |  | 
|  2500   void *sqlite3TestTextToPtr(const char*); |  | 
|  2501 #endif |  | 
|  2502 void sqlite3SetString(char **, sqlite3*, const char*, ...); |  | 
|  2503 void sqlite3ErrorMsg(Parse*, const char*, ...); |  | 
|  2504 void sqlite3ErrorClear(Parse*); |  | 
|  2505 int sqlite3Dequote(char*); |  | 
|  2506 int sqlite3KeywordCode(const unsigned char*, int); |  | 
|  2507 int sqlite3RunParser(Parse*, const char*, char **); |  | 
|  2508 void sqlite3FinishCoding(Parse*); |  | 
|  2509 int sqlite3GetTempReg(Parse*); |  | 
|  2510 void sqlite3ReleaseTempReg(Parse*,int); |  | 
|  2511 int sqlite3GetTempRange(Parse*,int); |  | 
|  2512 void sqlite3ReleaseTempRange(Parse*,int,int); |  | 
|  2513 Expr *sqlite3ExprAlloc(sqlite3*,int,const Token*,int); |  | 
|  2514 Expr *sqlite3Expr(sqlite3*,int,const char*); |  | 
|  2515 void sqlite3ExprAttachSubtrees(sqlite3*,Expr*,Expr*,Expr*); |  | 
|  2516 Expr *sqlite3PExpr(Parse*, int, Expr*, Expr*, const Token*); |  | 
|  2517 Expr *sqlite3ExprAnd(sqlite3*,Expr*, Expr*); |  | 
|  2518 Expr *sqlite3ExprFunction(Parse*,ExprList*, Token*); |  | 
|  2519 void sqlite3ExprAssignVarNumber(Parse*, Expr*); |  | 
|  2520 void sqlite3ExprClear(sqlite3*, Expr*); |  | 
|  2521 void sqlite3ExprDelete(sqlite3*, Expr*); |  | 
|  2522 ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*); |  | 
|  2523 void sqlite3ExprListSetName(Parse*,ExprList*,Token*,int); |  | 
|  2524 void sqlite3ExprListSetSpan(Parse*,ExprList*,ExprSpan*); |  | 
|  2525 void sqlite3ExprListDelete(sqlite3*, ExprList*); |  | 
|  2526 int sqlite3Init(sqlite3*, char**); |  | 
|  2527 int sqlite3InitCallback(void*, int, char**, char**); |  | 
|  2528 void sqlite3Pragma(Parse*,Token*,Token*,Token*,int); |  | 
|  2529 void sqlite3ResetInternalSchema(sqlite3*, int); |  | 
|  2530 void sqlite3BeginParse(Parse*,int); |  | 
|  2531 void sqlite3CommitInternalChanges(sqlite3*); |  | 
|  2532 Table *sqlite3ResultSetOfSelect(Parse*,Select*); |  | 
|  2533 void sqlite3OpenMasterTable(Parse *, int); |  | 
|  2534 void sqlite3StartTable(Parse*,Token*,Token*,int,int,int,int); |  | 
|  2535 void sqlite3AddColumn(Parse*,Token*); |  | 
|  2536 void sqlite3AddNotNull(Parse*, int); |  | 
|  2537 void sqlite3AddPrimaryKey(Parse*, ExprList*, int, int, int); |  | 
|  2538 void sqlite3AddCheckConstraint(Parse*, Expr*); |  | 
|  2539 void sqlite3AddColumnType(Parse*,Token*); |  | 
|  2540 void sqlite3AddDefaultValue(Parse*,ExprSpan*); |  | 
|  2541 void sqlite3AddCollateType(Parse*, Token*); |  | 
|  2542 void sqlite3EndTable(Parse*,Token*,Token*,Select*); |  | 
|  2543  |  | 
|  2544 Bitvec *sqlite3BitvecCreate(u32); |  | 
|  2545 int sqlite3BitvecTest(Bitvec*, u32); |  | 
|  2546 int sqlite3BitvecSet(Bitvec*, u32); |  | 
|  2547 void sqlite3BitvecClear(Bitvec*, u32, void*); |  | 
|  2548 void sqlite3BitvecDestroy(Bitvec*); |  | 
|  2549 u32 sqlite3BitvecSize(Bitvec*); |  | 
|  2550 int sqlite3BitvecBuiltinTest(int,int*); |  | 
|  2551  |  | 
|  2552 RowSet *sqlite3RowSetInit(sqlite3*, void*, unsigned int); |  | 
|  2553 void sqlite3RowSetClear(RowSet*); |  | 
|  2554 void sqlite3RowSetInsert(RowSet*, i64); |  | 
|  2555 int sqlite3RowSetTest(RowSet*, u8 iBatch, i64); |  | 
|  2556 int sqlite3RowSetNext(RowSet*, i64*); |  | 
|  2557  |  | 
|  2558 void sqlite3CreateView(Parse*,Token*,Token*,Token*,Select*,int,int); |  | 
|  2559  |  | 
|  2560 #if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE) |  | 
|  2561   int sqlite3ViewGetColumnNames(Parse*,Table*); |  | 
|  2562 #else |  | 
|  2563 # define sqlite3ViewGetColumnNames(A,B) 0 |  | 
|  2564 #endif |  | 
|  2565  |  | 
|  2566 void sqlite3DropTable(Parse*, SrcList*, int, int); |  | 
|  2567 void sqlite3DeleteTable(Table*); |  | 
|  2568 #ifndef SQLITE_OMIT_AUTOINCREMENT |  | 
|  2569   void sqlite3AutoincrementBegin(Parse *pParse); |  | 
|  2570   void sqlite3AutoincrementEnd(Parse *pParse); |  | 
|  2571 #else |  | 
|  2572 # define sqlite3AutoincrementBegin(X) |  | 
|  2573 # define sqlite3AutoincrementEnd(X) |  | 
|  2574 #endif |  | 
|  2575 void sqlite3Insert(Parse*, SrcList*, ExprList*, Select*, IdList*, int); |  | 
|  2576 void *sqlite3ArrayAllocate(sqlite3*,void*,int,int,int*,int*,int*); |  | 
|  2577 IdList *sqlite3IdListAppend(sqlite3*, IdList*, Token*); |  | 
|  2578 int sqlite3IdListIndex(IdList*,const char*); |  | 
|  2579 SrcList *sqlite3SrcListEnlarge(sqlite3*, SrcList*, int, int); |  | 
|  2580 SrcList *sqlite3SrcListAppend(sqlite3*, SrcList*, Token*, Token*); |  | 
|  2581 SrcList *sqlite3SrcListAppendFromTerm(Parse*, SrcList*, Token*, Token*, |  | 
|  2582                                       Token*, Select*, Expr*, IdList*); |  | 
|  2583 void sqlite3SrcListIndexedBy(Parse *, SrcList *, Token *); |  | 
|  2584 int sqlite3IndexedByLookup(Parse *, struct SrcList_item *); |  | 
|  2585 void sqlite3SrcListShiftJoinType(SrcList*); |  | 
|  2586 void sqlite3SrcListAssignCursors(Parse*, SrcList*); |  | 
|  2587 void sqlite3IdListDelete(sqlite3*, IdList*); |  | 
|  2588 void sqlite3SrcListDelete(sqlite3*, SrcList*); |  | 
|  2589 void sqlite3CreateIndex(Parse*,Token*,Token*,SrcList*,ExprList*,int,Token*, |  | 
|  2590                         Token*, int, int); |  | 
|  2591 void sqlite3DropIndex(Parse*, SrcList*, int); |  | 
|  2592 int sqlite3Select(Parse*, Select*, SelectDest*); |  | 
|  2593 Select *sqlite3SelectNew(Parse*,ExprList*,SrcList*,Expr*,ExprList*, |  | 
|  2594                          Expr*,ExprList*,int,Expr*,Expr*); |  | 
|  2595 void sqlite3SelectDelete(sqlite3*, Select*); |  | 
|  2596 Table *sqlite3SrcListLookup(Parse*, SrcList*); |  | 
|  2597 int sqlite3IsReadOnly(Parse*, Table*, int); |  | 
|  2598 void sqlite3OpenTable(Parse*, int iCur, int iDb, Table*, int); |  | 
|  2599 #if defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT) && !defined(SQLITE_OMIT_SUBQUERY) |  | 
|  2600 Expr *sqlite3LimitWhere(Parse *, SrcList *, Expr *, ExprList *, Expr *, Expr *, 
      char *); |  | 
|  2601 #endif |  | 
|  2602 void sqlite3DeleteFrom(Parse*, SrcList*, Expr*); |  | 
|  2603 void sqlite3Update(Parse*, SrcList*, ExprList*, Expr*, int); |  | 
|  2604 WhereInfo *sqlite3WhereBegin(Parse*, SrcList*, Expr*, ExprList**, u16); |  | 
|  2605 void sqlite3WhereEnd(WhereInfo*); |  | 
|  2606 int sqlite3ExprCodeGetColumn(Parse*, Table*, int, int, int, int); |  | 
|  2607 void sqlite3ExprCodeMove(Parse*, int, int, int); |  | 
|  2608 void sqlite3ExprCodeCopy(Parse*, int, int, int); |  | 
|  2609 void sqlite3ExprCacheStore(Parse*, int, int, int); |  | 
|  2610 void sqlite3ExprCachePush(Parse*); |  | 
|  2611 void sqlite3ExprCachePop(Parse*, int); |  | 
|  2612 void sqlite3ExprCacheRemove(Parse*, int); |  | 
|  2613 void sqlite3ExprCacheClear(Parse*); |  | 
|  2614 void sqlite3ExprCacheAffinityChange(Parse*, int, int); |  | 
|  2615 void sqlite3ExprHardCopy(Parse*,int,int); |  | 
|  2616 int sqlite3ExprCode(Parse*, Expr*, int); |  | 
|  2617 int sqlite3ExprCodeTemp(Parse*, Expr*, int*); |  | 
|  2618 int sqlite3ExprCodeTarget(Parse*, Expr*, int); |  | 
|  2619 int sqlite3ExprCodeAndCache(Parse*, Expr*, int); |  | 
|  2620 void sqlite3ExprCodeConstants(Parse*, Expr*); |  | 
|  2621 int sqlite3ExprCodeExprList(Parse*, ExprList*, int, int); |  | 
|  2622 void sqlite3ExprIfTrue(Parse*, Expr*, int, int); |  | 
|  2623 void sqlite3ExprIfFalse(Parse*, Expr*, int, int); |  | 
|  2624 Table *sqlite3FindTable(sqlite3*,const char*, const char*); |  | 
|  2625 Table *sqlite3LocateTable(Parse*,int isView,const char*, const char*); |  | 
|  2626 Index *sqlite3FindIndex(sqlite3*,const char*, const char*); |  | 
|  2627 void sqlite3UnlinkAndDeleteTable(sqlite3*,int,const char*); |  | 
|  2628 void sqlite3UnlinkAndDeleteIndex(sqlite3*,int,const char*); |  | 
|  2629 void sqlite3Vacuum(Parse*); |  | 
|  2630 int sqlite3RunVacuum(char**, sqlite3*); |  | 
|  2631 char *sqlite3NameFromToken(sqlite3*, Token*); |  | 
|  2632 int sqlite3ExprCompare(Expr*, Expr*); |  | 
|  2633 void sqlite3ExprAnalyzeAggregates(NameContext*, Expr*); |  | 
|  2634 void sqlite3ExprAnalyzeAggList(NameContext*,ExprList*); |  | 
|  2635 Vdbe *sqlite3GetVdbe(Parse*); |  | 
|  2636 Expr *sqlite3CreateIdExpr(Parse *, const char*); |  | 
|  2637 void sqlite3PrngSaveState(void); |  | 
|  2638 void sqlite3PrngRestoreState(void); |  | 
|  2639 void sqlite3PrngResetState(void); |  | 
|  2640 void sqlite3RollbackAll(sqlite3*); |  | 
|  2641 void sqlite3CodeVerifySchema(Parse*, int); |  | 
|  2642 void sqlite3BeginTransaction(Parse*, int); |  | 
|  2643 void sqlite3CommitTransaction(Parse*); |  | 
|  2644 void sqlite3RollbackTransaction(Parse*); |  | 
|  2645 void sqlite3Savepoint(Parse*, int, Token*); |  | 
|  2646 void sqlite3CloseSavepoints(sqlite3 *); |  | 
|  2647 int sqlite3ExprIsConstant(Expr*); |  | 
|  2648 int sqlite3ExprIsConstantNotJoin(Expr*); |  | 
|  2649 int sqlite3ExprIsConstantOrFunction(Expr*); |  | 
|  2650 int sqlite3ExprIsInteger(Expr*, int*); |  | 
|  2651 int sqlite3IsRowid(const char*); |  | 
|  2652 void sqlite3GenerateRowDelete(Parse*, Table*, int, int, int, Trigger *, int); |  | 
|  2653 void sqlite3GenerateRowIndexDelete(Parse*, Table*, int, int*); |  | 
|  2654 int sqlite3GenerateIndexKey(Parse*, Index*, int, int, int); |  | 
|  2655 void sqlite3GenerateConstraintChecks(Parse*,Table*,int,int, |  | 
|  2656                                      int*,int,int,int,int,int*); |  | 
|  2657 void sqlite3CompleteInsertion(Parse*, Table*, int, int, int*, int, int, int); |  | 
|  2658 int sqlite3OpenTableAndIndices(Parse*, Table*, int, int); |  | 
|  2659 void sqlite3BeginWriteOperation(Parse*, int, int); |  | 
|  2660 void sqlite3MayAbort(Parse *); |  | 
|  2661 void sqlite3HaltConstraint(Parse*, int, char*, int); |  | 
|  2662 Expr *sqlite3ExprDup(sqlite3*,Expr*,int); |  | 
|  2663 ExprList *sqlite3ExprListDup(sqlite3*,ExprList*,int); |  | 
|  2664 SrcList *sqlite3SrcListDup(sqlite3*,SrcList*,int); |  | 
|  2665 IdList *sqlite3IdListDup(sqlite3*,IdList*); |  | 
|  2666 Select *sqlite3SelectDup(sqlite3*,Select*,int); |  | 
|  2667 void sqlite3FuncDefInsert(FuncDefHash*, FuncDef*); |  | 
|  2668 FuncDef *sqlite3FindFunction(sqlite3*,const char*,int,int,u8,int); |  | 
|  2669 void sqlite3RegisterBuiltinFunctions(sqlite3*); |  | 
|  2670 void sqlite3RegisterDateTimeFunctions(void); |  | 
|  2671 void sqlite3RegisterGlobalFunctions(void); |  | 
|  2672 #ifdef SQLITE_DEBUG |  | 
|  2673   int sqlite3SafetyOn(sqlite3*); |  | 
|  2674   int sqlite3SafetyOff(sqlite3*); |  | 
|  2675 #else |  | 
|  2676 # define sqlite3SafetyOn(A) 0 |  | 
|  2677 # define sqlite3SafetyOff(A) 0 |  | 
|  2678 #endif |  | 
|  2679 int sqlite3SafetyCheckOk(sqlite3*); |  | 
|  2680 int sqlite3SafetyCheckSickOrOk(sqlite3*); |  | 
|  2681 void sqlite3ChangeCookie(Parse*, int); |  | 
|  2682  |  | 
|  2683 #if !defined(SQLITE_OMIT_VIEW) && !defined(SQLITE_OMIT_TRIGGER) |  | 
|  2684 void sqlite3MaterializeView(Parse*, Table*, Expr*, int); |  | 
|  2685 #endif |  | 
|  2686  |  | 
|  2687 #ifndef SQLITE_OMIT_TRIGGER |  | 
|  2688   void sqlite3BeginTrigger(Parse*, Token*,Token*,int,int,IdList*,SrcList*, |  | 
|  2689                            Expr*,int, int); |  | 
|  2690   void sqlite3FinishTrigger(Parse*, TriggerStep*, Token*); |  | 
|  2691   void sqlite3DropTrigger(Parse*, SrcList*, int); |  | 
|  2692   void sqlite3DropTriggerPtr(Parse*, Trigger*); |  | 
|  2693   Trigger *sqlite3TriggersExist(Parse *, Table*, int, ExprList*, int *pMask); |  | 
|  2694   Trigger *sqlite3TriggerList(Parse *, Table *); |  | 
|  2695   void sqlite3CodeRowTrigger(Parse*, Trigger *, int, ExprList*, int, Table *, |  | 
|  2696                             int, int, int, int); |  | 
|  2697   void sqliteViewTriggers(Parse*, Table*, Expr*, int, ExprList*); |  | 
|  2698   void sqlite3DeleteTriggerStep(sqlite3*, TriggerStep*); |  | 
|  2699   TriggerStep *sqlite3TriggerSelectStep(sqlite3*,Select*); |  | 
|  2700   TriggerStep *sqlite3TriggerInsertStep(sqlite3*,Token*, IdList*, |  | 
|  2701                                         ExprList*,Select*,u8); |  | 
|  2702   TriggerStep *sqlite3TriggerUpdateStep(sqlite3*,Token*,ExprList*, Expr*, u8); |  | 
|  2703   TriggerStep *sqlite3TriggerDeleteStep(sqlite3*,Token*, Expr*); |  | 
|  2704   void sqlite3DeleteTrigger(sqlite3*, Trigger*); |  | 
|  2705   void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*); |  | 
|  2706   u32 sqlite3TriggerOldmask(Parse*,Trigger*,int,ExprList*,Table*,int); |  | 
|  2707 # define sqlite3ParseToplevel(p) ((p)->pToplevel ? (p)->pToplevel : (p)) |  | 
|  2708 #else |  | 
|  2709 # define sqlite3TriggersExist(B,C,D,E,F) 0 |  | 
|  2710 # define sqlite3DeleteTrigger(A,B) |  | 
|  2711 # define sqlite3DropTriggerPtr(A,B) |  | 
|  2712 # define sqlite3UnlinkAndDeleteTrigger(A,B,C) |  | 
|  2713 # define sqlite3CodeRowTrigger(A,B,C,D,E,F,G,H,I,J) |  | 
|  2714 # define sqlite3TriggerList(X, Y) 0 |  | 
|  2715 # define sqlite3ParseToplevel(p) p |  | 
|  2716 # define sqlite3TriggerOldmask(A,B,C,D,E,F) 0 |  | 
|  2717 #endif |  | 
|  2718  |  | 
|  2719 int sqlite3JoinType(Parse*, Token*, Token*, Token*); |  | 
|  2720 void sqlite3CreateForeignKey(Parse*, ExprList*, Token*, ExprList*, int); |  | 
|  2721 void sqlite3DeferForeignKey(Parse*, int); |  | 
|  2722 #ifndef SQLITE_OMIT_AUTHORIZATION |  | 
|  2723   void sqlite3AuthRead(Parse*,Expr*,Schema*,SrcList*); |  | 
|  2724   int sqlite3AuthCheck(Parse*,int, const char*, const char*, const char*); |  | 
|  2725   void sqlite3AuthContextPush(Parse*, AuthContext*, const char*); |  | 
|  2726   void sqlite3AuthContextPop(AuthContext*); |  | 
|  2727 #else |  | 
|  2728 # define sqlite3AuthRead(a,b,c,d) |  | 
|  2729 # define sqlite3AuthCheck(a,b,c,d,e)    SQLITE_OK |  | 
|  2730 # define sqlite3AuthContextPush(a,b,c) |  | 
|  2731 # define sqlite3AuthContextPop(a)  ((void)(a)) |  | 
|  2732 #endif |  | 
|  2733 void sqlite3Attach(Parse*, Expr*, Expr*, Expr*); |  | 
|  2734 void sqlite3Detach(Parse*, Expr*); |  | 
|  2735 int sqlite3BtreeFactory(const sqlite3 *db, const char *zFilename, |  | 
|  2736                        int omitJournal, int nCache, int flags, Btree **ppBtree); |  | 
|  2737 int sqlite3FixInit(DbFixer*, Parse*, int, const char*, const Token*); |  | 
|  2738 int sqlite3FixSrcList(DbFixer*, SrcList*); |  | 
|  2739 int sqlite3FixSelect(DbFixer*, Select*); |  | 
|  2740 int sqlite3FixExpr(DbFixer*, Expr*); |  | 
|  2741 int sqlite3FixExprList(DbFixer*, ExprList*); |  | 
|  2742 int sqlite3FixTriggerStep(DbFixer*, TriggerStep*); |  | 
|  2743 int sqlite3AtoF(const char *z, double*); |  | 
|  2744 int sqlite3GetInt32(const char *, int*); |  | 
|  2745 int sqlite3FitsIn64Bits(const char *, int); |  | 
|  2746 int sqlite3Utf16ByteLen(const void *pData, int nChar); |  | 
|  2747 int sqlite3Utf8CharLen(const char *pData, int nByte); |  | 
|  2748 int sqlite3Utf8Read(const u8*, const u8**); |  | 
|  2749  |  | 
|  2750 /* |  | 
|  2751 ** Routines to read and write variable-length integers.  These used to |  | 
|  2752 ** be defined locally, but now we use the varint routines in the util.c |  | 
|  2753 ** file.  Code should use the MACRO forms below, as the Varint32 versions |  | 
|  2754 ** are coded to assume the single byte case is already handled (which  |  | 
|  2755 ** the MACRO form does). |  | 
|  2756 */ |  | 
|  2757 int sqlite3PutVarint(unsigned char*, u64); |  | 
|  2758 int sqlite3PutVarint32(unsigned char*, u32); |  | 
|  2759 u8 sqlite3GetVarint(const unsigned char *, u64 *); |  | 
|  2760 u8 sqlite3GetVarint32(const unsigned char *, u32 *); |  | 
|  2761 int sqlite3VarintLen(u64 v); |  | 
|  2762  |  | 
|  2763 /* |  | 
|  2764 ** The header of a record consists of a sequence variable-length integers. |  | 
|  2765 ** These integers are almost always small and are encoded as a single byte. |  | 
|  2766 ** The following macros take advantage this fact to provide a fast encode |  | 
|  2767 ** and decode of the integers in a record header.  It is faster for the common |  | 
|  2768 ** case where the integer is a single byte.  It is a little slower when the |  | 
|  2769 ** integer is two or more bytes.  But overall it is faster. |  | 
|  2770 ** |  | 
|  2771 ** The following expressions are equivalent: |  | 
|  2772 ** |  | 
|  2773 **     x = sqlite3GetVarint32( A, &B ); |  | 
|  2774 **     x = sqlite3PutVarint32( A, B ); |  | 
|  2775 ** |  | 
|  2776 **     x = getVarint32( A, B ); |  | 
|  2777 **     x = putVarint32( A, B ); |  | 
|  2778 ** |  | 
|  2779 */ |  | 
|  2780 #define getVarint32(A,B)  (u8)((*(A)<(u8)0x80) ? ((B) = (u32)*(A)),1 : sqlite3Ge
      tVarint32((A), (u32 *)&(B))) |  | 
|  2781 #define putVarint32(A,B)  (u8)(((u32)(B)<(u32)0x80) ? (*(A) = (unsigned char)(B)
      ),1 : sqlite3PutVarint32((A), (B))) |  | 
|  2782 #define getVarint    sqlite3GetVarint |  | 
|  2783 #define putVarint    sqlite3PutVarint |  | 
|  2784  |  | 
|  2785  |  | 
|  2786 const char *sqlite3IndexAffinityStr(Vdbe *, Index *); |  | 
|  2787 void sqlite3TableAffinityStr(Vdbe *, Table *); |  | 
|  2788 char sqlite3CompareAffinity(Expr *pExpr, char aff2); |  | 
|  2789 int sqlite3IndexAffinityOk(Expr *pExpr, char idx_affinity); |  | 
|  2790 char sqlite3ExprAffinity(Expr *pExpr); |  | 
|  2791 int sqlite3Atoi64(const char*, i64*); |  | 
|  2792 void sqlite3Error(sqlite3*, int, const char*,...); |  | 
|  2793 void *sqlite3HexToBlob(sqlite3*, const char *z, int n); |  | 
|  2794 int sqlite3TwoPartName(Parse *, Token *, Token *, Token **); |  | 
|  2795 const char *sqlite3ErrStr(int); |  | 
|  2796 int sqlite3ReadSchema(Parse *pParse); |  | 
|  2797 CollSeq *sqlite3FindCollSeq(sqlite3*,u8 enc, const char*,int); |  | 
|  2798 CollSeq *sqlite3LocateCollSeq(Parse *pParse, const char*zName); |  | 
|  2799 CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr); |  | 
|  2800 Expr *sqlite3ExprSetColl(Parse *pParse, Expr *, Token *); |  | 
|  2801 int sqlite3CheckCollSeq(Parse *, CollSeq *); |  | 
|  2802 int sqlite3CheckObjectName(Parse *, const char *); |  | 
|  2803 void sqlite3VdbeSetChanges(sqlite3 *, int); |  | 
|  2804  |  | 
|  2805 const void *sqlite3ValueText(sqlite3_value*, u8); |  | 
|  2806 int sqlite3ValueBytes(sqlite3_value*, u8); |  | 
|  2807 void sqlite3ValueSetStr(sqlite3_value*, int, const void *,u8,  |  | 
|  2808                         void(*)(void*)); |  | 
|  2809 void sqlite3ValueFree(sqlite3_value*); |  | 
|  2810 sqlite3_value *sqlite3ValueNew(sqlite3 *); |  | 
|  2811 char *sqlite3Utf16to8(sqlite3 *, const void*, int); |  | 
|  2812 #ifdef SQLITE_ENABLE_STAT2 |  | 
|  2813 char *sqlite3Utf8to16(sqlite3 *, u8, char *, int, int *); |  | 
|  2814 #endif |  | 
|  2815 int sqlite3ValueFromExpr(sqlite3 *, Expr *, u8, u8, sqlite3_value **); |  | 
|  2816 void sqlite3ValueApplyAffinity(sqlite3_value *, u8, u8); |  | 
|  2817 #ifndef SQLITE_AMALGAMATION |  | 
|  2818 extern const unsigned char sqlite3UpperToLower[]; |  | 
|  2819 extern const unsigned char sqlite3CtypeMap[]; |  | 
|  2820 extern SQLITE_WSD struct Sqlite3Config sqlite3Config; |  | 
|  2821 extern SQLITE_WSD FuncDefHash sqlite3GlobalFunctions; |  | 
|  2822 extern int sqlite3PendingByte; |  | 
|  2823 #endif |  | 
|  2824 void sqlite3RootPageMoved(Db*, int, int); |  | 
|  2825 void sqlite3Reindex(Parse*, Token*, Token*); |  | 
|  2826 void sqlite3AlterFunctions(sqlite3*); |  | 
|  2827 void sqlite3AlterRenameTable(Parse*, SrcList*, Token*); |  | 
|  2828 int sqlite3GetToken(const unsigned char *, int *); |  | 
|  2829 void sqlite3NestedParse(Parse*, const char*, ...); |  | 
|  2830 void sqlite3ExpirePreparedStatements(sqlite3*); |  | 
|  2831 void sqlite3CodeSubselect(Parse *, Expr *, int, int); |  | 
|  2832 void sqlite3SelectPrep(Parse*, Select*, NameContext*); |  | 
|  2833 int sqlite3ResolveExprNames(NameContext*, Expr*); |  | 
|  2834 void sqlite3ResolveSelectNames(Parse*, Select*, NameContext*); |  | 
|  2835 int sqlite3ResolveOrderGroupBy(Parse*, Select*, ExprList*, const char*); |  | 
|  2836 void sqlite3ColumnDefault(Vdbe *, Table *, int, int); |  | 
|  2837 void sqlite3AlterFinishAddColumn(Parse *, Token *); |  | 
|  2838 void sqlite3AlterBeginAddColumn(Parse *, SrcList *); |  | 
|  2839 CollSeq *sqlite3GetCollSeq(sqlite3*, u8, CollSeq *, const char*); |  | 
|  2840 char sqlite3AffinityType(const char*); |  | 
|  2841 void sqlite3Analyze(Parse*, Token*, Token*); |  | 
|  2842 int sqlite3InvokeBusyHandler(BusyHandler*); |  | 
|  2843 int sqlite3FindDb(sqlite3*, Token*); |  | 
|  2844 int sqlite3FindDbName(sqlite3 *, const char *); |  | 
|  2845 int sqlite3AnalysisLoad(sqlite3*,int iDB); |  | 
|  2846 void sqlite3DeleteIndexSamples(Index*); |  | 
|  2847 void sqlite3DefaultRowEst(Index*); |  | 
|  2848 void sqlite3RegisterLikeFunctions(sqlite3*, int); |  | 
|  2849 int sqlite3IsLikeFunction(sqlite3*,Expr*,int*,char*); |  | 
|  2850 void sqlite3MinimumFileFormat(Parse*, int, int); |  | 
|  2851 void sqlite3SchemaFree(void *); |  | 
|  2852 Schema *sqlite3SchemaGet(sqlite3 *, Btree *); |  | 
|  2853 int sqlite3SchemaToIndex(sqlite3 *db, Schema *); |  | 
|  2854 KeyInfo *sqlite3IndexKeyinfo(Parse *, Index *); |  | 
|  2855 int sqlite3CreateFunc(sqlite3 *, const char *, int, int, void *,  |  | 
|  2856   void (*)(sqlite3_context*,int,sqlite3_value **), |  | 
|  2857   void (*)(sqlite3_context*,int,sqlite3_value **), void (*)(sqlite3_context*)); |  | 
|  2858 int sqlite3ApiExit(sqlite3 *db, int); |  | 
|  2859 int sqlite3OpenTempDatabase(Parse *); |  | 
|  2860  |  | 
|  2861 void sqlite3StrAccumInit(StrAccum*, char*, int, int); |  | 
|  2862 void sqlite3StrAccumAppend(StrAccum*,const char*,int); |  | 
|  2863 char *sqlite3StrAccumFinish(StrAccum*); |  | 
|  2864 void sqlite3StrAccumReset(StrAccum*); |  | 
|  2865 void sqlite3SelectDestInit(SelectDest*,int,int); |  | 
|  2866  |  | 
|  2867 void sqlite3BackupRestart(sqlite3_backup *); |  | 
|  2868 void sqlite3BackupUpdate(sqlite3_backup *, Pgno, const u8 *); |  | 
|  2869  |  | 
|  2870 /* |  | 
|  2871 ** The interface to the LEMON-generated parser |  | 
|  2872 */ |  | 
|  2873 void *sqlite3ParserAlloc(void*(*)(size_t)); |  | 
|  2874 void sqlite3ParserFree(void*, void(*)(void*)); |  | 
|  2875 void sqlite3Parser(void*, int, Token, Parse*); |  | 
|  2876 #ifdef YYTRACKMAXSTACKDEPTH |  | 
|  2877   int sqlite3ParserStackPeak(void*); |  | 
|  2878 #endif |  | 
|  2879  |  | 
|  2880 void sqlite3AutoLoadExtensions(sqlite3*); |  | 
|  2881 #ifndef SQLITE_OMIT_LOAD_EXTENSION |  | 
|  2882   void sqlite3CloseExtensions(sqlite3*); |  | 
|  2883 #else |  | 
|  2884 # define sqlite3CloseExtensions(X) |  | 
|  2885 #endif |  | 
|  2886  |  | 
|  2887 #ifndef SQLITE_OMIT_SHARED_CACHE |  | 
|  2888   void sqlite3TableLock(Parse *, int, int, u8, const char *); |  | 
|  2889 #else |  | 
|  2890   #define sqlite3TableLock(v,w,x,y,z) |  | 
|  2891 #endif |  | 
|  2892  |  | 
|  2893 #ifdef SQLITE_TEST |  | 
|  2894   int sqlite3Utf8To8(unsigned char*); |  | 
|  2895 #endif |  | 
|  2896  |  | 
|  2897 #ifdef SQLITE_OMIT_VIRTUALTABLE |  | 
|  2898 #  define sqlite3VtabClear(Y) |  | 
|  2899 #  define sqlite3VtabSync(X,Y) SQLITE_OK |  | 
|  2900 #  define sqlite3VtabRollback(X) |  | 
|  2901 #  define sqlite3VtabCommit(X) |  | 
|  2902 #  define sqlite3VtabInSync(db) 0 |  | 
|  2903 #  define sqlite3VtabLock(X)  |  | 
|  2904 #  define sqlite3VtabUnlock(X) |  | 
|  2905 #  define sqlite3VtabUnlockList(X) |  | 
|  2906 #else |  | 
|  2907    void sqlite3VtabClear(Table*); |  | 
|  2908    int sqlite3VtabSync(sqlite3 *db, char **); |  | 
|  2909    int sqlite3VtabRollback(sqlite3 *db); |  | 
|  2910    int sqlite3VtabCommit(sqlite3 *db); |  | 
|  2911    void sqlite3VtabLock(VTable *); |  | 
|  2912    void sqlite3VtabUnlock(VTable *); |  | 
|  2913    void sqlite3VtabUnlockList(sqlite3*); |  | 
|  2914 #  define sqlite3VtabInSync(db) ((db)->nVTrans>0 && (db)->aVTrans==0) |  | 
|  2915 #endif |  | 
|  2916 void sqlite3VtabMakeWritable(Parse*,Table*); |  | 
|  2917 void sqlite3VtabBeginParse(Parse*, Token*, Token*, Token*); |  | 
|  2918 void sqlite3VtabFinishParse(Parse*, Token*); |  | 
|  2919 void sqlite3VtabArgInit(Parse*); |  | 
|  2920 void sqlite3VtabArgExtend(Parse*, Token*); |  | 
|  2921 int sqlite3VtabCallCreate(sqlite3*, int, const char *, char **); |  | 
|  2922 int sqlite3VtabCallConnect(Parse*, Table*); |  | 
|  2923 int sqlite3VtabCallDestroy(sqlite3*, int, const char *); |  | 
|  2924 int sqlite3VtabBegin(sqlite3 *, VTable *); |  | 
|  2925 FuncDef *sqlite3VtabOverloadFunction(sqlite3 *,FuncDef*, int nArg, Expr*); |  | 
|  2926 void sqlite3InvalidFunction(sqlite3_context*,int,sqlite3_value**); |  | 
|  2927 int sqlite3TransferBindings(sqlite3_stmt *, sqlite3_stmt *); |  | 
|  2928 int sqlite3Reprepare(Vdbe*); |  | 
|  2929 void sqlite3ExprListCheckLength(Parse*, ExprList*, const char*); |  | 
|  2930 CollSeq *sqlite3BinaryCompareCollSeq(Parse *, Expr *, Expr *); |  | 
|  2931 int sqlite3TempInMemory(const sqlite3*); |  | 
|  2932 VTable *sqlite3GetVTable(sqlite3*, Table*); |  | 
|  2933  |  | 
|  2934  |  | 
|  2935  |  | 
|  2936 /* |  | 
|  2937 ** Available fault injectors.  Should be numbered beginning with 0. |  | 
|  2938 */ |  | 
|  2939 #define SQLITE_FAULTINJECTOR_MALLOC     0 |  | 
|  2940 #define SQLITE_FAULTINJECTOR_COUNT      1 |  | 
|  2941  |  | 
|  2942 /* |  | 
|  2943 ** The interface to the code in fault.c used for identifying "benign" |  | 
|  2944 ** malloc failures. This is only present if SQLITE_OMIT_BUILTIN_TEST |  | 
|  2945 ** is not defined. |  | 
|  2946 */ |  | 
|  2947 #ifndef SQLITE_OMIT_BUILTIN_TEST |  | 
|  2948   void sqlite3BeginBenignMalloc(void); |  | 
|  2949   void sqlite3EndBenignMalloc(void); |  | 
|  2950 #else |  | 
|  2951   #define sqlite3BeginBenignMalloc() |  | 
|  2952   #define sqlite3EndBenignMalloc() |  | 
|  2953 #endif |  | 
|  2954  |  | 
|  2955 #define IN_INDEX_ROWID           1 |  | 
|  2956 #define IN_INDEX_EPH             2 |  | 
|  2957 #define IN_INDEX_INDEX           3 |  | 
|  2958 int sqlite3FindInIndex(Parse *, Expr *, int*); |  | 
|  2959  |  | 
|  2960 #ifdef SQLITE_ENABLE_ATOMIC_WRITE |  | 
|  2961   int sqlite3JournalOpen(sqlite3_vfs *, const char *, sqlite3_file *, int, int); |  | 
|  2962   int sqlite3JournalSize(sqlite3_vfs *); |  | 
|  2963   int sqlite3JournalCreate(sqlite3_file *); |  | 
|  2964 #else |  | 
|  2965   #define sqlite3JournalSize(pVfs) ((pVfs)->szOsFile) |  | 
|  2966 #endif |  | 
|  2967  |  | 
|  2968 void sqlite3MemJournalOpen(sqlite3_file *); |  | 
|  2969 int sqlite3MemJournalSize(void); |  | 
|  2970 int sqlite3IsMemJournal(sqlite3_file *); |  | 
|  2971  |  | 
|  2972 #if SQLITE_MAX_EXPR_DEPTH>0 |  | 
|  2973   void sqlite3ExprSetHeight(Parse *pParse, Expr *p); |  | 
|  2974   int sqlite3SelectExprHeight(Select *); |  | 
|  2975   int sqlite3ExprCheckHeight(Parse*, int); |  | 
|  2976 #else |  | 
|  2977   #define sqlite3ExprSetHeight(x,y) |  | 
|  2978   #define sqlite3SelectExprHeight(x) 0 |  | 
|  2979   #define sqlite3ExprCheckHeight(x,y) |  | 
|  2980 #endif |  | 
|  2981  |  | 
|  2982 u32 sqlite3Get4byte(const u8*); |  | 
|  2983 void sqlite3Put4byte(u8*, u32); |  | 
|  2984  |  | 
|  2985 #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY |  | 
|  2986   void sqlite3ConnectionBlocked(sqlite3 *, sqlite3 *); |  | 
|  2987   void sqlite3ConnectionUnlocked(sqlite3 *db); |  | 
|  2988   void sqlite3ConnectionClosed(sqlite3 *db); |  | 
|  2989 #else |  | 
|  2990   #define sqlite3ConnectionBlocked(x,y) |  | 
|  2991   #define sqlite3ConnectionUnlocked(x) |  | 
|  2992   #define sqlite3ConnectionClosed(x) |  | 
|  2993 #endif |  | 
|  2994  |  | 
|  2995 #ifdef SQLITE_DEBUG |  | 
|  2996   void sqlite3ParserTrace(FILE*, char *); |  | 
|  2997 #endif |  | 
|  2998  |  | 
|  2999 /* |  | 
|  3000 ** If the SQLITE_ENABLE IOTRACE exists then the global variable |  | 
|  3001 ** sqlite3IoTrace is a pointer to a printf-like routine used to |  | 
|  3002 ** print I/O tracing messages.  |  | 
|  3003 */ |  | 
|  3004 #ifdef SQLITE_ENABLE_IOTRACE |  | 
|  3005 # define IOTRACE(A)  if( sqlite3IoTrace ){ sqlite3IoTrace A; } |  | 
|  3006   void sqlite3VdbeIOTraceSql(Vdbe*); |  | 
|  3007 SQLITE_EXTERN void (*sqlite3IoTrace)(const char*,...); |  | 
|  3008 #else |  | 
|  3009 # define IOTRACE(A) |  | 
|  3010 # define sqlite3VdbeIOTraceSql(X) |  | 
|  3011 #endif |  | 
|  3012  |  | 
|  3013 #endif |  | 
| OLD | NEW |