modernc.org/cc@v1.0.1/v2/testdata/_sqlite/src/sqliteInt.h (about)

     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  /* Special Comments:
    19  **
    20  ** Some comments have special meaning to the tools that measure test
    21  ** coverage:
    22  **
    23  **    NO_TEST                     - The branches on this line are not
    24  **                                  measured by branch coverage.  This is
    25  **                                  used on lines of code that actually
    26  **                                  implement parts of coverage testing.
    27  **
    28  **    OPTIMIZATION-IF-TRUE        - This branch is allowed to alway be false
    29  **                                  and the correct answer is still obtained,
    30  **                                  though perhaps more slowly.
    31  **
    32  **    OPTIMIZATION-IF-FALSE       - This branch is allowed to alway be true
    33  **                                  and the correct answer is still obtained,
    34  **                                  though perhaps more slowly.
    35  **
    36  **    PREVENTS-HARMLESS-OVERREAD  - This branch prevents a buffer overread
    37  **                                  that would be harmless and undetectable
    38  **                                  if it did occur.  
    39  **
    40  ** In all cases, the special comment must be enclosed in the usual
    41  ** slash-asterisk...asterisk-slash comment marks, with no spaces between the 
    42  ** asterisks and the comment text.
    43  */
    44  
    45  /*
    46  ** Make sure the Tcl calling convention macro is defined.  This macro is
    47  ** only used by test code and Tcl integration code.
    48  */
    49  #ifndef SQLITE_TCLAPI
    50  #  define SQLITE_TCLAPI
    51  #endif
    52  
    53  /*
    54  ** Include the header file used to customize the compiler options for MSVC.
    55  ** This should be done first so that it can successfully prevent spurious
    56  ** compiler warnings due to subsequent content in this file and other files
    57  ** that are included by this file.
    58  */
    59  #include "msvc.h"
    60  
    61  /*
    62  ** Special setup for VxWorks
    63  */
    64  #include "vxworks.h"
    65  
    66  /*
    67  ** These #defines should enable >2GB file support on POSIX if the
    68  ** underlying operating system supports it.  If the OS lacks
    69  ** large file support, or if the OS is windows, these should be no-ops.
    70  **
    71  ** Ticket #2739:  The _LARGEFILE_SOURCE macro must appear before any
    72  ** system #includes.  Hence, this block of code must be the very first
    73  ** code in all source files.
    74  **
    75  ** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
    76  ** on the compiler command line.  This is necessary if you are compiling
    77  ** on a recent machine (ex: Red Hat 7.2) but you want your code to work
    78  ** on an older machine (ex: Red Hat 6.0).  If you compile on Red Hat 7.2
    79  ** without this option, LFS is enable.  But LFS does not exist in the kernel
    80  ** in Red Hat 6.0, so the code won't work.  Hence, for maximum binary
    81  ** portability you should omit LFS.
    82  **
    83  ** The previous paragraph was written in 2005.  (This paragraph is written
    84  ** on 2008-11-28.) These days, all Linux kernels support large files, so
    85  ** you should probably leave LFS enabled.  But some embedded platforms might
    86  ** lack LFS in which case the SQLITE_DISABLE_LFS macro might still be useful.
    87  **
    88  ** Similar is true for Mac OS X.  LFS is only supported on Mac OS X 9 and later.
    89  */
    90  #ifndef SQLITE_DISABLE_LFS
    91  # define _LARGE_FILE       1
    92  # ifndef _FILE_OFFSET_BITS
    93  #   define _FILE_OFFSET_BITS 64
    94  # endif
    95  # define _LARGEFILE_SOURCE 1
    96  #endif
    97  
    98  /* The GCC_VERSION and MSVC_VERSION macros are used to
    99  ** conditionally include optimizations for each of these compilers.  A
   100  ** value of 0 means that compiler is not being used.  The
   101  ** SQLITE_DISABLE_INTRINSIC macro means do not use any compiler-specific
   102  ** optimizations, and hence set all compiler macros to 0
   103  **
   104  ** There was once also a CLANG_VERSION macro.  However, we learn that the
   105  ** version numbers in clang are for "marketing" only and are inconsistent
   106  ** and unreliable.  Fortunately, all versions of clang also recognize the
   107  ** gcc version numbers and have reasonable settings for gcc version numbers,
   108  ** so the GCC_VERSION macro will be set to a correct non-zero value even
   109  ** when compiling with clang.
   110  */
   111  #if defined(__GNUC__) && !defined(SQLITE_DISABLE_INTRINSIC)
   112  # define GCC_VERSION (__GNUC__*1000000+__GNUC_MINOR__*1000+__GNUC_PATCHLEVEL__)
   113  #else
   114  # define GCC_VERSION 0
   115  #endif
   116  #if defined(_MSC_VER) && !defined(SQLITE_DISABLE_INTRINSIC)
   117  # define MSVC_VERSION _MSC_VER
   118  #else
   119  # define MSVC_VERSION 0
   120  #endif
   121  
   122  /* Needed for various definitions... */
   123  #if defined(__GNUC__) && !defined(_GNU_SOURCE)
   124  # define _GNU_SOURCE
   125  #endif
   126  
   127  #if defined(__OpenBSD__) && !defined(_BSD_SOURCE)
   128  # define _BSD_SOURCE
   129  #endif
   130  
   131  /*
   132  ** For MinGW, check to see if we can include the header file containing its
   133  ** version information, among other things.  Normally, this internal MinGW
   134  ** header file would [only] be included automatically by other MinGW header
   135  ** files; however, the contained version information is now required by this
   136  ** header file to work around binary compatibility issues (see below) and
   137  ** this is the only known way to reliably obtain it.  This entire #if block
   138  ** would be completely unnecessary if there was any other way of detecting
   139  ** MinGW via their preprocessor (e.g. if they customized their GCC to define
   140  ** some MinGW-specific macros).  When compiling for MinGW, either the
   141  ** _HAVE_MINGW_H or _HAVE__MINGW_H (note the extra underscore) macro must be
   142  ** defined; otherwise, detection of conditions specific to MinGW will be
   143  ** disabled.
   144  */
   145  #if defined(_HAVE_MINGW_H)
   146  # include "mingw.h"
   147  #elif defined(_HAVE__MINGW_H)
   148  # include "_mingw.h"
   149  #endif
   150  
   151  /*
   152  ** For MinGW version 4.x (and higher), check to see if the _USE_32BIT_TIME_T
   153  ** define is required to maintain binary compatibility with the MSVC runtime
   154  ** library in use (e.g. for Windows XP).
   155  */
   156  #if !defined(_USE_32BIT_TIME_T) && !defined(_USE_64BIT_TIME_T) && \
   157      defined(_WIN32) && !defined(_WIN64) && \
   158      defined(__MINGW_MAJOR_VERSION) && __MINGW_MAJOR_VERSION >= 4 && \
   159      defined(__MSVCRT__)
   160  # define _USE_32BIT_TIME_T
   161  #endif
   162  
   163  /* The public SQLite interface.  The _FILE_OFFSET_BITS macro must appear
   164  ** first in QNX.  Also, the _USE_32BIT_TIME_T macro must appear first for
   165  ** MinGW.
   166  */
   167  #include "sqlite3.h"
   168  
   169  /*
   170  ** Include the configuration header output by 'configure' if we're using the
   171  ** autoconf-based build
   172  */
   173  #if defined(_HAVE_SQLITE_CONFIG_H) && !defined(SQLITECONFIG_H)
   174  #include "config.h"
   175  #define SQLITECONFIG_H 1
   176  #endif
   177  
   178  #include "sqliteLimit.h"
   179  
   180  /* Disable nuisance warnings on Borland compilers */
   181  #if defined(__BORLANDC__)
   182  #pragma warn -rch /* unreachable code */
   183  #pragma warn -ccc /* Condition is always true or false */
   184  #pragma warn -aus /* Assigned value is never used */
   185  #pragma warn -csu /* Comparing signed and unsigned */
   186  #pragma warn -spa /* Suspicious pointer arithmetic */
   187  #endif
   188  
   189  /*
   190  ** Include standard header files as necessary
   191  */
   192  #ifdef HAVE_STDINT_H
   193  #include <stdint.h>
   194  #endif
   195  #ifdef HAVE_INTTYPES_H
   196  #include <inttypes.h>
   197  #endif
   198  
   199  /*
   200  ** The following macros are used to cast pointers to integers and
   201  ** integers to pointers.  The way you do this varies from one compiler
   202  ** to the next, so we have developed the following set of #if statements
   203  ** to generate appropriate macros for a wide range of compilers.
   204  **
   205  ** The correct "ANSI" way to do this is to use the intptr_t type.
   206  ** Unfortunately, that typedef is not available on all compilers, or
   207  ** if it is available, it requires an #include of specific headers
   208  ** that vary from one machine to the next.
   209  **
   210  ** Ticket #3860:  The llvm-gcc-4.2 compiler from Apple chokes on
   211  ** the ((void*)&((char*)0)[X]) construct.  But MSVC chokes on ((void*)(X)).
   212  ** So we have to define the macros in different ways depending on the
   213  ** compiler.
   214  */
   215  #if defined(__PTRDIFF_TYPE__)  /* This case should work for GCC */
   216  # define SQLITE_INT_TO_PTR(X)  ((void*)(__PTRDIFF_TYPE__)(X))
   217  # define SQLITE_PTR_TO_INT(X)  ((int)(__PTRDIFF_TYPE__)(X))
   218  #elif !defined(__GNUC__)       /* Works for compilers other than LLVM */
   219  # define SQLITE_INT_TO_PTR(X)  ((void*)&((char*)0)[X])
   220  # define SQLITE_PTR_TO_INT(X)  ((int)(((char*)X)-(char*)0))
   221  #elif defined(HAVE_STDINT_H)   /* Use this case if we have ANSI headers */
   222  # define SQLITE_INT_TO_PTR(X)  ((void*)(intptr_t)(X))
   223  # define SQLITE_PTR_TO_INT(X)  ((int)(intptr_t)(X))
   224  #else                          /* Generates a warning - but it always works */
   225  # define SQLITE_INT_TO_PTR(X)  ((void*)(X))
   226  # define SQLITE_PTR_TO_INT(X)  ((int)(X))
   227  #endif
   228  
   229  /*
   230  ** A macro to hint to the compiler that a function should not be
   231  ** inlined.
   232  */
   233  #if defined(__GNUC__)
   234  #  define SQLITE_NOINLINE  __attribute__((noinline))
   235  #elif defined(_MSC_VER) && _MSC_VER>=1310
   236  #  define SQLITE_NOINLINE  __declspec(noinline)
   237  #else
   238  #  define SQLITE_NOINLINE
   239  #endif
   240  
   241  /*
   242  ** Make sure that the compiler intrinsics we desire are enabled when
   243  ** compiling with an appropriate version of MSVC unless prevented by
   244  ** the SQLITE_DISABLE_INTRINSIC define.
   245  */
   246  #if !defined(SQLITE_DISABLE_INTRINSIC)
   247  #  if defined(_MSC_VER) && _MSC_VER>=1400
   248  #    if !defined(_WIN32_WCE)
   249  #      include <intrin.h>
   250  #      pragma intrinsic(_byteswap_ushort)
   251  #      pragma intrinsic(_byteswap_ulong)
   252  #      pragma intrinsic(_byteswap_uint64)
   253  #      pragma intrinsic(_ReadWriteBarrier)
   254  #    else
   255  #      include <cmnintrin.h>
   256  #    endif
   257  #  endif
   258  #endif
   259  
   260  /*
   261  ** The SQLITE_THREADSAFE macro must be defined as 0, 1, or 2.
   262  ** 0 means mutexes are permanently disable and the library is never
   263  ** threadsafe.  1 means the library is serialized which is the highest
   264  ** level of threadsafety.  2 means the library is multithreaded - multiple
   265  ** threads can use SQLite as long as no two threads try to use the same
   266  ** database connection at the same time.
   267  **
   268  ** Older versions of SQLite used an optional THREADSAFE macro.
   269  ** We support that for legacy.
   270  **
   271  ** To ensure that the correct value of "THREADSAFE" is reported when querying
   272  ** for compile-time options at runtime (e.g. "PRAGMA compile_options"), this
   273  ** logic is partially replicated in ctime.c. If it is updated here, it should
   274  ** also be updated there.
   275  */
   276  #if !defined(SQLITE_THREADSAFE)
   277  # if defined(THREADSAFE)
   278  #   define SQLITE_THREADSAFE THREADSAFE
   279  # else
   280  #   define SQLITE_THREADSAFE 1 /* IMP: R-07272-22309 */
   281  # endif
   282  #endif
   283  
   284  /*
   285  ** Powersafe overwrite is on by default.  But can be turned off using
   286  ** the -DSQLITE_POWERSAFE_OVERWRITE=0 command-line option.
   287  */
   288  #ifndef SQLITE_POWERSAFE_OVERWRITE
   289  # define SQLITE_POWERSAFE_OVERWRITE 1
   290  #endif
   291  
   292  /*
   293  ** EVIDENCE-OF: R-25715-37072 Memory allocation statistics are enabled by
   294  ** default unless SQLite is compiled with SQLITE_DEFAULT_MEMSTATUS=0 in
   295  ** which case memory allocation statistics are disabled by default.
   296  */
   297  #if !defined(SQLITE_DEFAULT_MEMSTATUS)
   298  # define SQLITE_DEFAULT_MEMSTATUS 1
   299  #endif
   300  
   301  /*
   302  ** Exactly one of the following macros must be defined in order to
   303  ** specify which memory allocation subsystem to use.
   304  **
   305  **     SQLITE_SYSTEM_MALLOC          // Use normal system malloc()
   306  **     SQLITE_WIN32_MALLOC           // Use Win32 native heap API
   307  **     SQLITE_ZERO_MALLOC            // Use a stub allocator that always fails
   308  **     SQLITE_MEMDEBUG               // Debugging version of system malloc()
   309  **
   310  ** On Windows, if the SQLITE_WIN32_MALLOC_VALIDATE macro is defined and the
   311  ** assert() macro is enabled, each call into the Win32 native heap subsystem
   312  ** will cause HeapValidate to be called.  If heap validation should fail, an
   313  ** assertion will be triggered.
   314  **
   315  ** If none of the above are defined, then set SQLITE_SYSTEM_MALLOC as
   316  ** the default.
   317  */
   318  #if defined(SQLITE_SYSTEM_MALLOC) \
   319    + defined(SQLITE_WIN32_MALLOC) \
   320    + defined(SQLITE_ZERO_MALLOC) \
   321    + defined(SQLITE_MEMDEBUG)>1
   322  # error "Two or more of the following compile-time configuration options\
   323   are defined but at most one is allowed:\
   324   SQLITE_SYSTEM_MALLOC, SQLITE_WIN32_MALLOC, SQLITE_MEMDEBUG,\
   325   SQLITE_ZERO_MALLOC"
   326  #endif
   327  #if defined(SQLITE_SYSTEM_MALLOC) \
   328    + defined(SQLITE_WIN32_MALLOC) \
   329    + defined(SQLITE_ZERO_MALLOC) \
   330    + defined(SQLITE_MEMDEBUG)==0
   331  # define SQLITE_SYSTEM_MALLOC 1
   332  #endif
   333  
   334  /*
   335  ** If SQLITE_MALLOC_SOFT_LIMIT is not zero, then try to keep the
   336  ** sizes of memory allocations below this value where possible.
   337  */
   338  #if !defined(SQLITE_MALLOC_SOFT_LIMIT)
   339  # define SQLITE_MALLOC_SOFT_LIMIT 1024
   340  #endif
   341  
   342  /*
   343  ** We need to define _XOPEN_SOURCE as follows in order to enable
   344  ** recursive mutexes on most Unix systems and fchmod() on OpenBSD.
   345  ** But _XOPEN_SOURCE define causes problems for Mac OS X, so omit
   346  ** it.
   347  */
   348  #if !defined(_XOPEN_SOURCE) && !defined(__DARWIN__) && !defined(__APPLE__)
   349  #  define _XOPEN_SOURCE 600
   350  #endif
   351  
   352  /*
   353  ** NDEBUG and SQLITE_DEBUG are opposites.  It should always be true that
   354  ** defined(NDEBUG)==!defined(SQLITE_DEBUG).  If this is not currently true,
   355  ** make it true by defining or undefining NDEBUG.
   356  **
   357  ** Setting NDEBUG makes the code smaller and faster by disabling the
   358  ** assert() statements in the code.  So we want the default action
   359  ** to be for NDEBUG to be set and NDEBUG to be undefined only if SQLITE_DEBUG
   360  ** is set.  Thus NDEBUG becomes an opt-in rather than an opt-out
   361  ** feature.
   362  */
   363  #if !defined(NDEBUG) && !defined(SQLITE_DEBUG)
   364  # define NDEBUG 1
   365  #endif
   366  #if defined(NDEBUG) && defined(SQLITE_DEBUG)
   367  # undef NDEBUG
   368  #endif
   369  
   370  /*
   371  ** Enable SQLITE_ENABLE_EXPLAIN_COMMENTS if SQLITE_DEBUG is turned on.
   372  */
   373  #if !defined(SQLITE_ENABLE_EXPLAIN_COMMENTS) && defined(SQLITE_DEBUG)
   374  # define SQLITE_ENABLE_EXPLAIN_COMMENTS 1
   375  #endif
   376  
   377  /*
   378  ** The testcase() macro is used to aid in coverage testing.  When
   379  ** doing coverage testing, the condition inside the argument to
   380  ** testcase() must be evaluated both true and false in order to
   381  ** get full branch coverage.  The testcase() macro is inserted
   382  ** to help ensure adequate test coverage in places where simple
   383  ** condition/decision coverage is inadequate.  For example, testcase()
   384  ** can be used to make sure boundary values are tested.  For
   385  ** bitmask tests, testcase() can be used to make sure each bit
   386  ** is significant and used at least once.  On switch statements
   387  ** where multiple cases go to the same block of code, testcase()
   388  ** can insure that all cases are evaluated.
   389  **
   390  */
   391  #ifdef SQLITE_COVERAGE_TEST
   392    void sqlite3Coverage(int);
   393  # define testcase(X)  if( X ){ sqlite3Coverage(__LINE__); }
   394  #else
   395  # define testcase(X)
   396  #endif
   397  
   398  /*
   399  ** The TESTONLY macro is used to enclose variable declarations or
   400  ** other bits of code that are needed to support the arguments
   401  ** within testcase() and assert() macros.
   402  */
   403  #if !defined(NDEBUG) || defined(SQLITE_COVERAGE_TEST)
   404  # define TESTONLY(X)  X
   405  #else
   406  # define TESTONLY(X)
   407  #endif
   408  
   409  /*
   410  ** Sometimes we need a small amount of code such as a variable initialization
   411  ** to setup for a later assert() statement.  We do not want this code to
   412  ** appear when assert() is disabled.  The following macro is therefore
   413  ** used to contain that setup code.  The "VVA" acronym stands for
   414  ** "Verification, Validation, and Accreditation".  In other words, the
   415  ** code within VVA_ONLY() will only run during verification processes.
   416  */
   417  #ifndef NDEBUG
   418  # define VVA_ONLY(X)  X
   419  #else
   420  # define VVA_ONLY(X)
   421  #endif
   422  
   423  /*
   424  ** The ALWAYS and NEVER macros surround boolean expressions which
   425  ** are intended to always be true or false, respectively.  Such
   426  ** expressions could be omitted from the code completely.  But they
   427  ** are included in a few cases in order to enhance the resilience
   428  ** of SQLite to unexpected behavior - to make the code "self-healing"
   429  ** or "ductile" rather than being "brittle" and crashing at the first
   430  ** hint of unplanned behavior.
   431  **
   432  ** In other words, ALWAYS and NEVER are added for defensive code.
   433  **
   434  ** When doing coverage testing ALWAYS and NEVER are hard-coded to
   435  ** be true and false so that the unreachable code they specify will
   436  ** not be counted as untested code.
   437  */
   438  #if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_MUTATION_TEST)
   439  # define ALWAYS(X)      (1)
   440  # define NEVER(X)       (0)
   441  #elif !defined(NDEBUG)
   442  # define ALWAYS(X)      ((X)?1:(assert(0),0))
   443  # define NEVER(X)       ((X)?(assert(0),1):0)
   444  #else
   445  # define ALWAYS(X)      (X)
   446  # define NEVER(X)       (X)
   447  #endif
   448  
   449  /*
   450  ** Some conditionals are optimizations only.  In other words, if the
   451  ** conditionals are replaced with a constant 1 (true) or 0 (false) then
   452  ** the correct answer is still obtained, though perhaps not as quickly.
   453  **
   454  ** The following macros mark these optimizations conditionals.
   455  */
   456  #if defined(SQLITE_MUTATION_TEST)
   457  # define OK_IF_ALWAYS_TRUE(X)  (1)
   458  # define OK_IF_ALWAYS_FALSE(X) (0)
   459  #else
   460  # define OK_IF_ALWAYS_TRUE(X)  (X)
   461  # define OK_IF_ALWAYS_FALSE(X) (X)
   462  #endif
   463  
   464  /*
   465  ** Some malloc failures are only possible if SQLITE_TEST_REALLOC_STRESS is
   466  ** defined.  We need to defend against those failures when testing with
   467  ** SQLITE_TEST_REALLOC_STRESS, but we don't want the unreachable branches
   468  ** during a normal build.  The following macro can be used to disable tests
   469  ** that are always false except when SQLITE_TEST_REALLOC_STRESS is set.
   470  */
   471  #if defined(SQLITE_TEST_REALLOC_STRESS)
   472  # define ONLY_IF_REALLOC_STRESS(X)  (X)
   473  #elif !defined(NDEBUG)
   474  # define ONLY_IF_REALLOC_STRESS(X)  ((X)?(assert(0),1):0)
   475  #else
   476  # define ONLY_IF_REALLOC_STRESS(X)  (0)
   477  #endif
   478  
   479  /*
   480  ** Declarations used for tracing the operating system interfaces.
   481  */
   482  #if defined(SQLITE_FORCE_OS_TRACE) || defined(SQLITE_TEST) || \
   483      (defined(SQLITE_DEBUG) && SQLITE_OS_WIN)
   484    extern int sqlite3OSTrace;
   485  # define OSTRACE(X)          if( sqlite3OSTrace ) sqlite3DebugPrintf X
   486  # define SQLITE_HAVE_OS_TRACE
   487  #else
   488  # define OSTRACE(X)
   489  # undef  SQLITE_HAVE_OS_TRACE
   490  #endif
   491  
   492  /*
   493  ** Is the sqlite3ErrName() function needed in the build?  Currently,
   494  ** it is needed by "mutex_w32.c" (when debugging), "os_win.c" (when
   495  ** OSTRACE is enabled), and by several "test*.c" files (which are
   496  ** compiled using SQLITE_TEST).
   497  */
   498  #if defined(SQLITE_HAVE_OS_TRACE) || defined(SQLITE_TEST) || \
   499      (defined(SQLITE_DEBUG) && SQLITE_OS_WIN)
   500  # define SQLITE_NEED_ERR_NAME
   501  #else
   502  # undef  SQLITE_NEED_ERR_NAME
   503  #endif
   504  
   505  /*
   506  ** SQLITE_ENABLE_EXPLAIN_COMMENTS is incompatible with SQLITE_OMIT_EXPLAIN
   507  */
   508  #ifdef SQLITE_OMIT_EXPLAIN
   509  # undef SQLITE_ENABLE_EXPLAIN_COMMENTS
   510  #endif
   511  
   512  /*
   513  ** Return true (non-zero) if the input is an integer that is too large
   514  ** to fit in 32-bits.  This macro is used inside of various testcase()
   515  ** macros to verify that we have tested SQLite for large-file support.
   516  */
   517  #define IS_BIG_INT(X)  (((X)&~(i64)0xffffffff)!=0)
   518  
   519  /*
   520  ** The macro unlikely() is a hint that surrounds a boolean
   521  ** expression that is usually false.  Macro likely() surrounds
   522  ** a boolean expression that is usually true.  These hints could,
   523  ** in theory, be used by the compiler to generate better code, but
   524  ** currently they are just comments for human readers.
   525  */
   526  #define likely(X)    (X)
   527  #define unlikely(X)  (X)
   528  
   529  #include "hash.h"
   530  #include "parse.h"
   531  #include <stdio.h>
   532  #include <stdlib.h>
   533  #include <string.h>
   534  #include <assert.h>
   535  #include <stddef.h>
   536  
   537  /*
   538  ** Use a macro to replace memcpy() if compiled with SQLITE_INLINE_MEMCPY.
   539  ** This allows better measurements of where memcpy() is used when running
   540  ** cachegrind.  But this macro version of memcpy() is very slow so it
   541  ** should not be used in production.  This is a performance measurement
   542  ** hack only.
   543  */
   544  #ifdef SQLITE_INLINE_MEMCPY
   545  # define memcpy(D,S,N) {char*xxd=(char*)(D);const char*xxs=(const char*)(S);\
   546                          int xxn=(N);while(xxn-->0)*(xxd++)=*(xxs++);}
   547  #endif
   548  
   549  /*
   550  ** If compiling for a processor that lacks floating point support,
   551  ** substitute integer for floating-point
   552  */
   553  #ifdef SQLITE_OMIT_FLOATING_POINT
   554  # define double sqlite_int64
   555  # define float sqlite_int64
   556  # define LONGDOUBLE_TYPE sqlite_int64
   557  # ifndef SQLITE_BIG_DBL
   558  #   define SQLITE_BIG_DBL (((sqlite3_int64)1)<<50)
   559  # endif
   560  # define SQLITE_OMIT_DATETIME_FUNCS 1
   561  # define SQLITE_OMIT_TRACE 1
   562  # undef SQLITE_MIXED_ENDIAN_64BIT_FLOAT
   563  # undef SQLITE_HAVE_ISNAN
   564  #endif
   565  #ifndef SQLITE_BIG_DBL
   566  # define SQLITE_BIG_DBL (1e99)
   567  #endif
   568  
   569  /*
   570  ** OMIT_TEMPDB is set to 1 if SQLITE_OMIT_TEMPDB is defined, or 0
   571  ** afterward. Having this macro allows us to cause the C compiler
   572  ** to omit code used by TEMP tables without messy #ifndef statements.
   573  */
   574  #ifdef SQLITE_OMIT_TEMPDB
   575  #define OMIT_TEMPDB 1
   576  #else
   577  #define OMIT_TEMPDB 0
   578  #endif
   579  
   580  /*
   581  ** The "file format" number is an integer that is incremented whenever
   582  ** the VDBE-level file format changes.  The following macros define the
   583  ** the default file format for new databases and the maximum file format
   584  ** that the library can read.
   585  */
   586  #define SQLITE_MAX_FILE_FORMAT 4
   587  #ifndef SQLITE_DEFAULT_FILE_FORMAT
   588  # define SQLITE_DEFAULT_FILE_FORMAT 4
   589  #endif
   590  
   591  /*
   592  ** Determine whether triggers are recursive by default.  This can be
   593  ** changed at run-time using a pragma.
   594  */
   595  #ifndef SQLITE_DEFAULT_RECURSIVE_TRIGGERS
   596  # define SQLITE_DEFAULT_RECURSIVE_TRIGGERS 0
   597  #endif
   598  
   599  /*
   600  ** Provide a default value for SQLITE_TEMP_STORE in case it is not specified
   601  ** on the command-line
   602  */
   603  #ifndef SQLITE_TEMP_STORE
   604  # define SQLITE_TEMP_STORE 1
   605  #endif
   606  
   607  /*
   608  ** If no value has been provided for SQLITE_MAX_WORKER_THREADS, or if
   609  ** SQLITE_TEMP_STORE is set to 3 (never use temporary files), set it
   610  ** to zero.
   611  */
   612  #if SQLITE_TEMP_STORE==3 || SQLITE_THREADSAFE==0
   613  # undef SQLITE_MAX_WORKER_THREADS
   614  # define SQLITE_MAX_WORKER_THREADS 0
   615  #endif
   616  #ifndef SQLITE_MAX_WORKER_THREADS
   617  # define SQLITE_MAX_WORKER_THREADS 8
   618  #endif
   619  #ifndef SQLITE_DEFAULT_WORKER_THREADS
   620  # define SQLITE_DEFAULT_WORKER_THREADS 0
   621  #endif
   622  #if SQLITE_DEFAULT_WORKER_THREADS>SQLITE_MAX_WORKER_THREADS
   623  # undef SQLITE_MAX_WORKER_THREADS
   624  # define SQLITE_MAX_WORKER_THREADS SQLITE_DEFAULT_WORKER_THREADS
   625  #endif
   626  
   627  /*
   628  ** The default initial allocation for the pagecache when using separate
   629  ** pagecaches for each database connection.  A positive number is the
   630  ** number of pages.  A negative number N translations means that a buffer
   631  ** of -1024*N bytes is allocated and used for as many pages as it will hold.
   632  **
   633  ** The default value of "20" was choosen to minimize the run-time of the
   634  ** speedtest1 test program with options: --shrink-memory --reprepare
   635  */
   636  #ifndef SQLITE_DEFAULT_PCACHE_INITSZ
   637  # define SQLITE_DEFAULT_PCACHE_INITSZ 20
   638  #endif
   639  
   640  /*
   641  ** The compile-time options SQLITE_MMAP_READWRITE and 
   642  ** SQLITE_ENABLE_BATCH_ATOMIC_WRITE are not compatible with one another.
   643  ** You must choose one or the other (or neither) but not both.
   644  */
   645  #if defined(SQLITE_MMAP_READWRITE) && defined(SQLITE_ENABLE_BATCH_ATOMIC_WRITE)
   646  #error Cannot use both SQLITE_MMAP_READWRITE and SQLITE_ENABLE_BATCH_ATOMIC_WRITE
   647  #endif
   648  
   649  /*
   650  ** GCC does not define the offsetof() macro so we'll have to do it
   651  ** ourselves.
   652  */
   653  #ifndef offsetof
   654  #define offsetof(STRUCTURE,FIELD) ((int)((char*)&((STRUCTURE*)0)->FIELD))
   655  #endif
   656  
   657  /*
   658  ** Macros to compute minimum and maximum of two numbers.
   659  */
   660  #ifndef MIN
   661  # define MIN(A,B) ((A)<(B)?(A):(B))
   662  #endif
   663  #ifndef MAX
   664  # define MAX(A,B) ((A)>(B)?(A):(B))
   665  #endif
   666  
   667  /*
   668  ** Swap two objects of type TYPE.
   669  */
   670  #define SWAP(TYPE,A,B) {TYPE t=A; A=B; B=t;}
   671  
   672  /*
   673  ** Check to see if this machine uses EBCDIC.  (Yes, believe it or
   674  ** not, there are still machines out there that use EBCDIC.)
   675  */
   676  #if 'A' == '\301'
   677  # define SQLITE_EBCDIC 1
   678  #else
   679  # define SQLITE_ASCII 1
   680  #endif
   681  
   682  /*
   683  ** Integers of known sizes.  These typedefs might change for architectures
   684  ** where the sizes very.  Preprocessor macros are available so that the
   685  ** types can be conveniently redefined at compile-type.  Like this:
   686  **
   687  **         cc '-DUINTPTR_TYPE=long long int' ...
   688  */
   689  #ifndef UINT32_TYPE
   690  # ifdef HAVE_UINT32_T
   691  #  define UINT32_TYPE uint32_t
   692  # else
   693  #  define UINT32_TYPE unsigned int
   694  # endif
   695  #endif
   696  #ifndef UINT16_TYPE
   697  # ifdef HAVE_UINT16_T
   698  #  define UINT16_TYPE uint16_t
   699  # else
   700  #  define UINT16_TYPE unsigned short int
   701  # endif
   702  #endif
   703  #ifndef INT16_TYPE
   704  # ifdef HAVE_INT16_T
   705  #  define INT16_TYPE int16_t
   706  # else
   707  #  define INT16_TYPE short int
   708  # endif
   709  #endif
   710  #ifndef UINT8_TYPE
   711  # ifdef HAVE_UINT8_T
   712  #  define UINT8_TYPE uint8_t
   713  # else
   714  #  define UINT8_TYPE unsigned char
   715  # endif
   716  #endif
   717  #ifndef INT8_TYPE
   718  # ifdef HAVE_INT8_T
   719  #  define INT8_TYPE int8_t
   720  # else
   721  #  define INT8_TYPE signed char
   722  # endif
   723  #endif
   724  #ifndef LONGDOUBLE_TYPE
   725  # define LONGDOUBLE_TYPE long double
   726  #endif
   727  typedef sqlite_int64 i64;          /* 8-byte signed integer */
   728  typedef sqlite_uint64 u64;         /* 8-byte unsigned integer */
   729  typedef UINT32_TYPE u32;           /* 4-byte unsigned integer */
   730  typedef UINT16_TYPE u16;           /* 2-byte unsigned integer */
   731  typedef INT16_TYPE i16;            /* 2-byte signed integer */
   732  typedef UINT8_TYPE u8;             /* 1-byte unsigned integer */
   733  typedef INT8_TYPE i8;              /* 1-byte signed integer */
   734  
   735  /*
   736  ** SQLITE_MAX_U32 is a u64 constant that is the maximum u64 value
   737  ** that can be stored in a u32 without loss of data.  The value
   738  ** is 0x00000000ffffffff.  But because of quirks of some compilers, we
   739  ** have to specify the value in the less intuitive manner shown:
   740  */
   741  #define SQLITE_MAX_U32  ((((u64)1)<<32)-1)
   742  
   743  /*
   744  ** The datatype used to store estimates of the number of rows in a
   745  ** table or index.  This is an unsigned integer type.  For 99.9% of
   746  ** the world, a 32-bit integer is sufficient.  But a 64-bit integer
   747  ** can be used at compile-time if desired.
   748  */
   749  #ifdef SQLITE_64BIT_STATS
   750   typedef u64 tRowcnt;    /* 64-bit only if requested at compile-time */
   751  #else
   752   typedef u32 tRowcnt;    /* 32-bit is the default */
   753  #endif
   754  
   755  /*
   756  ** Estimated quantities used for query planning are stored as 16-bit
   757  ** logarithms.  For quantity X, the value stored is 10*log2(X).  This
   758  ** gives a possible range of values of approximately 1.0e986 to 1e-986.
   759  ** But the allowed values are "grainy".  Not every value is representable.
   760  ** For example, quantities 16 and 17 are both represented by a LogEst
   761  ** of 40.  However, since LogEst quantities are suppose to be estimates,
   762  ** not exact values, this imprecision is not a problem.
   763  **
   764  ** "LogEst" is short for "Logarithmic Estimate".
   765  **
   766  ** Examples:
   767  **      1 -> 0              20 -> 43          10000 -> 132
   768  **      2 -> 10             25 -> 46          25000 -> 146
   769  **      3 -> 16            100 -> 66        1000000 -> 199
   770  **      4 -> 20           1000 -> 99        1048576 -> 200
   771  **     10 -> 33           1024 -> 100    4294967296 -> 320
   772  **
   773  ** The LogEst can be negative to indicate fractional values.
   774  ** Examples:
   775  **
   776  **    0.5 -> -10           0.1 -> -33        0.0625 -> -40
   777  */
   778  typedef INT16_TYPE LogEst;
   779  
   780  /*
   781  ** Set the SQLITE_PTRSIZE macro to the number of bytes in a pointer
   782  */
   783  #ifndef SQLITE_PTRSIZE
   784  # if defined(__SIZEOF_POINTER__)
   785  #   define SQLITE_PTRSIZE __SIZEOF_POINTER__
   786  # elif defined(i386)     || defined(__i386__)   || defined(_M_IX86) ||    \
   787         defined(_M_ARM)   || defined(__arm__)    || defined(__x86)
   788  #   define SQLITE_PTRSIZE 4
   789  # else
   790  #   define SQLITE_PTRSIZE 8
   791  # endif
   792  #endif
   793  
   794  /* The uptr type is an unsigned integer large enough to hold a pointer
   795  */
   796  #if defined(HAVE_STDINT_H)
   797    typedef uintptr_t uptr;
   798  #elif SQLITE_PTRSIZE==4
   799    typedef u32 uptr;
   800  #else
   801    typedef u64 uptr;
   802  #endif
   803  
   804  /*
   805  ** The SQLITE_WITHIN(P,S,E) macro checks to see if pointer P points to
   806  ** something between S (inclusive) and E (exclusive).
   807  **
   808  ** In other words, S is a buffer and E is a pointer to the first byte after
   809  ** the end of buffer S.  This macro returns true if P points to something
   810  ** contained within the buffer S.
   811  */
   812  #define SQLITE_WITHIN(P,S,E) (((uptr)(P)>=(uptr)(S))&&((uptr)(P)<(uptr)(E)))
   813  
   814  
   815  /*
   816  ** Macros to determine whether the machine is big or little endian,
   817  ** and whether or not that determination is run-time or compile-time.
   818  **
   819  ** For best performance, an attempt is made to guess at the byte-order
   820  ** using C-preprocessor macros.  If that is unsuccessful, or if
   821  ** -DSQLITE_BYTEORDER=0 is set, then byte-order is determined
   822  ** at run-time.
   823  */
   824  #ifndef SQLITE_BYTEORDER
   825  # if defined(i386)     || defined(__i386__)   || defined(_M_IX86) ||    \
   826       defined(__x86_64) || defined(__x86_64__) || defined(_M_X64)  ||    \
   827       defined(_M_AMD64) || defined(_M_ARM)     || defined(__x86)   ||    \
   828       defined(__arm__)
   829  #   define SQLITE_BYTEORDER    1234
   830  # elif defined(sparc)    || defined(__ppc__)
   831  #   define SQLITE_BYTEORDER    4321
   832  # else
   833  #   define SQLITE_BYTEORDER 0
   834  # endif
   835  #endif
   836  #if SQLITE_BYTEORDER==4321
   837  # define SQLITE_BIGENDIAN    1
   838  # define SQLITE_LITTLEENDIAN 0
   839  # define SQLITE_UTF16NATIVE  SQLITE_UTF16BE
   840  #elif SQLITE_BYTEORDER==1234
   841  # define SQLITE_BIGENDIAN    0
   842  # define SQLITE_LITTLEENDIAN 1
   843  # define SQLITE_UTF16NATIVE  SQLITE_UTF16LE
   844  #else
   845  # ifdef SQLITE_AMALGAMATION
   846    const int sqlite3one = 1;
   847  # else
   848    extern const int sqlite3one;
   849  # endif
   850  # define SQLITE_BIGENDIAN    (*(char *)(&sqlite3one)==0)
   851  # define SQLITE_LITTLEENDIAN (*(char *)(&sqlite3one)==1)
   852  # define SQLITE_UTF16NATIVE  (SQLITE_BIGENDIAN?SQLITE_UTF16BE:SQLITE_UTF16LE)
   853  #endif
   854  
   855  /*
   856  ** Constants for the largest and smallest possible 64-bit signed integers.
   857  ** These macros are designed to work correctly on both 32-bit and 64-bit
   858  ** compilers.
   859  */
   860  #define LARGEST_INT64  (0xffffffff|(((i64)0x7fffffff)<<32))
   861  #define SMALLEST_INT64 (((i64)-1) - LARGEST_INT64)
   862  
   863  /*
   864  ** Round up a number to the next larger multiple of 8.  This is used
   865  ** to force 8-byte alignment on 64-bit architectures.
   866  */
   867  #define ROUND8(x)     (((x)+7)&~7)
   868  
   869  /*
   870  ** Round down to the nearest multiple of 8
   871  */
   872  #define ROUNDDOWN8(x) ((x)&~7)
   873  
   874  /*
   875  ** Assert that the pointer X is aligned to an 8-byte boundary.  This
   876  ** macro is used only within assert() to verify that the code gets
   877  ** all alignment restrictions correct.
   878  **
   879  ** Except, if SQLITE_4_BYTE_ALIGNED_MALLOC is defined, then the
   880  ** underlying malloc() implementation might return us 4-byte aligned
   881  ** pointers.  In that case, only verify 4-byte alignment.
   882  */
   883  #ifdef SQLITE_4_BYTE_ALIGNED_MALLOC
   884  # define EIGHT_BYTE_ALIGNMENT(X)   ((((char*)(X) - (char*)0)&3)==0)
   885  #else
   886  # define EIGHT_BYTE_ALIGNMENT(X)   ((((char*)(X) - (char*)0)&7)==0)
   887  #endif
   888  
   889  /*
   890  ** Disable MMAP on platforms where it is known to not work
   891  */
   892  #if defined(__OpenBSD__) || defined(__QNXNTO__)
   893  # undef SQLITE_MAX_MMAP_SIZE
   894  # define SQLITE_MAX_MMAP_SIZE 0
   895  #endif
   896  
   897  /*
   898  ** Default maximum size of memory used by memory-mapped I/O in the VFS
   899  */
   900  #ifdef __APPLE__
   901  # include <TargetConditionals.h>
   902  #endif
   903  #ifndef SQLITE_MAX_MMAP_SIZE
   904  # if defined(__linux__) \
   905    || defined(_WIN32) \
   906    || (defined(__APPLE__) && defined(__MACH__)) \
   907    || defined(__sun) \
   908    || defined(__FreeBSD__) \
   909    || defined(__DragonFly__)
   910  #   define SQLITE_MAX_MMAP_SIZE 0x7fff0000  /* 2147418112 */
   911  # else
   912  #   define SQLITE_MAX_MMAP_SIZE 0
   913  # endif
   914  #endif
   915  
   916  /*
   917  ** The default MMAP_SIZE is zero on all platforms.  Or, even if a larger
   918  ** default MMAP_SIZE is specified at compile-time, make sure that it does
   919  ** not exceed the maximum mmap size.
   920  */
   921  #ifndef SQLITE_DEFAULT_MMAP_SIZE
   922  # define SQLITE_DEFAULT_MMAP_SIZE 0
   923  #endif
   924  #if SQLITE_DEFAULT_MMAP_SIZE>SQLITE_MAX_MMAP_SIZE
   925  # undef SQLITE_DEFAULT_MMAP_SIZE
   926  # define SQLITE_DEFAULT_MMAP_SIZE SQLITE_MAX_MMAP_SIZE
   927  #endif
   928  
   929  /*
   930  ** Only one of SQLITE_ENABLE_STAT3 or SQLITE_ENABLE_STAT4 can be defined.
   931  ** Priority is given to SQLITE_ENABLE_STAT4.  If either are defined, also
   932  ** define SQLITE_ENABLE_STAT3_OR_STAT4
   933  */
   934  #ifdef SQLITE_ENABLE_STAT4
   935  # undef SQLITE_ENABLE_STAT3
   936  # define SQLITE_ENABLE_STAT3_OR_STAT4 1
   937  #elif SQLITE_ENABLE_STAT3
   938  # define SQLITE_ENABLE_STAT3_OR_STAT4 1
   939  #elif SQLITE_ENABLE_STAT3_OR_STAT4
   940  # undef SQLITE_ENABLE_STAT3_OR_STAT4
   941  #endif
   942  
   943  /*
   944  ** SELECTTRACE_ENABLED will be either 1 or 0 depending on whether or not
   945  ** the Select query generator tracing logic is turned on.
   946  */
   947  #if defined(SQLITE_ENABLE_SELECTTRACE)
   948  # define SELECTTRACE_ENABLED 1
   949  #else
   950  # define SELECTTRACE_ENABLED 0
   951  #endif
   952  
   953  /*
   954  ** An instance of the following structure is used to store the busy-handler
   955  ** callback for a given sqlite handle.
   956  **
   957  ** The sqlite.busyHandler member of the sqlite struct contains the busy
   958  ** callback for the database handle. Each pager opened via the sqlite
   959  ** handle is passed a pointer to sqlite.busyHandler. The busy-handler
   960  ** callback is currently invoked only from within pager.c.
   961  */
   962  typedef struct BusyHandler BusyHandler;
   963  struct BusyHandler {
   964    int (*xFunc)(void *,int);  /* The busy callback */
   965    void *pArg;                /* First arg to busy callback */
   966    int nBusy;                 /* Incremented with each busy call */
   967  };
   968  
   969  /*
   970  ** Name of the master database table.  The master database table
   971  ** is a special table that holds the names and attributes of all
   972  ** user tables and indices.
   973  */
   974  #define MASTER_NAME       "sqlite_master"
   975  #define TEMP_MASTER_NAME  "sqlite_temp_master"
   976  
   977  /*
   978  ** The root-page of the master database table.
   979  */
   980  #define MASTER_ROOT       1
   981  
   982  /*
   983  ** The name of the schema table.
   984  */
   985  #define SCHEMA_TABLE(x)  ((!OMIT_TEMPDB)&&(x==1)?TEMP_MASTER_NAME:MASTER_NAME)
   986  
   987  /*
   988  ** A convenience macro that returns the number of elements in
   989  ** an array.
   990  */
   991  #define ArraySize(X)    ((int)(sizeof(X)/sizeof(X[0])))
   992  
   993  /*
   994  ** Determine if the argument is a power of two
   995  */
   996  #define IsPowerOfTwo(X) (((X)&((X)-1))==0)
   997  
   998  /*
   999  ** The following value as a destructor means to use sqlite3DbFree().
  1000  ** The sqlite3DbFree() routine requires two parameters instead of the
  1001  ** one parameter that destructors normally want.  So we have to introduce
  1002  ** this magic value that the code knows to handle differently.  Any
  1003  ** pointer will work here as long as it is distinct from SQLITE_STATIC
  1004  ** and SQLITE_TRANSIENT.
  1005  */
  1006  #define SQLITE_DYNAMIC   ((sqlite3_destructor_type)sqlite3MallocSize)
  1007  
  1008  /*
  1009  ** When SQLITE_OMIT_WSD is defined, it means that the target platform does
  1010  ** not support Writable Static Data (WSD) such as global and static variables.
  1011  ** All variables must either be on the stack or dynamically allocated from
  1012  ** the heap.  When WSD is unsupported, the variable declarations scattered
  1013  ** throughout the SQLite code must become constants instead.  The SQLITE_WSD
  1014  ** macro is used for this purpose.  And instead of referencing the variable
  1015  ** directly, we use its constant as a key to lookup the run-time allocated
  1016  ** buffer that holds real variable.  The constant is also the initializer
  1017  ** for the run-time allocated buffer.
  1018  **
  1019  ** In the usual case where WSD is supported, the SQLITE_WSD and GLOBAL
  1020  ** macros become no-ops and have zero performance impact.
  1021  */
  1022  #ifdef SQLITE_OMIT_WSD
  1023    #define SQLITE_WSD const
  1024    #define GLOBAL(t,v) (*(t*)sqlite3_wsd_find((void*)&(v), sizeof(v)))
  1025    #define sqlite3GlobalConfig GLOBAL(struct Sqlite3Config, sqlite3Config)
  1026    int sqlite3_wsd_init(int N, int J);
  1027    void *sqlite3_wsd_find(void *K, int L);
  1028  #else
  1029    #define SQLITE_WSD
  1030    #define GLOBAL(t,v) v
  1031    #define sqlite3GlobalConfig sqlite3Config
  1032  #endif
  1033  
  1034  /*
  1035  ** The following macros are used to suppress compiler warnings and to
  1036  ** make it clear to human readers when a function parameter is deliberately
  1037  ** left unused within the body of a function. This usually happens when
  1038  ** a function is called via a function pointer. For example the
  1039  ** implementation of an SQL aggregate step callback may not use the
  1040  ** parameter indicating the number of arguments passed to the aggregate,
  1041  ** if it knows that this is enforced elsewhere.
  1042  **
  1043  ** When a function parameter is not used at all within the body of a function,
  1044  ** it is generally named "NotUsed" or "NotUsed2" to make things even clearer.
  1045  ** However, these macros may also be used to suppress warnings related to
  1046  ** parameters that may or may not be used depending on compilation options.
  1047  ** For example those parameters only used in assert() statements. In these
  1048  ** cases the parameters are named as per the usual conventions.
  1049  */
  1050  #define UNUSED_PARAMETER(x) (void)(x)
  1051  #define UNUSED_PARAMETER2(x,y) UNUSED_PARAMETER(x),UNUSED_PARAMETER(y)
  1052  
  1053  /*
  1054  ** Forward references to structures
  1055  */
  1056  typedef struct AggInfo AggInfo;
  1057  typedef struct AuthContext AuthContext;
  1058  typedef struct AutoincInfo AutoincInfo;
  1059  typedef struct Bitvec Bitvec;
  1060  typedef struct CollSeq CollSeq;
  1061  typedef struct Column Column;
  1062  typedef struct Db Db;
  1063  typedef struct Schema Schema;
  1064  typedef struct Expr Expr;
  1065  typedef struct ExprList ExprList;
  1066  typedef struct ExprSpan ExprSpan;
  1067  typedef struct FKey FKey;
  1068  typedef struct FuncDestructor FuncDestructor;
  1069  typedef struct FuncDef FuncDef;
  1070  typedef struct FuncDefHash FuncDefHash;
  1071  typedef struct IdList IdList;
  1072  typedef struct Index Index;
  1073  typedef struct IndexSample IndexSample;
  1074  typedef struct KeyClass KeyClass;
  1075  typedef struct KeyInfo KeyInfo;
  1076  typedef struct Lookaside Lookaside;
  1077  typedef struct LookasideSlot LookasideSlot;
  1078  typedef struct Module Module;
  1079  typedef struct NameContext NameContext;
  1080  typedef struct Parse Parse;
  1081  typedef struct PreUpdate PreUpdate;
  1082  typedef struct PrintfArguments PrintfArguments;
  1083  typedef struct RowSet RowSet;
  1084  typedef struct Savepoint Savepoint;
  1085  typedef struct Select Select;
  1086  typedef struct SQLiteThread SQLiteThread;
  1087  typedef struct SelectDest SelectDest;
  1088  typedef struct SrcList SrcList;
  1089  typedef struct StrAccum StrAccum;
  1090  typedef struct Table Table;
  1091  typedef struct TableLock TableLock;
  1092  typedef struct Token Token;
  1093  typedef struct TreeView TreeView;
  1094  typedef struct Trigger Trigger;
  1095  typedef struct TriggerPrg TriggerPrg;
  1096  typedef struct TriggerStep TriggerStep;
  1097  typedef struct UnpackedRecord UnpackedRecord;
  1098  typedef struct VTable VTable;
  1099  typedef struct VtabCtx VtabCtx;
  1100  typedef struct Walker Walker;
  1101  typedef struct WhereInfo WhereInfo;
  1102  typedef struct With With;
  1103  
  1104  /* A VList object records a mapping between parameters/variables/wildcards
  1105  ** in the SQL statement (such as $abc, @pqr, or :xyz) and the integer
  1106  ** variable number associated with that parameter.  See the format description
  1107  ** on the sqlite3VListAdd() routine for more information.  A VList is really
  1108  ** just an array of integers.
  1109  */
  1110  typedef int VList;
  1111  
  1112  /*
  1113  ** Defer sourcing vdbe.h and btree.h until after the "u8" and
  1114  ** "BusyHandler" typedefs. vdbe.h also requires a few of the opaque
  1115  ** pointer types (i.e. FuncDef) defined above.
  1116  */
  1117  #include "btree.h"
  1118  #include "vdbe.h"
  1119  #include "pager.h"
  1120  #include "pcache.h"
  1121  #include "os.h"
  1122  #include "mutex.h"
  1123  
  1124  /* The SQLITE_EXTRA_DURABLE compile-time option used to set the default
  1125  ** synchronous setting to EXTRA.  It is no longer supported.
  1126  */
  1127  #ifdef SQLITE_EXTRA_DURABLE
  1128  # warning Use SQLITE_DEFAULT_SYNCHRONOUS=3 instead of SQLITE_EXTRA_DURABLE
  1129  # define SQLITE_DEFAULT_SYNCHRONOUS 3
  1130  #endif
  1131  
  1132  /*
  1133  ** Default synchronous levels.
  1134  **
  1135  ** Note that (for historcal reasons) the PAGER_SYNCHRONOUS_* macros differ
  1136  ** from the SQLITE_DEFAULT_SYNCHRONOUS value by 1.
  1137  **
  1138  **           PAGER_SYNCHRONOUS       DEFAULT_SYNCHRONOUS
  1139  **   OFF           1                         0
  1140  **   NORMAL        2                         1
  1141  **   FULL          3                         2
  1142  **   EXTRA         4                         3
  1143  **
  1144  ** The "PRAGMA synchronous" statement also uses the zero-based numbers.
  1145  ** In other words, the zero-based numbers are used for all external interfaces
  1146  ** and the one-based values are used internally.
  1147  */
  1148  #ifndef SQLITE_DEFAULT_SYNCHRONOUS
  1149  # define SQLITE_DEFAULT_SYNCHRONOUS 2
  1150  #endif
  1151  #ifndef SQLITE_DEFAULT_WAL_SYNCHRONOUS
  1152  # define SQLITE_DEFAULT_WAL_SYNCHRONOUS SQLITE_DEFAULT_SYNCHRONOUS
  1153  #endif
  1154  
  1155  /*
  1156  ** Each database file to be accessed by the system is an instance
  1157  ** of the following structure.  There are normally two of these structures
  1158  ** in the sqlite.aDb[] array.  aDb[0] is the main database file and
  1159  ** aDb[1] is the database file used to hold temporary tables.  Additional
  1160  ** databases may be attached.
  1161  */
  1162  struct Db {
  1163    char *zDbSName;      /* Name of this database. (schema name, not filename) */
  1164    Btree *pBt;          /* The B*Tree structure for this database file */
  1165    u8 safety_level;     /* How aggressive at syncing data to disk */
  1166    u8 bSyncSet;         /* True if "PRAGMA synchronous=N" has been run */
  1167    Schema *pSchema;     /* Pointer to database schema (possibly shared) */
  1168  };
  1169  
  1170  /*
  1171  ** An instance of the following structure stores a database schema.
  1172  **
  1173  ** Most Schema objects are associated with a Btree.  The exception is
  1174  ** the Schema for the TEMP databaes (sqlite3.aDb[1]) which is free-standing.
  1175  ** In shared cache mode, a single Schema object can be shared by multiple
  1176  ** Btrees that refer to the same underlying BtShared object.
  1177  **
  1178  ** Schema objects are automatically deallocated when the last Btree that
  1179  ** references them is destroyed.   The TEMP Schema is manually freed by
  1180  ** sqlite3_close().
  1181  *
  1182  ** A thread must be holding a mutex on the corresponding Btree in order
  1183  ** to access Schema content.  This implies that the thread must also be
  1184  ** holding a mutex on the sqlite3 connection pointer that owns the Btree.
  1185  ** For a TEMP Schema, only the connection mutex is required.
  1186  */
  1187  struct Schema {
  1188    int schema_cookie;   /* Database schema version number for this file */
  1189    int iGeneration;     /* Generation counter.  Incremented with each change */
  1190    Hash tblHash;        /* All tables indexed by name */
  1191    Hash idxHash;        /* All (named) indices indexed by name */
  1192    Hash trigHash;       /* All triggers indexed by name */
  1193    Hash fkeyHash;       /* All foreign keys by referenced table name */
  1194    Table *pSeqTab;      /* The sqlite_sequence table used by AUTOINCREMENT */
  1195    u8 file_format;      /* Schema format version for this file */
  1196    u8 enc;              /* Text encoding used by this database */
  1197    u16 schemaFlags;     /* Flags associated with this schema */
  1198    int cache_size;      /* Number of pages to use in the cache */
  1199  };
  1200  
  1201  /*
  1202  ** These macros can be used to test, set, or clear bits in the
  1203  ** Db.pSchema->flags field.
  1204  */
  1205  #define DbHasProperty(D,I,P)     (((D)->aDb[I].pSchema->schemaFlags&(P))==(P))
  1206  #define DbHasAnyProperty(D,I,P)  (((D)->aDb[I].pSchema->schemaFlags&(P))!=0)
  1207  #define DbSetProperty(D,I,P)     (D)->aDb[I].pSchema->schemaFlags|=(P)
  1208  #define DbClearProperty(D,I,P)   (D)->aDb[I].pSchema->schemaFlags&=~(P)
  1209  
  1210  /*
  1211  ** Allowed values for the DB.pSchema->flags field.
  1212  **
  1213  ** The DB_SchemaLoaded flag is set after the database schema has been
  1214  ** read into internal hash tables.
  1215  **
  1216  ** DB_UnresetViews means that one or more views have column names that
  1217  ** have been filled out.  If the schema changes, these column names might
  1218  ** changes and so the view will need to be reset.
  1219  */
  1220  #define DB_SchemaLoaded    0x0001  /* The schema has been loaded */
  1221  #define DB_UnresetViews    0x0002  /* Some views have defined column names */
  1222  #define DB_Empty           0x0004  /* The file is empty (length 0 bytes) */
  1223  #define DB_ResetWanted     0x0008  /* Reset the schema when nSchemaLock==0 */
  1224  
  1225  /*
  1226  ** The number of different kinds of things that can be limited
  1227  ** using the sqlite3_limit() interface.
  1228  */
  1229  #define SQLITE_N_LIMIT (SQLITE_LIMIT_WORKER_THREADS+1)
  1230  
  1231  /*
  1232  ** Lookaside malloc is a set of fixed-size buffers that can be used
  1233  ** to satisfy small transient memory allocation requests for objects
  1234  ** associated with a particular database connection.  The use of
  1235  ** lookaside malloc provides a significant performance enhancement
  1236  ** (approx 10%) by avoiding numerous malloc/free requests while parsing
  1237  ** SQL statements.
  1238  **
  1239  ** The Lookaside structure holds configuration information about the
  1240  ** lookaside malloc subsystem.  Each available memory allocation in
  1241  ** the lookaside subsystem is stored on a linked list of LookasideSlot
  1242  ** objects.
  1243  **
  1244  ** Lookaside allocations are only allowed for objects that are associated
  1245  ** with a particular database connection.  Hence, schema information cannot
  1246  ** be stored in lookaside because in shared cache mode the schema information
  1247  ** is shared by multiple database connections.  Therefore, while parsing
  1248  ** schema information, the Lookaside.bEnabled flag is cleared so that
  1249  ** lookaside allocations are not used to construct the schema objects.
  1250  */
  1251  struct Lookaside {
  1252    u32 bDisable;           /* Only operate the lookaside when zero */
  1253    u16 sz;                 /* Size of each buffer in bytes */
  1254    u8 bMalloced;           /* True if pStart obtained from sqlite3_malloc() */
  1255    u32 nSlot;              /* Number of lookaside slots allocated */
  1256    u32 anStat[3];          /* 0: hits.  1: size misses.  2: full misses */
  1257    LookasideSlot *pInit;   /* List of buffers not previously used */
  1258    LookasideSlot *pFree;   /* List of available buffers */
  1259    void *pStart;           /* First byte of available memory space */
  1260    void *pEnd;             /* First byte past end of available space */
  1261  };
  1262  struct LookasideSlot {
  1263    LookasideSlot *pNext;    /* Next buffer in the list of free buffers */
  1264  };
  1265  
  1266  /*
  1267  ** A hash table for built-in function definitions.  (Application-defined
  1268  ** functions use a regular table table from hash.h.)
  1269  **
  1270  ** Hash each FuncDef structure into one of the FuncDefHash.a[] slots.
  1271  ** Collisions are on the FuncDef.u.pHash chain.
  1272  */
  1273  #define SQLITE_FUNC_HASH_SZ 23
  1274  struct FuncDefHash {
  1275    FuncDef *a[SQLITE_FUNC_HASH_SZ];       /* Hash table for functions */
  1276  };
  1277  
  1278  #ifdef SQLITE_USER_AUTHENTICATION
  1279  /*
  1280  ** Information held in the "sqlite3" database connection object and used
  1281  ** to manage user authentication.
  1282  */
  1283  typedef struct sqlite3_userauth sqlite3_userauth;
  1284  struct sqlite3_userauth {
  1285    u8 authLevel;                 /* Current authentication level */
  1286    int nAuthPW;                  /* Size of the zAuthPW in bytes */
  1287    char *zAuthPW;                /* Password used to authenticate */
  1288    char *zAuthUser;              /* User name used to authenticate */
  1289  };
  1290  
  1291  /* Allowed values for sqlite3_userauth.authLevel */
  1292  #define UAUTH_Unknown     0     /* Authentication not yet checked */
  1293  #define UAUTH_Fail        1     /* User authentication failed */
  1294  #define UAUTH_User        2     /* Authenticated as a normal user */
  1295  #define UAUTH_Admin       3     /* Authenticated as an administrator */
  1296  
  1297  /* Functions used only by user authorization logic */
  1298  int sqlite3UserAuthTable(const char*);
  1299  int sqlite3UserAuthCheckLogin(sqlite3*,const char*,u8*);
  1300  void sqlite3UserAuthInit(sqlite3*);
  1301  void sqlite3CryptFunc(sqlite3_context*,int,sqlite3_value**);
  1302  
  1303  #endif /* SQLITE_USER_AUTHENTICATION */
  1304  
  1305  /*
  1306  ** typedef for the authorization callback function.
  1307  */
  1308  #ifdef SQLITE_USER_AUTHENTICATION
  1309    typedef int (*sqlite3_xauth)(void*,int,const char*,const char*,const char*,
  1310                                 const char*, const char*);
  1311  #else
  1312    typedef int (*sqlite3_xauth)(void*,int,const char*,const char*,const char*,
  1313                                 const char*);
  1314  #endif
  1315  
  1316  #ifndef SQLITE_OMIT_DEPRECATED
  1317  /* This is an extra SQLITE_TRACE macro that indicates "legacy" tracing
  1318  ** in the style of sqlite3_trace()
  1319  */
  1320  #define SQLITE_TRACE_LEGACY  0x80
  1321  #else
  1322  #define SQLITE_TRACE_LEGACY  0
  1323  #endif /* SQLITE_OMIT_DEPRECATED */
  1324  
  1325  
  1326  /*
  1327  ** Each database connection is an instance of the following structure.
  1328  */
  1329  struct sqlite3 {
  1330    sqlite3_vfs *pVfs;            /* OS Interface */
  1331    struct Vdbe *pVdbe;           /* List of active virtual machines */
  1332    CollSeq *pDfltColl;           /* The default collating sequence (BINARY) */
  1333    sqlite3_mutex *mutex;         /* Connection mutex */
  1334    Db *aDb;                      /* All backends */
  1335    int nDb;                      /* Number of backends currently in use */
  1336    u32 mDbFlags;                 /* flags recording internal state */
  1337    u32 flags;                    /* flags settable by pragmas. See below */
  1338    i64 lastRowid;                /* ROWID of most recent insert (see above) */
  1339    i64 szMmap;                   /* Default mmap_size setting */
  1340    u32 nSchemaLock;              /* Do not reset the schema when non-zero */
  1341    unsigned int openFlags;       /* Flags passed to sqlite3_vfs.xOpen() */
  1342    int errCode;                  /* Most recent error code (SQLITE_*) */
  1343    int errMask;                  /* & result codes with this before returning */
  1344    int iSysErrno;                /* Errno value from last system error */
  1345    u16 dbOptFlags;               /* Flags to enable/disable optimizations */
  1346    u8 enc;                       /* Text encoding */
  1347    u8 autoCommit;                /* The auto-commit flag. */
  1348    u8 temp_store;                /* 1: file 2: memory 0: default */
  1349    u8 mallocFailed;              /* True if we have seen a malloc failure */
  1350    u8 bBenignMalloc;             /* Do not require OOMs if true */
  1351    u8 dfltLockMode;              /* Default locking-mode for attached dbs */
  1352    signed char nextAutovac;      /* Autovac setting after VACUUM if >=0 */
  1353    u8 suppressErr;               /* Do not issue error messages if true */
  1354    u8 vtabOnConflict;            /* Value to return for s3_vtab_on_conflict() */
  1355    u8 isTransactionSavepoint;    /* True if the outermost savepoint is a TS */
  1356    u8 mTrace;                    /* zero or more SQLITE_TRACE flags */
  1357    u8 skipBtreeMutex;            /* True if no shared-cache backends */
  1358    u8 nSqlExec;                  /* Number of pending OP_SqlExec opcodes */
  1359    int nextPagesize;             /* Pagesize after VACUUM if >0 */
  1360    u32 magic;                    /* Magic number for detect library misuse */
  1361    int nChange;                  /* Value returned by sqlite3_changes() */
  1362    int nTotalChange;             /* Value returned by sqlite3_total_changes() */
  1363    int aLimit[SQLITE_N_LIMIT];   /* Limits */
  1364    int nMaxSorterMmap;           /* Maximum size of regions mapped by sorter */
  1365    struct sqlite3InitInfo {      /* Information used during initialization */
  1366      int newTnum;                /* Rootpage of table being initialized */
  1367      u8 iDb;                     /* Which db file is being initialized */
  1368      u8 busy;                    /* TRUE if currently initializing */
  1369      u8 orphanTrigger;           /* Last statement is orphaned TEMP trigger */
  1370      u8 imposterTable;           /* Building an imposter table */
  1371    } init;
  1372    int nVdbeActive;              /* Number of VDBEs currently running */
  1373    int nVdbeRead;                /* Number of active VDBEs that read or write */
  1374    int nVdbeWrite;               /* Number of active VDBEs that read and write */
  1375    int nVdbeExec;                /* Number of nested calls to VdbeExec() */
  1376    int nVDestroy;                /* Number of active OP_VDestroy operations */
  1377    int nExtension;               /* Number of loaded extensions */
  1378    void **aExtension;            /* Array of shared library handles */
  1379    int (*xTrace)(u32,void*,void*,void*);     /* Trace function */
  1380    void *pTraceArg;                          /* Argument to the trace function */
  1381    void (*xProfile)(void*,const char*,u64);  /* Profiling function */
  1382    void *pProfileArg;                        /* Argument to profile function */
  1383    void *pCommitArg;                 /* Argument to xCommitCallback() */
  1384    int (*xCommitCallback)(void*);    /* Invoked at every commit. */
  1385    void *pRollbackArg;               /* Argument to xRollbackCallback() */
  1386    void (*xRollbackCallback)(void*); /* Invoked at every commit. */
  1387    void *pUpdateArg;
  1388    void (*xUpdateCallback)(void*,int, const char*,const char*,sqlite_int64);
  1389  #ifdef SQLITE_ENABLE_PREUPDATE_HOOK
  1390    void *pPreUpdateArg;          /* First argument to xPreUpdateCallback */
  1391    void (*xPreUpdateCallback)(   /* Registered using sqlite3_preupdate_hook() */
  1392      void*,sqlite3*,int,char const*,char const*,sqlite3_int64,sqlite3_int64
  1393    );
  1394    PreUpdate *pPreUpdate;        /* Context for active pre-update callback */
  1395  #endif /* SQLITE_ENABLE_PREUPDATE_HOOK */
  1396  #ifndef SQLITE_OMIT_WAL
  1397    int (*xWalCallback)(void *, sqlite3 *, const char *, int);
  1398    void *pWalArg;
  1399  #endif
  1400    void(*xCollNeeded)(void*,sqlite3*,int eTextRep,const char*);
  1401    void(*xCollNeeded16)(void*,sqlite3*,int eTextRep,const void*);
  1402    void *pCollNeededArg;
  1403    sqlite3_value *pErr;          /* Most recent error message */
  1404    union {
  1405      volatile int isInterrupted; /* True if sqlite3_interrupt has been called */
  1406      double notUsed1;            /* Spacer */
  1407    } u1;
  1408    Lookaside lookaside;          /* Lookaside malloc configuration */
  1409  #ifndef SQLITE_OMIT_AUTHORIZATION
  1410    sqlite3_xauth xAuth;          /* Access authorization function */
  1411    void *pAuthArg;               /* 1st argument to the access auth function */
  1412  #endif
  1413  #ifndef SQLITE_OMIT_PROGRESS_CALLBACK
  1414    int (*xProgress)(void *);     /* The progress callback */
  1415    void *pProgressArg;           /* Argument to the progress callback */
  1416    unsigned nProgressOps;        /* Number of opcodes for progress callback */
  1417  #endif
  1418  #ifndef SQLITE_OMIT_VIRTUALTABLE
  1419    int nVTrans;                  /* Allocated size of aVTrans */
  1420    Hash aModule;                 /* populated by sqlite3_create_module() */
  1421    VtabCtx *pVtabCtx;            /* Context for active vtab connect/create */
  1422    VTable **aVTrans;             /* Virtual tables with open transactions */
  1423    VTable *pDisconnect;    /* Disconnect these in next sqlite3_prepare() */
  1424  #endif
  1425    Hash aFunc;                   /* Hash table of connection functions */
  1426    Hash aCollSeq;                /* All collating sequences */
  1427    BusyHandler busyHandler;      /* Busy callback */
  1428    Db aDbStatic[2];              /* Static space for the 2 default backends */
  1429    Savepoint *pSavepoint;        /* List of active savepoints */
  1430    int busyTimeout;              /* Busy handler timeout, in msec */
  1431    int nSavepoint;               /* Number of non-transaction savepoints */
  1432    int nStatement;               /* Number of nested statement-transactions  */
  1433    i64 nDeferredCons;            /* Net deferred constraints this transaction. */
  1434    i64 nDeferredImmCons;         /* Net deferred immediate constraints */
  1435    int *pnBytesFreed;            /* If not NULL, increment this in DbFree() */
  1436  #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
  1437    /* The following variables are all protected by the STATIC_MASTER
  1438    ** mutex, not by sqlite3.mutex. They are used by code in notify.c.
  1439    **
  1440    ** When X.pUnlockConnection==Y, that means that X is waiting for Y to
  1441    ** unlock so that it can proceed.
  1442    **
  1443    ** When X.pBlockingConnection==Y, that means that something that X tried
  1444    ** tried to do recently failed with an SQLITE_LOCKED error due to locks
  1445    ** held by Y.
  1446    */
  1447    sqlite3 *pBlockingConnection; /* Connection that caused SQLITE_LOCKED */
  1448    sqlite3 *pUnlockConnection;           /* Connection to watch for unlock */
  1449    void *pUnlockArg;                     /* Argument to xUnlockNotify */
  1450    void (*xUnlockNotify)(void **, int);  /* Unlock notify callback */
  1451    sqlite3 *pNextBlocked;        /* Next in list of all blocked connections */
  1452  #endif
  1453  #ifdef SQLITE_USER_AUTHENTICATION
  1454    sqlite3_userauth auth;        /* User authentication information */
  1455  #endif
  1456  };
  1457  
  1458  /*
  1459  ** A macro to discover the encoding of a database.
  1460  */
  1461  #define SCHEMA_ENC(db) ((db)->aDb[0].pSchema->enc)
  1462  #define ENC(db)        ((db)->enc)
  1463  
  1464  /*
  1465  ** Possible values for the sqlite3.flags.
  1466  **
  1467  ** Value constraints (enforced via assert()):
  1468  **      SQLITE_FullFSync     == PAGER_FULLFSYNC
  1469  **      SQLITE_CkptFullFSync == PAGER_CKPT_FULLFSYNC
  1470  **      SQLITE_CacheSpill    == PAGER_CACHE_SPILL
  1471  */
  1472  #define SQLITE_WriteSchema    0x00000001  /* OK to update SQLITE_MASTER */
  1473  #define SQLITE_LegacyFileFmt  0x00000002  /* Create new databases in format 1 */
  1474  #define SQLITE_FullColNames   0x00000004  /* Show full column names on SELECT */
  1475  #define SQLITE_FullFSync      0x00000008  /* Use full fsync on the backend */
  1476  #define SQLITE_CkptFullFSync  0x00000010  /* Use full fsync for checkpoint */
  1477  #define SQLITE_CacheSpill     0x00000020  /* OK to spill pager cache */
  1478  #define SQLITE_ShortColNames  0x00000040  /* Show short columns names */
  1479  #define SQLITE_CountRows      0x00000080  /* Count rows changed by INSERT, */
  1480                                            /*   DELETE, or UPDATE and return */
  1481                                            /*   the count using a callback. */
  1482  #define SQLITE_NullCallback   0x00000100  /* Invoke the callback once if the */
  1483                                            /*   result set is empty */
  1484  #define SQLITE_IgnoreChecks   0x00000200  /* Do not enforce check constraints */
  1485  #define SQLITE_ReadUncommit   0x00000400  /* READ UNCOMMITTED in shared-cache */
  1486  #define SQLITE_NoCkptOnClose  0x00000800  /* No checkpoint on close()/DETACH */
  1487  #define SQLITE_ReverseOrder   0x00001000  /* Reverse unordered SELECTs */
  1488  #define SQLITE_RecTriggers    0x00002000  /* Enable recursive triggers */
  1489  #define SQLITE_ForeignKeys    0x00004000  /* Enforce foreign key constraints  */
  1490  #define SQLITE_AutoIndex      0x00008000  /* Enable automatic indexes */
  1491  #define SQLITE_LoadExtension  0x00010000  /* Enable load_extension */
  1492  #define SQLITE_LoadExtFunc    0x00020000  /* Enable load_extension() SQL func */
  1493  #define SQLITE_EnableTrigger  0x00040000  /* True to enable triggers */
  1494  #define SQLITE_DeferFKs       0x00080000  /* Defer all FK constraints */
  1495  #define SQLITE_QueryOnly      0x00100000  /* Disable database changes */
  1496  #define SQLITE_CellSizeCk     0x00200000  /* Check btree cell sizes on load */
  1497  #define SQLITE_Fts3Tokenizer  0x00400000  /* Enable fts3_tokenizer(2) */
  1498  #define SQLITE_EnableQPSG     0x00800000  /* Query Planner Stability Guarantee */
  1499  /* Flags used only if debugging */
  1500  #ifdef SQLITE_DEBUG
  1501  #define SQLITE_SqlTrace       0x08000000  /* Debug print SQL as it executes */
  1502  #define SQLITE_VdbeListing    0x10000000  /* Debug listings of VDBE programs */
  1503  #define SQLITE_VdbeTrace      0x20000000  /* True to trace VDBE execution */
  1504  #define SQLITE_VdbeAddopTrace 0x40000000  /* Trace sqlite3VdbeAddOp() calls */
  1505  #define SQLITE_VdbeEQP        0x80000000  /* Debug EXPLAIN QUERY PLAN */
  1506  #endif
  1507  
  1508  /*
  1509  ** Allowed values for sqlite3.mDbFlags
  1510  */
  1511  #define DBFLAG_SchemaChange   0x0001  /* Uncommitted Hash table changes */
  1512  #define DBFLAG_PreferBuiltin  0x0002  /* Preference to built-in funcs */
  1513  #define DBFLAG_Vacuum         0x0004  /* Currently in a VACUUM */
  1514  
  1515  /*
  1516  ** Bits of the sqlite3.dbOptFlags field that are used by the
  1517  ** sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS,...) interface to
  1518  ** selectively disable various optimizations.
  1519  */
  1520  #define SQLITE_QueryFlattener 0x0001   /* Query flattening */
  1521  #define SQLITE_ColumnCache    0x0002   /* Column cache */
  1522  #define SQLITE_GroupByOrder   0x0004   /* GROUPBY cover of ORDERBY */
  1523  #define SQLITE_FactorOutConst 0x0008   /* Constant factoring */
  1524  #define SQLITE_DistinctOpt    0x0010   /* DISTINCT using indexes */
  1525  #define SQLITE_CoverIdxScan   0x0020   /* Covering index scans */
  1526  #define SQLITE_OrderByIdxJoin 0x0040   /* ORDER BY of joins via index */
  1527  #define SQLITE_Transitive     0x0080   /* Transitive constraints */
  1528  #define SQLITE_OmitNoopJoin   0x0100   /* Omit unused tables in joins */
  1529  #define SQLITE_CountOfView    0x0200   /* The count-of-view optimization */
  1530  #define SQLITE_CursorHints    0x0400   /* Add OP_CursorHint opcodes */
  1531  #define SQLITE_Stat34         0x0800   /* Use STAT3 or STAT4 data */
  1532     /* TH3 expects the Stat34  ^^^^^^ value to be 0x0800.  Don't change it */
  1533  #define SQLITE_AllOpts        0xffff   /* All optimizations */
  1534  
  1535  /*
  1536  ** Macros for testing whether or not optimizations are enabled or disabled.
  1537  */
  1538  #define OptimizationDisabled(db, mask)  (((db)->dbOptFlags&(mask))!=0)
  1539  #define OptimizationEnabled(db, mask)   (((db)->dbOptFlags&(mask))==0)
  1540  
  1541  /*
  1542  ** Return true if it OK to factor constant expressions into the initialization
  1543  ** code. The argument is a Parse object for the code generator.
  1544  */
  1545  #define ConstFactorOk(P) ((P)->okConstFactor)
  1546  
  1547  /*
  1548  ** Possible values for the sqlite.magic field.
  1549  ** The numbers are obtained at random and have no special meaning, other
  1550  ** than being distinct from one another.
  1551  */
  1552  #define SQLITE_MAGIC_OPEN     0xa029a697  /* Database is open */
  1553  #define SQLITE_MAGIC_CLOSED   0x9f3c2d33  /* Database is closed */
  1554  #define SQLITE_MAGIC_SICK     0x4b771290  /* Error and awaiting close */
  1555  #define SQLITE_MAGIC_BUSY     0xf03b7906  /* Database currently in use */
  1556  #define SQLITE_MAGIC_ERROR    0xb5357930  /* An SQLITE_MISUSE error occurred */
  1557  #define SQLITE_MAGIC_ZOMBIE   0x64cffc7f  /* Close with last statement close */
  1558  
  1559  /*
  1560  ** Each SQL function is defined by an instance of the following
  1561  ** structure.  For global built-in functions (ex: substr(), max(), count())
  1562  ** a pointer to this structure is held in the sqlite3BuiltinFunctions object.
  1563  ** For per-connection application-defined functions, a pointer to this
  1564  ** structure is held in the db->aHash hash table.
  1565  **
  1566  ** The u.pHash field is used by the global built-ins.  The u.pDestructor
  1567  ** field is used by per-connection app-def functions.
  1568  */
  1569  struct FuncDef {
  1570    i8 nArg;             /* Number of arguments.  -1 means unlimited */
  1571    u16 funcFlags;       /* Some combination of SQLITE_FUNC_* */
  1572    void *pUserData;     /* User data parameter */
  1573    FuncDef *pNext;      /* Next function with same name */
  1574    void (*xSFunc)(sqlite3_context*,int,sqlite3_value**); /* func or agg-step */
  1575    void (*xFinalize)(sqlite3_context*);                  /* Agg finalizer */
  1576    const char *zName;   /* SQL name of the function. */
  1577    union {
  1578      FuncDef *pHash;      /* Next with a different name but the same hash */
  1579      FuncDestructor *pDestructor;   /* Reference counted destructor function */
  1580    } u;
  1581  };
  1582  
  1583  /*
  1584  ** This structure encapsulates a user-function destructor callback (as
  1585  ** configured using create_function_v2()) and a reference counter. When
  1586  ** create_function_v2() is called to create a function with a destructor,
  1587  ** a single object of this type is allocated. FuncDestructor.nRef is set to
  1588  ** the number of FuncDef objects created (either 1 or 3, depending on whether
  1589  ** or not the specified encoding is SQLITE_ANY). The FuncDef.pDestructor
  1590  ** member of each of the new FuncDef objects is set to point to the allocated
  1591  ** FuncDestructor.
  1592  **
  1593  ** Thereafter, when one of the FuncDef objects is deleted, the reference
  1594  ** count on this object is decremented. When it reaches 0, the destructor
  1595  ** is invoked and the FuncDestructor structure freed.
  1596  */
  1597  struct FuncDestructor {
  1598    int nRef;
  1599    void (*xDestroy)(void *);
  1600    void *pUserData;
  1601  };
  1602  
  1603  /*
  1604  ** Possible values for FuncDef.flags.  Note that the _LENGTH and _TYPEOF
  1605  ** values must correspond to OPFLAG_LENGTHARG and OPFLAG_TYPEOFARG.  And
  1606  ** SQLITE_FUNC_CONSTANT must be the same as SQLITE_DETERMINISTIC.  There
  1607  ** are assert() statements in the code to verify this.
  1608  **
  1609  ** Value constraints (enforced via assert()):
  1610  **     SQLITE_FUNC_MINMAX    ==  NC_MinMaxAgg      == SF_MinMaxAgg
  1611  **     SQLITE_FUNC_LENGTH    ==  OPFLAG_LENGTHARG
  1612  **     SQLITE_FUNC_TYPEOF    ==  OPFLAG_TYPEOFARG
  1613  **     SQLITE_FUNC_CONSTANT  ==  SQLITE_DETERMINISTIC from the API
  1614  **     SQLITE_FUNC_ENCMASK   depends on SQLITE_UTF* macros in the API
  1615  */
  1616  #define SQLITE_FUNC_ENCMASK  0x0003 /* SQLITE_UTF8, SQLITE_UTF16BE or UTF16LE */
  1617  #define SQLITE_FUNC_LIKE     0x0004 /* Candidate for the LIKE optimization */
  1618  #define SQLITE_FUNC_CASE     0x0008 /* Case-sensitive LIKE-type function */
  1619  #define SQLITE_FUNC_EPHEM    0x0010 /* Ephemeral.  Delete with VDBE */
  1620  #define SQLITE_FUNC_NEEDCOLL 0x0020 /* sqlite3GetFuncCollSeq() might be called*/
  1621  #define SQLITE_FUNC_LENGTH   0x0040 /* Built-in length() function */
  1622  #define SQLITE_FUNC_TYPEOF   0x0080 /* Built-in typeof() function */
  1623  #define SQLITE_FUNC_COUNT    0x0100 /* Built-in count(*) aggregate */
  1624  #define SQLITE_FUNC_COALESCE 0x0200 /* Built-in coalesce() or ifnull() */
  1625  #define SQLITE_FUNC_UNLIKELY 0x0400 /* Built-in unlikely() function */
  1626  #define SQLITE_FUNC_CONSTANT 0x0800 /* Constant inputs give a constant output */
  1627  #define SQLITE_FUNC_MINMAX   0x1000 /* True for min() and max() aggregates */
  1628  #define SQLITE_FUNC_SLOCHNG  0x2000 /* "Slow Change". Value constant during a
  1629                                      ** single query - might change over time */
  1630  #define SQLITE_FUNC_AFFINITY 0x4000 /* Built-in affinity() function */
  1631  
  1632  /*
  1633  ** The following three macros, FUNCTION(), LIKEFUNC() and AGGREGATE() are
  1634  ** used to create the initializers for the FuncDef structures.
  1635  **
  1636  **   FUNCTION(zName, nArg, iArg, bNC, xFunc)
  1637  **     Used to create a scalar function definition of a function zName
  1638  **     implemented by C function xFunc that accepts nArg arguments. The
  1639  **     value passed as iArg is cast to a (void*) and made available
  1640  **     as the user-data (sqlite3_user_data()) for the function. If
  1641  **     argument bNC is true, then the SQLITE_FUNC_NEEDCOLL flag is set.
  1642  **
  1643  **   VFUNCTION(zName, nArg, iArg, bNC, xFunc)
  1644  **     Like FUNCTION except it omits the SQLITE_FUNC_CONSTANT flag.
  1645  **
  1646  **   DFUNCTION(zName, nArg, iArg, bNC, xFunc)
  1647  **     Like FUNCTION except it omits the SQLITE_FUNC_CONSTANT flag and
  1648  **     adds the SQLITE_FUNC_SLOCHNG flag.  Used for date & time functions
  1649  **     and functions like sqlite_version() that can change, but not during
  1650  **     a single query.  The iArg is ignored.  The user-data is always set
  1651  **     to a NULL pointer.  The bNC parameter is not used.
  1652  **
  1653  **   PURE_DATE(zName, nArg, iArg, bNC, xFunc)
  1654  **     Used for "pure" date/time functions, this macro is like DFUNCTION
  1655  **     except that it does set the SQLITE_FUNC_CONSTANT flags.  iArg is
  1656  **     ignored and the user-data for these functions is set to an 
  1657  **     arbitrary non-NULL pointer.  The bNC parameter is not used.
  1658  **
  1659  **   AGGREGATE(zName, nArg, iArg, bNC, xStep, xFinal)
  1660  **     Used to create an aggregate function definition implemented by
  1661  **     the C functions xStep and xFinal. The first four parameters
  1662  **     are interpreted in the same way as the first 4 parameters to
  1663  **     FUNCTION().
  1664  **
  1665  **   LIKEFUNC(zName, nArg, pArg, flags)
  1666  **     Used to create a scalar function definition of a function zName
  1667  **     that accepts nArg arguments and is implemented by a call to C
  1668  **     function likeFunc. Argument pArg is cast to a (void *) and made
  1669  **     available as the function user-data (sqlite3_user_data()). The
  1670  **     FuncDef.flags variable is set to the value passed as the flags
  1671  **     parameter.
  1672  */
  1673  #define FUNCTION(zName, nArg, iArg, bNC, xFunc) \
  1674    {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
  1675     SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, #zName, {0} }
  1676  #define VFUNCTION(zName, nArg, iArg, bNC, xFunc) \
  1677    {nArg, SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
  1678     SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, #zName, {0} }
  1679  #define DFUNCTION(zName, nArg, iArg, bNC, xFunc) \
  1680    {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8, \
  1681     0, 0, xFunc, 0, #zName, {0} }
  1682  #define PURE_DATE(zName, nArg, iArg, bNC, xFunc) \
  1683    {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|SQLITE_FUNC_CONSTANT, \
  1684     (void*)&sqlite3Config, 0, xFunc, 0, #zName, {0} }
  1685  #define FUNCTION2(zName, nArg, iArg, bNC, xFunc, extraFlags) \
  1686    {nArg,SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL)|extraFlags,\
  1687     SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, #zName, {0} }
  1688  #define STR_FUNCTION(zName, nArg, pArg, bNC, xFunc) \
  1689    {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
  1690     pArg, 0, xFunc, 0, #zName, }
  1691  #define LIKEFUNC(zName, nArg, arg, flags) \
  1692    {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|flags, \
  1693     (void *)arg, 0, likeFunc, 0, #zName, {0} }
  1694  #define AGGREGATE(zName, nArg, arg, nc, xStep, xFinal) \
  1695    {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL), \
  1696     SQLITE_INT_TO_PTR(arg), 0, xStep,xFinal,#zName, {0}}
  1697  #define AGGREGATE2(zName, nArg, arg, nc, xStep, xFinal, extraFlags) \
  1698    {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|extraFlags, \
  1699     SQLITE_INT_TO_PTR(arg), 0, xStep,xFinal,#zName, {0}}
  1700  
  1701  /*
  1702  ** All current savepoints are stored in a linked list starting at
  1703  ** sqlite3.pSavepoint. The first element in the list is the most recently
  1704  ** opened savepoint. Savepoints are added to the list by the vdbe
  1705  ** OP_Savepoint instruction.
  1706  */
  1707  struct Savepoint {
  1708    char *zName;                        /* Savepoint name (nul-terminated) */
  1709    i64 nDeferredCons;                  /* Number of deferred fk violations */
  1710    i64 nDeferredImmCons;               /* Number of deferred imm fk. */
  1711    Savepoint *pNext;                   /* Parent savepoint (if any) */
  1712  };
  1713  
  1714  /*
  1715  ** The following are used as the second parameter to sqlite3Savepoint(),
  1716  ** and as the P1 argument to the OP_Savepoint instruction.
  1717  */
  1718  #define SAVEPOINT_BEGIN      0
  1719  #define SAVEPOINT_RELEASE    1
  1720  #define SAVEPOINT_ROLLBACK   2
  1721  
  1722  
  1723  /*
  1724  ** Each SQLite module (virtual table definition) is defined by an
  1725  ** instance of the following structure, stored in the sqlite3.aModule
  1726  ** hash table.
  1727  */
  1728  struct Module {
  1729    const sqlite3_module *pModule;       /* Callback pointers */
  1730    const char *zName;                   /* Name passed to create_module() */
  1731    void *pAux;                          /* pAux passed to create_module() */
  1732    void (*xDestroy)(void *);            /* Module destructor function */
  1733    Table *pEpoTab;                      /* Eponymous table for this module */
  1734  };
  1735  
  1736  /*
  1737  ** information about each column of an SQL table is held in an instance
  1738  ** of this structure.
  1739  */
  1740  struct Column {
  1741    char *zName;     /* Name of this column, \000, then the type */
  1742    Expr *pDflt;     /* Default value of this column */
  1743    char *zColl;     /* Collating sequence.  If NULL, use the default */
  1744    u8 notNull;      /* An OE_ code for handling a NOT NULL constraint */
  1745    char affinity;   /* One of the SQLITE_AFF_... values */
  1746    u8 szEst;        /* Estimated size of value in this column. sizeof(INT)==1 */
  1747    u8 colFlags;     /* Boolean properties.  See COLFLAG_ defines below */
  1748  };
  1749  
  1750  /* Allowed values for Column.colFlags:
  1751  */
  1752  #define COLFLAG_PRIMKEY  0x0001    /* Column is part of the primary key */
  1753  #define COLFLAG_HIDDEN   0x0002    /* A hidden column in a virtual table */
  1754  #define COLFLAG_HASTYPE  0x0004    /* Type name follows column name */
  1755  
  1756  /*
  1757  ** A "Collating Sequence" is defined by an instance of the following
  1758  ** structure. Conceptually, a collating sequence consists of a name and
  1759  ** a comparison routine that defines the order of that sequence.
  1760  **
  1761  ** If CollSeq.xCmp is NULL, it means that the
  1762  ** collating sequence is undefined.  Indices built on an undefined
  1763  ** collating sequence may not be read or written.
  1764  */
  1765  struct CollSeq {
  1766    char *zName;          /* Name of the collating sequence, UTF-8 encoded */
  1767    u8 enc;               /* Text encoding handled by xCmp() */
  1768    void *pUser;          /* First argument to xCmp() */
  1769    int (*xCmp)(void*,int, const void*, int, const void*);
  1770    void (*xDel)(void*);  /* Destructor for pUser */
  1771  };
  1772  
  1773  /*
  1774  ** A sort order can be either ASC or DESC.
  1775  */
  1776  #define SQLITE_SO_ASC       0  /* Sort in ascending order */
  1777  #define SQLITE_SO_DESC      1  /* Sort in ascending order */
  1778  #define SQLITE_SO_UNDEFINED -1 /* No sort order specified */
  1779  
  1780  /*
  1781  ** Column affinity types.
  1782  **
  1783  ** These used to have mnemonic name like 'i' for SQLITE_AFF_INTEGER and
  1784  ** 't' for SQLITE_AFF_TEXT.  But we can save a little space and improve
  1785  ** the speed a little by numbering the values consecutively.
  1786  **
  1787  ** But rather than start with 0 or 1, we begin with 'A'.  That way,
  1788  ** when multiple affinity types are concatenated into a string and
  1789  ** used as the P4 operand, they will be more readable.
  1790  **
  1791  ** Note also that the numeric types are grouped together so that testing
  1792  ** for a numeric type is a single comparison.  And the BLOB type is first.
  1793  */
  1794  #define SQLITE_AFF_BLOB     'A'
  1795  #define SQLITE_AFF_TEXT     'B'
  1796  #define SQLITE_AFF_NUMERIC  'C'
  1797  #define SQLITE_AFF_INTEGER  'D'
  1798  #define SQLITE_AFF_REAL     'E'
  1799  
  1800  #define sqlite3IsNumericAffinity(X)  ((X)>=SQLITE_AFF_NUMERIC)
  1801  
  1802  /*
  1803  ** The SQLITE_AFF_MASK values masks off the significant bits of an
  1804  ** affinity value.
  1805  */
  1806  #define SQLITE_AFF_MASK     0x47
  1807  
  1808  /*
  1809  ** Additional bit values that can be ORed with an affinity without
  1810  ** changing the affinity.
  1811  **
  1812  ** The SQLITE_NOTNULL flag is a combination of NULLEQ and JUMPIFNULL.
  1813  ** It causes an assert() to fire if either operand to a comparison
  1814  ** operator is NULL.  It is added to certain comparison operators to
  1815  ** prove that the operands are always NOT NULL.
  1816  */
  1817  #define SQLITE_KEEPNULL     0x08  /* Used by vector == or <> */
  1818  #define SQLITE_JUMPIFNULL   0x10  /* jumps if either operand is NULL */
  1819  #define SQLITE_STOREP2      0x20  /* Store result in reg[P2] rather than jump */
  1820  #define SQLITE_NULLEQ       0x80  /* NULL=NULL */
  1821  #define SQLITE_NOTNULL      0x90  /* Assert that operands are never NULL */
  1822  
  1823  /*
  1824  ** An object of this type is created for each virtual table present in
  1825  ** the database schema.
  1826  **
  1827  ** If the database schema is shared, then there is one instance of this
  1828  ** structure for each database connection (sqlite3*) that uses the shared
  1829  ** schema. This is because each database connection requires its own unique
  1830  ** instance of the sqlite3_vtab* handle used to access the virtual table
  1831  ** implementation. sqlite3_vtab* handles can not be shared between
  1832  ** database connections, even when the rest of the in-memory database
  1833  ** schema is shared, as the implementation often stores the database
  1834  ** connection handle passed to it via the xConnect() or xCreate() method
  1835  ** during initialization internally. This database connection handle may
  1836  ** then be used by the virtual table implementation to access real tables
  1837  ** within the database. So that they appear as part of the callers
  1838  ** transaction, these accesses need to be made via the same database
  1839  ** connection as that used to execute SQL operations on the virtual table.
  1840  **
  1841  ** All VTable objects that correspond to a single table in a shared
  1842  ** database schema are initially stored in a linked-list pointed to by
  1843  ** the Table.pVTable member variable of the corresponding Table object.
  1844  ** When an sqlite3_prepare() operation is required to access the virtual
  1845  ** table, it searches the list for the VTable that corresponds to the
  1846  ** database connection doing the preparing so as to use the correct
  1847  ** sqlite3_vtab* handle in the compiled query.
  1848  **
  1849  ** When an in-memory Table object is deleted (for example when the
  1850  ** schema is being reloaded for some reason), the VTable objects are not
  1851  ** deleted and the sqlite3_vtab* handles are not xDisconnect()ed
  1852  ** immediately. Instead, they are moved from the Table.pVTable list to
  1853  ** another linked list headed by the sqlite3.pDisconnect member of the
  1854  ** corresponding sqlite3 structure. They are then deleted/xDisconnected
  1855  ** next time a statement is prepared using said sqlite3*. This is done
  1856  ** to avoid deadlock issues involving multiple sqlite3.mutex mutexes.
  1857  ** Refer to comments above function sqlite3VtabUnlockList() for an
  1858  ** explanation as to why it is safe to add an entry to an sqlite3.pDisconnect
  1859  ** list without holding the corresponding sqlite3.mutex mutex.
  1860  **
  1861  ** The memory for objects of this type is always allocated by
  1862  ** sqlite3DbMalloc(), using the connection handle stored in VTable.db as
  1863  ** the first argument.
  1864  */
  1865  struct VTable {
  1866    sqlite3 *db;              /* Database connection associated with this table */
  1867    Module *pMod;             /* Pointer to module implementation */
  1868    sqlite3_vtab *pVtab;      /* Pointer to vtab instance */
  1869    int nRef;                 /* Number of pointers to this structure */
  1870    u8 bConstraint;           /* True if constraints are supported */
  1871    int iSavepoint;           /* Depth of the SAVEPOINT stack */
  1872    VTable *pNext;            /* Next in linked list (see above) */
  1873  };
  1874  
  1875  /*
  1876  ** The schema for each SQL table and view is represented in memory
  1877  ** by an instance of the following structure.
  1878  */
  1879  struct Table {
  1880    char *zName;         /* Name of the table or view */
  1881    Column *aCol;        /* Information about each column */
  1882    Index *pIndex;       /* List of SQL indexes on this table. */
  1883    Select *pSelect;     /* NULL for tables.  Points to definition if a view. */
  1884    FKey *pFKey;         /* Linked list of all foreign keys in this table */
  1885    char *zColAff;       /* String defining the affinity of each column */
  1886    ExprList *pCheck;    /* All CHECK constraints */
  1887                         /*   ... also used as column name list in a VIEW */
  1888    int tnum;            /* Root BTree page for this table */
  1889    u32 nTabRef;         /* Number of pointers to this Table */
  1890    u32 tabFlags;        /* Mask of TF_* values */
  1891    i16 iPKey;           /* If not negative, use aCol[iPKey] as the rowid */
  1892    i16 nCol;            /* Number of columns in this table */
  1893    LogEst nRowLogEst;   /* Estimated rows in table - from sqlite_stat1 table */
  1894    LogEst szTabRow;     /* Estimated size of each table row in bytes */
  1895  #ifdef SQLITE_ENABLE_COSTMULT
  1896    LogEst costMult;     /* Cost multiplier for using this table */
  1897  #endif
  1898    u8 keyConf;          /* What to do in case of uniqueness conflict on iPKey */
  1899  #ifndef SQLITE_OMIT_ALTERTABLE
  1900    int addColOffset;    /* Offset in CREATE TABLE stmt to add a new column */
  1901  #endif
  1902  #ifndef SQLITE_OMIT_VIRTUALTABLE
  1903    int nModuleArg;      /* Number of arguments to the module */
  1904    char **azModuleArg;  /* 0: module 1: schema 2: vtab name 3...: args */
  1905    VTable *pVTable;     /* List of VTable objects. */
  1906  #endif
  1907    Trigger *pTrigger;   /* List of triggers stored in pSchema */
  1908    Schema *pSchema;     /* Schema that contains this table */
  1909    Table *pNextZombie;  /* Next on the Parse.pZombieTab list */
  1910  };
  1911  
  1912  /*
  1913  ** Allowed values for Table.tabFlags.
  1914  **
  1915  ** TF_OOOHidden applies to tables or view that have hidden columns that are
  1916  ** followed by non-hidden columns.  Example:  "CREATE VIRTUAL TABLE x USING
  1917  ** vtab1(a HIDDEN, b);".  Since "b" is a non-hidden column but "a" is hidden,
  1918  ** the TF_OOOHidden attribute would apply in this case.  Such tables require
  1919  ** special handling during INSERT processing.
  1920  */
  1921  #define TF_Readonly        0x0001    /* Read-only system table */
  1922  #define TF_Ephemeral       0x0002    /* An ephemeral table */
  1923  #define TF_HasPrimaryKey   0x0004    /* Table has a primary key */
  1924  #define TF_Autoincrement   0x0008    /* Integer primary key is autoincrement */
  1925  #define TF_HasStat1        0x0010    /* nRowLogEst set from sqlite_stat1 */
  1926  #define TF_WithoutRowid    0x0020    /* No rowid.  PRIMARY KEY is the key */
  1927  #define TF_NoVisibleRowid  0x0040    /* No user-visible "rowid" column */
  1928  #define TF_OOOHidden       0x0080    /* Out-of-Order hidden columns */
  1929  #define TF_StatsUsed       0x0100    /* Query planner decisions affected by
  1930                                       ** Index.aiRowLogEst[] values */
  1931  #define TF_HasNotNull      0x0200    /* Contains NOT NULL constraints */
  1932  
  1933  /*
  1934  ** Test to see whether or not a table is a virtual table.  This is
  1935  ** done as a macro so that it will be optimized out when virtual
  1936  ** table support is omitted from the build.
  1937  */
  1938  #ifndef SQLITE_OMIT_VIRTUALTABLE
  1939  #  define IsVirtual(X)      ((X)->nModuleArg)
  1940  #else
  1941  #  define IsVirtual(X)      0
  1942  #endif
  1943  
  1944  /*
  1945  ** Macros to determine if a column is hidden.  IsOrdinaryHiddenColumn()
  1946  ** only works for non-virtual tables (ordinary tables and views) and is
  1947  ** always false unless SQLITE_ENABLE_HIDDEN_COLUMNS is defined.  The
  1948  ** IsHiddenColumn() macro is general purpose.
  1949  */
  1950  #if defined(SQLITE_ENABLE_HIDDEN_COLUMNS)
  1951  #  define IsHiddenColumn(X)         (((X)->colFlags & COLFLAG_HIDDEN)!=0)
  1952  #  define IsOrdinaryHiddenColumn(X) (((X)->colFlags & COLFLAG_HIDDEN)!=0)
  1953  #elif !defined(SQLITE_OMIT_VIRTUALTABLE)
  1954  #  define IsHiddenColumn(X)         (((X)->colFlags & COLFLAG_HIDDEN)!=0)
  1955  #  define IsOrdinaryHiddenColumn(X) 0
  1956  #else
  1957  #  define IsHiddenColumn(X)         0
  1958  #  define IsOrdinaryHiddenColumn(X) 0
  1959  #endif
  1960  
  1961  
  1962  /* Does the table have a rowid */
  1963  #define HasRowid(X)     (((X)->tabFlags & TF_WithoutRowid)==0)
  1964  #define VisibleRowid(X) (((X)->tabFlags & TF_NoVisibleRowid)==0)
  1965  
  1966  /*
  1967  ** Each foreign key constraint is an instance of the following structure.
  1968  **
  1969  ** A foreign key is associated with two tables.  The "from" table is
  1970  ** the table that contains the REFERENCES clause that creates the foreign
  1971  ** key.  The "to" table is the table that is named in the REFERENCES clause.
  1972  ** Consider this example:
  1973  **
  1974  **     CREATE TABLE ex1(
  1975  **       a INTEGER PRIMARY KEY,
  1976  **       b INTEGER CONSTRAINT fk1 REFERENCES ex2(x)
  1977  **     );
  1978  **
  1979  ** For foreign key "fk1", the from-table is "ex1" and the to-table is "ex2".
  1980  ** Equivalent names:
  1981  **
  1982  **     from-table == child-table
  1983  **       to-table == parent-table
  1984  **
  1985  ** Each REFERENCES clause generates an instance of the following structure
  1986  ** which is attached to the from-table.  The to-table need not exist when
  1987  ** the from-table is created.  The existence of the to-table is not checked.
  1988  **
  1989  ** The list of all parents for child Table X is held at X.pFKey.
  1990  **
  1991  ** A list of all children for a table named Z (which might not even exist)
  1992  ** is held in Schema.fkeyHash with a hash key of Z.
  1993  */
  1994  struct FKey {
  1995    Table *pFrom;     /* Table containing the REFERENCES clause (aka: Child) */
  1996    FKey *pNextFrom;  /* Next FKey with the same in pFrom. Next parent of pFrom */
  1997    char *zTo;        /* Name of table that the key points to (aka: Parent) */
  1998    FKey *pNextTo;    /* Next with the same zTo. Next child of zTo. */
  1999    FKey *pPrevTo;    /* Previous with the same zTo */
  2000    int nCol;         /* Number of columns in this key */
  2001    /* EV: R-30323-21917 */
  2002    u8 isDeferred;       /* True if constraint checking is deferred till COMMIT */
  2003    u8 aAction[2];        /* ON DELETE and ON UPDATE actions, respectively */
  2004    Trigger *apTrigger[2];/* Triggers for aAction[] actions */
  2005    struct sColMap {      /* Mapping of columns in pFrom to columns in zTo */
  2006      int iFrom;            /* Index of column in pFrom */
  2007      char *zCol;           /* Name of column in zTo.  If NULL use PRIMARY KEY */
  2008    } aCol[1];            /* One entry for each of nCol columns */
  2009  };
  2010  
  2011  /*
  2012  ** SQLite supports many different ways to resolve a constraint
  2013  ** error.  ROLLBACK processing means that a constraint violation
  2014  ** causes the operation in process to fail and for the current transaction
  2015  ** to be rolled back.  ABORT processing means the operation in process
  2016  ** fails and any prior changes from that one operation are backed out,
  2017  ** but the transaction is not rolled back.  FAIL processing means that
  2018  ** the operation in progress stops and returns an error code.  But prior
  2019  ** changes due to the same operation are not backed out and no rollback
  2020  ** occurs.  IGNORE means that the particular row that caused the constraint
  2021  ** error is not inserted or updated.  Processing continues and no error
  2022  ** is returned.  REPLACE means that preexisting database rows that caused
  2023  ** a UNIQUE constraint violation are removed so that the new insert or
  2024  ** update can proceed.  Processing continues and no error is reported.
  2025  **
  2026  ** RESTRICT, SETNULL, and CASCADE actions apply only to foreign keys.
  2027  ** RESTRICT is the same as ABORT for IMMEDIATE foreign keys and the
  2028  ** same as ROLLBACK for DEFERRED keys.  SETNULL means that the foreign
  2029  ** key is set to NULL.  CASCADE means that a DELETE or UPDATE of the
  2030  ** referenced table row is propagated into the row that holds the
  2031  ** foreign key.
  2032  **
  2033  ** The following symbolic values are used to record which type
  2034  ** of action to take.
  2035  */
  2036  #define OE_None     0   /* There is no constraint to check */
  2037  #define OE_Rollback 1   /* Fail the operation and rollback the transaction */
  2038  #define OE_Abort    2   /* Back out changes but do no rollback transaction */
  2039  #define OE_Fail     3   /* Stop the operation but leave all prior changes */
  2040  #define OE_Ignore   4   /* Ignore the error. Do not do the INSERT or UPDATE */
  2041  #define OE_Replace  5   /* Delete existing record, then do INSERT or UPDATE */
  2042  
  2043  #define OE_Restrict 6   /* OE_Abort for IMMEDIATE, OE_Rollback for DEFERRED */
  2044  #define OE_SetNull  7   /* Set the foreign key value to NULL */
  2045  #define OE_SetDflt  8   /* Set the foreign key value to its default */
  2046  #define OE_Cascade  9   /* Cascade the changes */
  2047  
  2048  #define OE_Default  10  /* Do whatever the default action is */
  2049  
  2050  
  2051  /*
  2052  ** An instance of the following structure is passed as the first
  2053  ** argument to sqlite3VdbeKeyCompare and is used to control the
  2054  ** comparison of the two index keys.
  2055  **
  2056  ** Note that aSortOrder[] and aColl[] have nField+1 slots.  There
  2057  ** are nField slots for the columns of an index then one extra slot
  2058  ** for the rowid at the end.
  2059  */
  2060  struct KeyInfo {
  2061    u32 nRef;           /* Number of references to this KeyInfo object */
  2062    u8 enc;             /* Text encoding - one of the SQLITE_UTF* values */
  2063    u16 nKeyField;      /* Number of key columns in the index */
  2064    u16 nAllField;      /* Total columns, including key plus others */
  2065    sqlite3 *db;        /* The database connection */
  2066    u8 *aSortOrder;     /* Sort order for each column. */
  2067    CollSeq *aColl[1];  /* Collating sequence for each term of the key */
  2068  };
  2069  
  2070  /*
  2071  ** This object holds a record which has been parsed out into individual
  2072  ** fields, for the purposes of doing a comparison.
  2073  **
  2074  ** A record is an object that contains one or more fields of data.
  2075  ** Records are used to store the content of a table row and to store
  2076  ** the key of an index.  A blob encoding of a record is created by
  2077  ** the OP_MakeRecord opcode of the VDBE and is disassembled by the
  2078  ** OP_Column opcode.
  2079  **
  2080  ** An instance of this object serves as a "key" for doing a search on
  2081  ** an index b+tree. The goal of the search is to find the entry that
  2082  ** is closed to the key described by this object.  This object might hold
  2083  ** just a prefix of the key.  The number of fields is given by
  2084  ** pKeyInfo->nField.
  2085  **
  2086  ** The r1 and r2 fields are the values to return if this key is less than
  2087  ** or greater than a key in the btree, respectively.  These are normally
  2088  ** -1 and +1 respectively, but might be inverted to +1 and -1 if the b-tree
  2089  ** is in DESC order.
  2090  **
  2091  ** The key comparison functions actually return default_rc when they find
  2092  ** an equals comparison.  default_rc can be -1, 0, or +1.  If there are
  2093  ** multiple entries in the b-tree with the same key (when only looking
  2094  ** at the first pKeyInfo->nFields,) then default_rc can be set to -1 to
  2095  ** cause the search to find the last match, or +1 to cause the search to
  2096  ** find the first match.
  2097  **
  2098  ** The key comparison functions will set eqSeen to true if they ever
  2099  ** get and equal results when comparing this structure to a b-tree record.
  2100  ** When default_rc!=0, the search might end up on the record immediately
  2101  ** before the first match or immediately after the last match.  The
  2102  ** eqSeen field will indicate whether or not an exact match exists in the
  2103  ** b-tree.
  2104  */
  2105  struct UnpackedRecord {
  2106    KeyInfo *pKeyInfo;  /* Collation and sort-order information */
  2107    Mem *aMem;          /* Values */
  2108    u16 nField;         /* Number of entries in apMem[] */
  2109    i8 default_rc;      /* Comparison result if keys are equal */
  2110    u8 errCode;         /* Error detected by xRecordCompare (CORRUPT or NOMEM) */
  2111    i8 r1;              /* Value to return if (lhs < rhs) */
  2112    i8 r2;              /* Value to return if (lhs > rhs) */
  2113    u8 eqSeen;          /* True if an equality comparison has been seen */
  2114  };
  2115  
  2116  
  2117  /*
  2118  ** Each SQL index is represented in memory by an
  2119  ** instance of the following structure.
  2120  **
  2121  ** The columns of the table that are to be indexed are described
  2122  ** by the aiColumn[] field of this structure.  For example, suppose
  2123  ** we have the following table and index:
  2124  **
  2125  **     CREATE TABLE Ex1(c1 int, c2 int, c3 text);
  2126  **     CREATE INDEX Ex2 ON Ex1(c3,c1);
  2127  **
  2128  ** In the Table structure describing Ex1, nCol==3 because there are
  2129  ** three columns in the table.  In the Index structure describing
  2130  ** Ex2, nColumn==2 since 2 of the 3 columns of Ex1 are indexed.
  2131  ** The value of aiColumn is {2, 0}.  aiColumn[0]==2 because the
  2132  ** first column to be indexed (c3) has an index of 2 in Ex1.aCol[].
  2133  ** The second column to be indexed (c1) has an index of 0 in
  2134  ** Ex1.aCol[], hence Ex2.aiColumn[1]==0.
  2135  **
  2136  ** The Index.onError field determines whether or not the indexed columns
  2137  ** must be unique and what to do if they are not.  When Index.onError=OE_None,
  2138  ** it means this is not a unique index.  Otherwise it is a unique index
  2139  ** and the value of Index.onError indicate the which conflict resolution
  2140  ** algorithm to employ whenever an attempt is made to insert a non-unique
  2141  ** element.
  2142  **
  2143  ** While parsing a CREATE TABLE or CREATE INDEX statement in order to
  2144  ** generate VDBE code (as opposed to parsing one read from an sqlite_master
  2145  ** table as part of parsing an existing database schema), transient instances
  2146  ** of this structure may be created. In this case the Index.tnum variable is
  2147  ** used to store the address of a VDBE instruction, not a database page
  2148  ** number (it cannot - the database page is not allocated until the VDBE
  2149  ** program is executed). See convertToWithoutRowidTable() for details.
  2150  */
  2151  struct Index {
  2152    char *zName;             /* Name of this index */
  2153    i16 *aiColumn;           /* Which columns are used by this index.  1st is 0 */
  2154    LogEst *aiRowLogEst;     /* From ANALYZE: Est. rows selected by each column */
  2155    Table *pTable;           /* The SQL table being indexed */
  2156    char *zColAff;           /* String defining the affinity of each column */
  2157    Index *pNext;            /* The next index associated with the same table */
  2158    Schema *pSchema;         /* Schema containing this index */
  2159    u8 *aSortOrder;          /* for each column: True==DESC, False==ASC */
  2160    const char **azColl;     /* Array of collation sequence names for index */
  2161    Expr *pPartIdxWhere;     /* WHERE clause for partial indices */
  2162    ExprList *aColExpr;      /* Column expressions */
  2163    int tnum;                /* DB Page containing root of this index */
  2164    LogEst szIdxRow;         /* Estimated average row size in bytes */
  2165    u16 nKeyCol;             /* Number of columns forming the key */
  2166    u16 nColumn;             /* Number of columns stored in the index */
  2167    u8 onError;              /* OE_Abort, OE_Ignore, OE_Replace, or OE_None */
  2168    unsigned idxType:2;      /* 1==UNIQUE, 2==PRIMARY KEY, 0==CREATE INDEX */
  2169    unsigned bUnordered:1;   /* Use this index for == or IN queries only */
  2170    unsigned uniqNotNull:1;  /* True if UNIQUE and NOT NULL for all columns */
  2171    unsigned isResized:1;    /* True if resizeIndexObject() has been called */
  2172    unsigned isCovering:1;   /* True if this is a covering index */
  2173    unsigned noSkipScan:1;   /* Do not try to use skip-scan if true */
  2174    unsigned hasStat1:1;     /* aiRowLogEst values come from sqlite_stat1 */
  2175  #ifdef SQLITE_ENABLE_STAT3_OR_STAT4
  2176    int nSample;             /* Number of elements in aSample[] */
  2177    int nSampleCol;          /* Size of IndexSample.anEq[] and so on */
  2178    tRowcnt *aAvgEq;         /* Average nEq values for keys not in aSample */
  2179    IndexSample *aSample;    /* Samples of the left-most key */
  2180    tRowcnt *aiRowEst;       /* Non-logarithmic stat1 data for this index */
  2181    tRowcnt nRowEst0;        /* Non-logarithmic number of rows in the index */
  2182  #endif
  2183  };
  2184  
  2185  /*
  2186  ** Allowed values for Index.idxType
  2187  */
  2188  #define SQLITE_IDXTYPE_APPDEF      0   /* Created using CREATE INDEX */
  2189  #define SQLITE_IDXTYPE_UNIQUE      1   /* Implements a UNIQUE constraint */
  2190  #define SQLITE_IDXTYPE_PRIMARYKEY  2   /* Is the PRIMARY KEY for the table */
  2191  
  2192  /* Return true if index X is a PRIMARY KEY index */
  2193  #define IsPrimaryKeyIndex(X)  ((X)->idxType==SQLITE_IDXTYPE_PRIMARYKEY)
  2194  
  2195  /* Return true if index X is a UNIQUE index */
  2196  #define IsUniqueIndex(X)      ((X)->onError!=OE_None)
  2197  
  2198  /* The Index.aiColumn[] values are normally positive integer.  But
  2199  ** there are some negative values that have special meaning:
  2200  */
  2201  #define XN_ROWID     (-1)     /* Indexed column is the rowid */
  2202  #define XN_EXPR      (-2)     /* Indexed column is an expression */
  2203  
  2204  /*
  2205  ** Each sample stored in the sqlite_stat3 table is represented in memory
  2206  ** using a structure of this type.  See documentation at the top of the
  2207  ** analyze.c source file for additional information.
  2208  */
  2209  struct IndexSample {
  2210    void *p;          /* Pointer to sampled record */
  2211    int n;            /* Size of record in bytes */
  2212    tRowcnt *anEq;    /* Est. number of rows where the key equals this sample */
  2213    tRowcnt *anLt;    /* Est. number of rows where key is less than this sample */
  2214    tRowcnt *anDLt;   /* Est. number of distinct keys less than this sample */
  2215  };
  2216  
  2217  /*
  2218  ** Each token coming out of the lexer is an instance of
  2219  ** this structure.  Tokens are also used as part of an expression.
  2220  **
  2221  ** Note if Token.z==0 then Token.dyn and Token.n are undefined and
  2222  ** may contain random values.  Do not make any assumptions about Token.dyn
  2223  ** and Token.n when Token.z==0.
  2224  */
  2225  struct Token {
  2226    const char *z;     /* Text of the token.  Not NULL-terminated! */
  2227    unsigned int n;    /* Number of characters in this token */
  2228  };
  2229  
  2230  /*
  2231  ** An instance of this structure contains information needed to generate
  2232  ** code for a SELECT that contains aggregate functions.
  2233  **
  2234  ** If Expr.op==TK_AGG_COLUMN or TK_AGG_FUNCTION then Expr.pAggInfo is a
  2235  ** pointer to this structure.  The Expr.iColumn field is the index in
  2236  ** AggInfo.aCol[] or AggInfo.aFunc[] of information needed to generate
  2237  ** code for that node.
  2238  **
  2239  ** AggInfo.pGroupBy and AggInfo.aFunc.pExpr point to fields within the
  2240  ** original Select structure that describes the SELECT statement.  These
  2241  ** fields do not need to be freed when deallocating the AggInfo structure.
  2242  */
  2243  struct AggInfo {
  2244    u8 directMode;          /* Direct rendering mode means take data directly
  2245                            ** from source tables rather than from accumulators */
  2246    u8 useSortingIdx;       /* In direct mode, reference the sorting index rather
  2247                            ** than the source table */
  2248    int sortingIdx;         /* Cursor number of the sorting index */
  2249    int sortingIdxPTab;     /* Cursor number of pseudo-table */
  2250    int nSortingColumn;     /* Number of columns in the sorting index */
  2251    int mnReg, mxReg;       /* Range of registers allocated for aCol and aFunc */
  2252    ExprList *pGroupBy;     /* The group by clause */
  2253    struct AggInfo_col {    /* For each column used in source tables */
  2254      Table *pTab;             /* Source table */
  2255      int iTable;              /* Cursor number of the source table */
  2256      int iColumn;             /* Column number within the source table */
  2257      int iSorterColumn;       /* Column number in the sorting index */
  2258      int iMem;                /* Memory location that acts as accumulator */
  2259      Expr *pExpr;             /* The original expression */
  2260    } *aCol;
  2261    int nColumn;            /* Number of used entries in aCol[] */
  2262    int nAccumulator;       /* Number of columns that show through to the output.
  2263                            ** Additional columns are used only as parameters to
  2264                            ** aggregate functions */
  2265    struct AggInfo_func {   /* For each aggregate function */
  2266      Expr *pExpr;             /* Expression encoding the function */
  2267      FuncDef *pFunc;          /* The aggregate function implementation */
  2268      int iMem;                /* Memory location that acts as accumulator */
  2269      int iDistinct;           /* Ephemeral table used to enforce DISTINCT */
  2270    } *aFunc;
  2271    int nFunc;              /* Number of entries in aFunc[] */
  2272  };
  2273  
  2274  /*
  2275  ** The datatype ynVar is a signed integer, either 16-bit or 32-bit.
  2276  ** Usually it is 16-bits.  But if SQLITE_MAX_VARIABLE_NUMBER is greater
  2277  ** than 32767 we have to make it 32-bit.  16-bit is preferred because
  2278  ** it uses less memory in the Expr object, which is a big memory user
  2279  ** in systems with lots of prepared statements.  And few applications
  2280  ** need more than about 10 or 20 variables.  But some extreme users want
  2281  ** to have prepared statements with over 32767 variables, and for them
  2282  ** the option is available (at compile-time).
  2283  */
  2284  #if SQLITE_MAX_VARIABLE_NUMBER<=32767
  2285  typedef i16 ynVar;
  2286  #else
  2287  typedef int ynVar;
  2288  #endif
  2289  
  2290  /*
  2291  ** Each node of an expression in the parse tree is an instance
  2292  ** of this structure.
  2293  **
  2294  ** Expr.op is the opcode. The integer parser token codes are reused
  2295  ** as opcodes here. For example, the parser defines TK_GE to be an integer
  2296  ** code representing the ">=" operator. This same integer code is reused
  2297  ** to represent the greater-than-or-equal-to operator in the expression
  2298  ** tree.
  2299  **
  2300  ** If the expression is an SQL literal (TK_INTEGER, TK_FLOAT, TK_BLOB,
  2301  ** or TK_STRING), then Expr.token contains the text of the SQL literal. If
  2302  ** the expression is a variable (TK_VARIABLE), then Expr.token contains the
  2303  ** variable name. Finally, if the expression is an SQL function (TK_FUNCTION),
  2304  ** then Expr.token contains the name of the function.
  2305  **
  2306  ** Expr.pRight and Expr.pLeft are the left and right subexpressions of a
  2307  ** binary operator. Either or both may be NULL.
  2308  **
  2309  ** Expr.x.pList is a list of arguments if the expression is an SQL function,
  2310  ** a CASE expression or an IN expression of the form "<lhs> IN (<y>, <z>...)".
  2311  ** Expr.x.pSelect is used if the expression is a sub-select or an expression of
  2312  ** the form "<lhs> IN (SELECT ...)". If the EP_xIsSelect bit is set in the
  2313  ** Expr.flags mask, then Expr.x.pSelect is valid. Otherwise, Expr.x.pList is
  2314  ** valid.
  2315  **
  2316  ** An expression of the form ID or ID.ID refers to a column in a table.
  2317  ** For such expressions, Expr.op is set to TK_COLUMN and Expr.iTable is
  2318  ** the integer cursor number of a VDBE cursor pointing to that table and
  2319  ** Expr.iColumn is the column number for the specific column.  If the
  2320  ** expression is used as a result in an aggregate SELECT, then the
  2321  ** value is also stored in the Expr.iAgg column in the aggregate so that
  2322  ** it can be accessed after all aggregates are computed.
  2323  **
  2324  ** If the expression is an unbound variable marker (a question mark
  2325  ** character '?' in the original SQL) then the Expr.iTable holds the index
  2326  ** number for that variable.
  2327  **
  2328  ** If the expression is a subquery then Expr.iColumn holds an integer
  2329  ** register number containing the result of the subquery.  If the
  2330  ** subquery gives a constant result, then iTable is -1.  If the subquery
  2331  ** gives a different answer at different times during statement processing
  2332  ** then iTable is the address of a subroutine that computes the subquery.
  2333  **
  2334  ** If the Expr is of type OP_Column, and the table it is selecting from
  2335  ** is a disk table or the "old.*" pseudo-table, then pTab points to the
  2336  ** corresponding table definition.
  2337  **
  2338  ** ALLOCATION NOTES:
  2339  **
  2340  ** Expr objects can use a lot of memory space in database schema.  To
  2341  ** help reduce memory requirements, sometimes an Expr object will be
  2342  ** truncated.  And to reduce the number of memory allocations, sometimes
  2343  ** two or more Expr objects will be stored in a single memory allocation,
  2344  ** together with Expr.zToken strings.
  2345  **
  2346  ** If the EP_Reduced and EP_TokenOnly flags are set when
  2347  ** an Expr object is truncated.  When EP_Reduced is set, then all
  2348  ** the child Expr objects in the Expr.pLeft and Expr.pRight subtrees
  2349  ** are contained within the same memory allocation.  Note, however, that
  2350  ** the subtrees in Expr.x.pList or Expr.x.pSelect are always separately
  2351  ** allocated, regardless of whether or not EP_Reduced is set.
  2352  */
  2353  struct Expr {
  2354    u8 op;                 /* Operation performed by this node */
  2355    char affinity;         /* The affinity of the column or 0 if not a column */
  2356    u32 flags;             /* Various flags.  EP_* See below */
  2357    union {
  2358      char *zToken;          /* Token value. Zero terminated and dequoted */
  2359      int iValue;            /* Non-negative integer value if EP_IntValue */
  2360    } u;
  2361  
  2362    /* If the EP_TokenOnly flag is set in the Expr.flags mask, then no
  2363    ** space is allocated for the fields below this point. An attempt to
  2364    ** access them will result in a segfault or malfunction.
  2365    *********************************************************************/
  2366  
  2367    Expr *pLeft;           /* Left subnode */
  2368    Expr *pRight;          /* Right subnode */
  2369    union {
  2370      ExprList *pList;     /* op = IN, EXISTS, SELECT, CASE, FUNCTION, BETWEEN */
  2371      Select *pSelect;     /* EP_xIsSelect and op = IN, EXISTS, SELECT */
  2372    } x;
  2373  
  2374    /* If the EP_Reduced flag is set in the Expr.flags mask, then no
  2375    ** space is allocated for the fields below this point. An attempt to
  2376    ** access them will result in a segfault or malfunction.
  2377    *********************************************************************/
  2378  
  2379  #if SQLITE_MAX_EXPR_DEPTH>0
  2380    int nHeight;           /* Height of the tree headed by this node */
  2381  #endif
  2382    int iTable;            /* TK_COLUMN: cursor number of table holding column
  2383                           ** TK_REGISTER: register number
  2384                           ** TK_TRIGGER: 1 -> new, 0 -> old
  2385                           ** EP_Unlikely:  134217728 times likelihood
  2386                           ** TK_SELECT: 1st register of result vector */
  2387    ynVar iColumn;         /* TK_COLUMN: column index.  -1 for rowid.
  2388                           ** TK_VARIABLE: variable number (always >= 1).
  2389                           ** TK_SELECT_COLUMN: column of the result vector */
  2390    i16 iAgg;              /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
  2391    i16 iRightJoinTable;   /* If EP_FromJoin, the right table of the join */
  2392    u8 op2;                /* TK_REGISTER: original value of Expr.op
  2393                           ** TK_COLUMN: the value of p5 for OP_Column
  2394                           ** TK_AGG_FUNCTION: nesting depth */
  2395    AggInfo *pAggInfo;     /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
  2396    Table *pTab;           /* Table for TK_COLUMN expressions.  Can be NULL
  2397                           ** for a column of an index on an expression */
  2398  };
  2399  
  2400  /*
  2401  ** The following are the meanings of bits in the Expr.flags field.
  2402  */
  2403  #define EP_FromJoin  0x000001 /* Originates in ON/USING clause of outer join */
  2404  #define EP_Agg       0x000002 /* Contains one or more aggregate functions */
  2405                    /* 0x000004 // available for use */
  2406                    /* 0x000008 // available for use */
  2407  #define EP_Distinct  0x000010 /* Aggregate function with DISTINCT keyword */
  2408  #define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */
  2409  #define EP_DblQuoted 0x000040 /* token.z was originally in "..." */
  2410  #define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, GLOB, etc */
  2411  #define EP_Collate   0x000100 /* Tree contains a TK_COLLATE operator */
  2412  #define EP_Generic   0x000200 /* Ignore COLLATE or affinity on this tree */
  2413  #define EP_IntValue  0x000400 /* Integer value contained in u.iValue */
  2414  #define EP_xIsSelect 0x000800 /* x.pSelect is valid (otherwise x.pList is) */
  2415  #define EP_Skip      0x001000 /* COLLATE, AS, or UNLIKELY */
  2416  #define EP_Reduced   0x002000 /* Expr struct EXPR_REDUCEDSIZE bytes only */
  2417  #define EP_TokenOnly 0x004000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */
  2418  #define EP_Static    0x008000 /* Held in memory not obtained from malloc() */
  2419  #define EP_MemToken  0x010000 /* Need to sqlite3DbFree() Expr.zToken */
  2420  #define EP_NoReduce  0x020000 /* Cannot EXPRDUP_REDUCE this Expr */
  2421  #define EP_Unlikely  0x040000 /* unlikely() or likelihood() function */
  2422  #define EP_ConstFunc 0x080000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */
  2423  #define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */
  2424  #define EP_Subquery  0x200000 /* Tree contains a TK_SELECT operator */
  2425  #define EP_Alias     0x400000 /* Is an alias for a result set column */
  2426  #define EP_Leaf      0x800000 /* Expr.pLeft, .pRight, .u.pSelect all NULL */
  2427  
  2428  /*
  2429  ** Combinations of two or more EP_* flags
  2430  */
  2431  #define EP_Propagate (EP_Collate|EP_Subquery) /* Propagate these bits up tree */
  2432  
  2433  /*
  2434  ** These macros can be used to test, set, or clear bits in the
  2435  ** Expr.flags field.
  2436  */
  2437  #define ExprHasProperty(E,P)     (((E)->flags&(P))!=0)
  2438  #define ExprHasAllProperty(E,P)  (((E)->flags&(P))==(P))
  2439  #define ExprSetProperty(E,P)     (E)->flags|=(P)
  2440  #define ExprClearProperty(E,P)   (E)->flags&=~(P)
  2441  
  2442  /* The ExprSetVVAProperty() macro is used for Verification, Validation,
  2443  ** and Accreditation only.  It works like ExprSetProperty() during VVA
  2444  ** processes but is a no-op for delivery.
  2445  */
  2446  #ifdef SQLITE_DEBUG
  2447  # define ExprSetVVAProperty(E,P)  (E)->flags|=(P)
  2448  #else
  2449  # define ExprSetVVAProperty(E,P)
  2450  #endif
  2451  
  2452  /*
  2453  ** Macros to determine the number of bytes required by a normal Expr
  2454  ** struct, an Expr struct with the EP_Reduced flag set in Expr.flags
  2455  ** and an Expr struct with the EP_TokenOnly flag set.
  2456  */
  2457  #define EXPR_FULLSIZE           sizeof(Expr)           /* Full size */
  2458  #define EXPR_REDUCEDSIZE        offsetof(Expr,iTable)  /* Common features */
  2459  #define EXPR_TOKENONLYSIZE      offsetof(Expr,pLeft)   /* Fewer features */
  2460  
  2461  /*
  2462  ** Flags passed to the sqlite3ExprDup() function. See the header comment
  2463  ** above sqlite3ExprDup() for details.
  2464  */
  2465  #define EXPRDUP_REDUCE         0x0001  /* Used reduced-size Expr nodes */
  2466  
  2467  /*
  2468  ** A list of expressions.  Each expression may optionally have a
  2469  ** name.  An expr/name combination can be used in several ways, such
  2470  ** as the list of "expr AS ID" fields following a "SELECT" or in the
  2471  ** list of "ID = expr" items in an UPDATE.  A list of expressions can
  2472  ** also be used as the argument to a function, in which case the a.zName
  2473  ** field is not used.
  2474  **
  2475  ** By default the Expr.zSpan field holds a human-readable description of
  2476  ** the expression that is used in the generation of error messages and
  2477  ** column labels.  In this case, Expr.zSpan is typically the text of a
  2478  ** column expression as it exists in a SELECT statement.  However, if
  2479  ** the bSpanIsTab flag is set, then zSpan is overloaded to mean the name
  2480  ** of the result column in the form: DATABASE.TABLE.COLUMN.  This later
  2481  ** form is used for name resolution with nested FROM clauses.
  2482  */
  2483  struct ExprList {
  2484    int nExpr;             /* Number of expressions on the list */
  2485    struct ExprList_item { /* For each expression in the list */
  2486      Expr *pExpr;            /* The parse tree for this expression */
  2487      char *zName;            /* Token associated with this expression */
  2488      char *zSpan;            /* Original text of the expression */
  2489      u8 sortOrder;           /* 1 for DESC or 0 for ASC */
  2490      unsigned done :1;       /* A flag to indicate when processing is finished */
  2491      unsigned bSpanIsTab :1; /* zSpan holds DB.TABLE.COLUMN */
  2492      unsigned reusable :1;   /* Constant expression is reusable */
  2493      union {
  2494        struct {
  2495          u16 iOrderByCol;      /* For ORDER BY, column number in result set */
  2496          u16 iAlias;           /* Index into Parse.aAlias[] for zName */
  2497        } x;
  2498        int iConstExprReg;      /* Register in which Expr value is cached */
  2499      } u;
  2500    } a[1];                  /* One slot for each expression in the list */
  2501  };
  2502  
  2503  /*
  2504  ** An instance of this structure is used by the parser to record both
  2505  ** the parse tree for an expression and the span of input text for an
  2506  ** expression.
  2507  */
  2508  struct ExprSpan {
  2509    Expr *pExpr;          /* The expression parse tree */
  2510    const char *zStart;   /* First character of input text */
  2511    const char *zEnd;     /* One character past the end of input text */
  2512  };
  2513  
  2514  /*
  2515  ** An instance of this structure can hold a simple list of identifiers,
  2516  ** such as the list "a,b,c" in the following statements:
  2517  **
  2518  **      INSERT INTO t(a,b,c) VALUES ...;
  2519  **      CREATE INDEX idx ON t(a,b,c);
  2520  **      CREATE TRIGGER trig BEFORE UPDATE ON t(a,b,c) ...;
  2521  **
  2522  ** The IdList.a.idx field is used when the IdList represents the list of
  2523  ** column names after a table name in an INSERT statement.  In the statement
  2524  **
  2525  **     INSERT INTO t(a,b,c) ...
  2526  **
  2527  ** If "a" is the k-th column of table "t", then IdList.a[0].idx==k.
  2528  */
  2529  struct IdList {
  2530    struct IdList_item {
  2531      char *zName;      /* Name of the identifier */
  2532      int idx;          /* Index in some Table.aCol[] of a column named zName */
  2533    } *a;
  2534    int nId;         /* Number of identifiers on the list */
  2535  };
  2536  
  2537  /*
  2538  ** The bitmask datatype defined below is used for various optimizations.
  2539  **
  2540  ** Changing this from a 64-bit to a 32-bit type limits the number of
  2541  ** tables in a join to 32 instead of 64.  But it also reduces the size
  2542  ** of the library by 738 bytes on ix86.
  2543  */
  2544  #ifdef SQLITE_BITMASK_TYPE
  2545    typedef SQLITE_BITMASK_TYPE Bitmask;
  2546  #else
  2547    typedef u64 Bitmask;
  2548  #endif
  2549  
  2550  /*
  2551  ** The number of bits in a Bitmask.  "BMS" means "BitMask Size".
  2552  */
  2553  #define BMS  ((int)(sizeof(Bitmask)*8))
  2554  
  2555  /*
  2556  ** A bit in a Bitmask
  2557  */
  2558  #define MASKBIT(n)   (((Bitmask)1)<<(n))
  2559  #define MASKBIT32(n) (((unsigned int)1)<<(n))
  2560  #define ALLBITS      ((Bitmask)-1)
  2561  
  2562  /*
  2563  ** The following structure describes the FROM clause of a SELECT statement.
  2564  ** Each table or subquery in the FROM clause is a separate element of
  2565  ** the SrcList.a[] array.
  2566  **
  2567  ** With the addition of multiple database support, the following structure
  2568  ** can also be used to describe a particular table such as the table that
  2569  ** is modified by an INSERT, DELETE, or UPDATE statement.  In standard SQL,
  2570  ** such a table must be a simple name: ID.  But in SQLite, the table can
  2571  ** now be identified by a database name, a dot, then the table name: ID.ID.
  2572  **
  2573  ** The jointype starts out showing the join type between the current table
  2574  ** and the next table on the list.  The parser builds the list this way.
  2575  ** But sqlite3SrcListShiftJoinType() later shifts the jointypes so that each
  2576  ** jointype expresses the join between the table and the previous table.
  2577  **
  2578  ** In the colUsed field, the high-order bit (bit 63) is set if the table
  2579  ** contains more than 63 columns and the 64-th or later column is used.
  2580  */
  2581  struct SrcList {
  2582    int nSrc;        /* Number of tables or subqueries in the FROM clause */
  2583    u32 nAlloc;      /* Number of entries allocated in a[] below */
  2584    struct SrcList_item {
  2585      Schema *pSchema;  /* Schema to which this item is fixed */
  2586      char *zDatabase;  /* Name of database holding this table */
  2587      char *zName;      /* Name of the table */
  2588      char *zAlias;     /* The "B" part of a "A AS B" phrase.  zName is the "A" */
  2589      Table *pTab;      /* An SQL table corresponding to zName */
  2590      Select *pSelect;  /* A SELECT statement used in place of a table name */
  2591      int addrFillSub;  /* Address of subroutine to manifest a subquery */
  2592      int regReturn;    /* Register holding return address of addrFillSub */
  2593      int regResult;    /* Registers holding results of a co-routine */
  2594      struct {
  2595        u8 jointype;      /* Type of join between this table and the previous */
  2596        unsigned notIndexed :1;    /* True if there is a NOT INDEXED clause */
  2597        unsigned isIndexedBy :1;   /* True if there is an INDEXED BY clause */
  2598        unsigned isTabFunc :1;     /* True if table-valued-function syntax */
  2599        unsigned isCorrelated :1;  /* True if sub-query is correlated */
  2600        unsigned viaCoroutine :1;  /* Implemented as a co-routine */
  2601        unsigned isRecursive :1;   /* True for recursive reference in WITH */
  2602      } fg;
  2603  #ifndef SQLITE_OMIT_EXPLAIN
  2604      u8 iSelectId;     /* If pSelect!=0, the id of the sub-select in EQP */
  2605  #endif
  2606      int iCursor;      /* The VDBE cursor number used to access this table */
  2607      Expr *pOn;        /* The ON clause of a join */
  2608      IdList *pUsing;   /* The USING clause of a join */
  2609      Bitmask colUsed;  /* Bit N (1<<N) set if column N of pTab is used */
  2610      union {
  2611        char *zIndexedBy;    /* Identifier from "INDEXED BY <zIndex>" clause */
  2612        ExprList *pFuncArg;  /* Arguments to table-valued-function */
  2613      } u1;
  2614      Index *pIBIndex;  /* Index structure corresponding to u1.zIndexedBy */
  2615    } a[1];             /* One entry for each identifier on the list */
  2616  };
  2617  
  2618  /*
  2619  ** Permitted values of the SrcList.a.jointype field
  2620  */
  2621  #define JT_INNER     0x0001    /* Any kind of inner or cross join */
  2622  #define JT_CROSS     0x0002    /* Explicit use of the CROSS keyword */
  2623  #define JT_NATURAL   0x0004    /* True for a "natural" join */
  2624  #define JT_LEFT      0x0008    /* Left outer join */
  2625  #define JT_RIGHT     0x0010    /* Right outer join */
  2626  #define JT_OUTER     0x0020    /* The "OUTER" keyword is present */
  2627  #define JT_ERROR     0x0040    /* unknown or unsupported join type */
  2628  
  2629  
  2630  /*
  2631  ** Flags appropriate for the wctrlFlags parameter of sqlite3WhereBegin()
  2632  ** and the WhereInfo.wctrlFlags member.
  2633  **
  2634  ** Value constraints (enforced via assert()):
  2635  **     WHERE_USE_LIMIT  == SF_FixedLimit
  2636  */
  2637  #define WHERE_ORDERBY_NORMAL   0x0000 /* No-op */
  2638  #define WHERE_ORDERBY_MIN      0x0001 /* ORDER BY processing for min() func */
  2639  #define WHERE_ORDERBY_MAX      0x0002 /* ORDER BY processing for max() func */
  2640  #define WHERE_ONEPASS_DESIRED  0x0004 /* Want to do one-pass UPDATE/DELETE */
  2641  #define WHERE_ONEPASS_MULTIROW 0x0008 /* ONEPASS is ok with multiple rows */
  2642  #define WHERE_DUPLICATES_OK    0x0010 /* Ok to return a row more than once */
  2643  #define WHERE_OR_SUBCLAUSE     0x0020 /* Processing a sub-WHERE as part of
  2644                                        ** the OR optimization  */
  2645  #define WHERE_GROUPBY          0x0040 /* pOrderBy is really a GROUP BY */
  2646  #define WHERE_DISTINCTBY       0x0080 /* pOrderby is really a DISTINCT clause */
  2647  #define WHERE_WANT_DISTINCT    0x0100 /* All output needs to be distinct */
  2648  #define WHERE_SORTBYGROUP      0x0200 /* Support sqlite3WhereIsSorted() */
  2649  #define WHERE_SEEK_TABLE       0x0400 /* Do not defer seeks on main table */
  2650  #define WHERE_ORDERBY_LIMIT    0x0800 /* ORDERBY+LIMIT on the inner loop */
  2651  #define WHERE_SEEK_UNIQ_TABLE  0x1000 /* Do not defer seeks if unique */
  2652                          /*     0x2000    not currently used */
  2653  #define WHERE_USE_LIMIT        0x4000 /* Use the LIMIT in cost estimates */
  2654                          /*     0x8000    not currently used */
  2655  
  2656  /* Allowed return values from sqlite3WhereIsDistinct()
  2657  */
  2658  #define WHERE_DISTINCT_NOOP      0  /* DISTINCT keyword not used */
  2659  #define WHERE_DISTINCT_UNIQUE    1  /* No duplicates */
  2660  #define WHERE_DISTINCT_ORDERED   2  /* All duplicates are adjacent */
  2661  #define WHERE_DISTINCT_UNORDERED 3  /* Duplicates are scattered */
  2662  
  2663  /*
  2664  ** A NameContext defines a context in which to resolve table and column
  2665  ** names.  The context consists of a list of tables (the pSrcList) field and
  2666  ** a list of named expression (pEList).  The named expression list may
  2667  ** be NULL.  The pSrc corresponds to the FROM clause of a SELECT or
  2668  ** to the table being operated on by INSERT, UPDATE, or DELETE.  The
  2669  ** pEList corresponds to the result set of a SELECT and is NULL for
  2670  ** other statements.
  2671  **
  2672  ** NameContexts can be nested.  When resolving names, the inner-most
  2673  ** context is searched first.  If no match is found, the next outer
  2674  ** context is checked.  If there is still no match, the next context
  2675  ** is checked.  This process continues until either a match is found
  2676  ** or all contexts are check.  When a match is found, the nRef member of
  2677  ** the context containing the match is incremented.
  2678  **
  2679  ** Each subquery gets a new NameContext.  The pNext field points to the
  2680  ** NameContext in the parent query.  Thus the process of scanning the
  2681  ** NameContext list corresponds to searching through successively outer
  2682  ** subqueries looking for a match.
  2683  */
  2684  struct NameContext {
  2685    Parse *pParse;       /* The parser */
  2686    SrcList *pSrcList;   /* One or more tables used to resolve names */
  2687    ExprList *pEList;    /* Optional list of result-set columns */
  2688    AggInfo *pAggInfo;   /* Information about aggregates at this level */
  2689    NameContext *pNext;  /* Next outer name context.  NULL for outermost */
  2690    int nRef;            /* Number of names resolved by this context */
  2691    int nErr;            /* Number of errors encountered while resolving names */
  2692    u16 ncFlags;         /* Zero or more NC_* flags defined below */
  2693  };
  2694  
  2695  /*
  2696  ** Allowed values for the NameContext, ncFlags field.
  2697  **
  2698  ** Value constraints (all checked via assert()):
  2699  **    NC_HasAgg    == SF_HasAgg
  2700  **    NC_MinMaxAgg == SF_MinMaxAgg == SQLITE_FUNC_MINMAX
  2701  **
  2702  */
  2703  #define NC_AllowAgg  0x0001  /* Aggregate functions are allowed here */
  2704  #define NC_PartIdx   0x0002  /* True if resolving a partial index WHERE */
  2705  #define NC_IsCheck   0x0004  /* True if resolving names in a CHECK constraint */
  2706  #define NC_InAggFunc 0x0008  /* True if analyzing arguments to an agg func */
  2707  #define NC_HasAgg    0x0010  /* One or more aggregate functions seen */
  2708  #define NC_IdxExpr   0x0020  /* True if resolving columns of CREATE INDEX */
  2709  #define NC_VarSelect 0x0040  /* A correlated subquery has been seen */
  2710  #define NC_MinMaxAgg 0x1000  /* min/max aggregates seen.  See note above */
  2711  
  2712  /*
  2713  ** An instance of the following structure contains all information
  2714  ** needed to generate code for a single SELECT statement.
  2715  **
  2716  ** nLimit is set to -1 if there is no LIMIT clause.  nOffset is set to 0.
  2717  ** If there is a LIMIT clause, the parser sets nLimit to the value of the
  2718  ** limit and nOffset to the value of the offset (or 0 if there is not
  2719  ** offset).  But later on, nLimit and nOffset become the memory locations
  2720  ** in the VDBE that record the limit and offset counters.
  2721  **
  2722  ** addrOpenEphm[] entries contain the address of OP_OpenEphemeral opcodes.
  2723  ** These addresses must be stored so that we can go back and fill in
  2724  ** the P4_KEYINFO and P2 parameters later.  Neither the KeyInfo nor
  2725  ** the number of columns in P2 can be computed at the same time
  2726  ** as the OP_OpenEphm instruction is coded because not
  2727  ** enough information about the compound query is known at that point.
  2728  ** The KeyInfo for addrOpenTran[0] and [1] contains collating sequences
  2729  ** for the result set.  The KeyInfo for addrOpenEphm[2] contains collating
  2730  ** sequences for the ORDER BY clause.
  2731  */
  2732  struct Select {
  2733    ExprList *pEList;      /* The fields of the result */
  2734    u8 op;                 /* One of: TK_UNION TK_ALL TK_INTERSECT TK_EXCEPT */
  2735    LogEst nSelectRow;     /* Estimated number of result rows */
  2736    u32 selFlags;          /* Various SF_* values */
  2737    int iLimit, iOffset;   /* Memory registers holding LIMIT & OFFSET counters */
  2738  #if SELECTTRACE_ENABLED
  2739    char zSelName[12];     /* Symbolic name of this SELECT use for debugging */
  2740  #endif
  2741    int addrOpenEphm[2];   /* OP_OpenEphem opcodes related to this select */
  2742    SrcList *pSrc;         /* The FROM clause */
  2743    Expr *pWhere;          /* The WHERE clause */
  2744    ExprList *pGroupBy;    /* The GROUP BY clause */
  2745    Expr *pHaving;         /* The HAVING clause */
  2746    ExprList *pOrderBy;    /* The ORDER BY clause */
  2747    Select *pPrior;        /* Prior select in a compound select statement */
  2748    Select *pNext;         /* Next select to the left in a compound */
  2749    Expr *pLimit;          /* LIMIT expression. NULL means not used. */
  2750    Expr *pOffset;         /* OFFSET expression. NULL means not used. */
  2751    With *pWith;           /* WITH clause attached to this select. Or NULL. */
  2752  };
  2753  
  2754  /*
  2755  ** Allowed values for Select.selFlags.  The "SF" prefix stands for
  2756  ** "Select Flag".
  2757  **
  2758  ** Value constraints (all checked via assert())
  2759  **     SF_HasAgg     == NC_HasAgg
  2760  **     SF_MinMaxAgg  == NC_MinMaxAgg     == SQLITE_FUNC_MINMAX
  2761  **     SF_FixedLimit == WHERE_USE_LIMIT
  2762  */
  2763  #define SF_Distinct       0x00001  /* Output should be DISTINCT */
  2764  #define SF_All            0x00002  /* Includes the ALL keyword */
  2765  #define SF_Resolved       0x00004  /* Identifiers have been resolved */
  2766  #define SF_Aggregate      0x00008  /* Contains agg functions or a GROUP BY */
  2767  #define SF_HasAgg         0x00010  /* Contains aggregate functions */
  2768  #define SF_UsesEphemeral  0x00020  /* Uses the OpenEphemeral opcode */
  2769  #define SF_Expanded       0x00040  /* sqlite3SelectExpand() called on this */
  2770  #define SF_HasTypeInfo    0x00080  /* FROM subqueries have Table metadata */
  2771  #define SF_Compound       0x00100  /* Part of a compound query */
  2772  #define SF_Values         0x00200  /* Synthesized from VALUES clause */
  2773  #define SF_MultiValue     0x00400  /* Single VALUES term with multiple rows */
  2774  #define SF_NestedFrom     0x00800  /* Part of a parenthesized FROM clause */
  2775  #define SF_MinMaxAgg      0x01000  /* Aggregate containing min() or max() */
  2776  #define SF_Recursive      0x02000  /* The recursive part of a recursive CTE */
  2777  #define SF_FixedLimit     0x04000  /* nSelectRow set by a constant LIMIT */
  2778  #define SF_MaybeConvert   0x08000  /* Need convertCompoundSelectToSubquery() */
  2779  #define SF_Converted      0x10000  /* By convertCompoundSelectToSubquery() */
  2780  #define SF_IncludeHidden  0x20000  /* Include hidden columns in output */
  2781  
  2782  
  2783  /*
  2784  ** The results of a SELECT can be distributed in several ways, as defined
  2785  ** by one of the following macros.  The "SRT" prefix means "SELECT Result
  2786  ** Type".
  2787  **
  2788  **     SRT_Union       Store results as a key in a temporary index
  2789  **                     identified by pDest->iSDParm.
  2790  **
  2791  **     SRT_Except      Remove results from the temporary index pDest->iSDParm.
  2792  **
  2793  **     SRT_Exists      Store a 1 in memory cell pDest->iSDParm if the result
  2794  **                     set is not empty.
  2795  **
  2796  **     SRT_Discard     Throw the results away.  This is used by SELECT
  2797  **                     statements within triggers whose only purpose is
  2798  **                     the side-effects of functions.
  2799  **
  2800  ** All of the above are free to ignore their ORDER BY clause. Those that
  2801  ** follow must honor the ORDER BY clause.
  2802  **
  2803  **     SRT_Output      Generate a row of output (using the OP_ResultRow
  2804  **                     opcode) for each row in the result set.
  2805  **
  2806  **     SRT_Mem         Only valid if the result is a single column.
  2807  **                     Store the first column of the first result row
  2808  **                     in register pDest->iSDParm then abandon the rest
  2809  **                     of the query.  This destination implies "LIMIT 1".
  2810  **
  2811  **     SRT_Set         The result must be a single column.  Store each
  2812  **                     row of result as the key in table pDest->iSDParm.
  2813  **                     Apply the affinity pDest->affSdst before storing
  2814  **                     results.  Used to implement "IN (SELECT ...)".
  2815  **
  2816  **     SRT_EphemTab    Create an temporary table pDest->iSDParm and store
  2817  **                     the result there. The cursor is left open after
  2818  **                     returning.  This is like SRT_Table except that
  2819  **                     this destination uses OP_OpenEphemeral to create
  2820  **                     the table first.
  2821  **
  2822  **     SRT_Coroutine   Generate a co-routine that returns a new row of
  2823  **                     results each time it is invoked.  The entry point
  2824  **                     of the co-routine is stored in register pDest->iSDParm
  2825  **                     and the result row is stored in pDest->nDest registers
  2826  **                     starting with pDest->iSdst.
  2827  **
  2828  **     SRT_Table       Store results in temporary table pDest->iSDParm.
  2829  **     SRT_Fifo        This is like SRT_EphemTab except that the table
  2830  **                     is assumed to already be open.  SRT_Fifo has
  2831  **                     the additional property of being able to ignore
  2832  **                     the ORDER BY clause.
  2833  **
  2834  **     SRT_DistFifo    Store results in a temporary table pDest->iSDParm.
  2835  **                     But also use temporary table pDest->iSDParm+1 as
  2836  **                     a record of all prior results and ignore any duplicate
  2837  **                     rows.  Name means:  "Distinct Fifo".
  2838  **
  2839  **     SRT_Queue       Store results in priority queue pDest->iSDParm (really
  2840  **                     an index).  Append a sequence number so that all entries
  2841  **                     are distinct.
  2842  **
  2843  **     SRT_DistQueue   Store results in priority queue pDest->iSDParm only if
  2844  **                     the same record has never been stored before.  The
  2845  **                     index at pDest->iSDParm+1 hold all prior stores.
  2846  */
  2847  #define SRT_Union        1  /* Store result as keys in an index */
  2848  #define SRT_Except       2  /* Remove result from a UNION index */
  2849  #define SRT_Exists       3  /* Store 1 if the result is not empty */
  2850  #define SRT_Discard      4  /* Do not save the results anywhere */
  2851  #define SRT_Fifo         5  /* Store result as data with an automatic rowid */
  2852  #define SRT_DistFifo     6  /* Like SRT_Fifo, but unique results only */
  2853  #define SRT_Queue        7  /* Store result in an queue */
  2854  #define SRT_DistQueue    8  /* Like SRT_Queue, but unique results only */
  2855  
  2856  /* The ORDER BY clause is ignored for all of the above */
  2857  #define IgnorableOrderby(X) ((X->eDest)<=SRT_DistQueue)
  2858  
  2859  #define SRT_Output       9  /* Output each row of result */
  2860  #define SRT_Mem         10  /* Store result in a memory cell */
  2861  #define SRT_Set         11  /* Store results as keys in an index */
  2862  #define SRT_EphemTab    12  /* Create transient tab and store like SRT_Table */
  2863  #define SRT_Coroutine   13  /* Generate a single row of result */
  2864  #define SRT_Table       14  /* Store result as data with an automatic rowid */
  2865  
  2866  /*
  2867  ** An instance of this object describes where to put of the results of
  2868  ** a SELECT statement.
  2869  */
  2870  struct SelectDest {
  2871    u8 eDest;            /* How to dispose of the results.  On of SRT_* above. */
  2872    int iSDParm;         /* A parameter used by the eDest disposal method */
  2873    int iSdst;           /* Base register where results are written */
  2874    int nSdst;           /* Number of registers allocated */
  2875    char *zAffSdst;      /* Affinity used when eDest==SRT_Set */
  2876    ExprList *pOrderBy;  /* Key columns for SRT_Queue and SRT_DistQueue */
  2877  };
  2878  
  2879  /*
  2880  ** During code generation of statements that do inserts into AUTOINCREMENT
  2881  ** tables, the following information is attached to the Table.u.autoInc.p
  2882  ** pointer of each autoincrement table to record some side information that
  2883  ** the code generator needs.  We have to keep per-table autoincrement
  2884  ** information in case inserts are done within triggers.  Triggers do not
  2885  ** normally coordinate their activities, but we do need to coordinate the
  2886  ** loading and saving of autoincrement information.
  2887  */
  2888  struct AutoincInfo {
  2889    AutoincInfo *pNext;   /* Next info block in a list of them all */
  2890    Table *pTab;          /* Table this info block refers to */
  2891    int iDb;              /* Index in sqlite3.aDb[] of database holding pTab */
  2892    int regCtr;           /* Memory register holding the rowid counter */
  2893  };
  2894  
  2895  /*
  2896  ** Size of the column cache
  2897  */
  2898  #ifndef SQLITE_N_COLCACHE
  2899  # define SQLITE_N_COLCACHE 10
  2900  #endif
  2901  
  2902  /*
  2903  ** At least one instance of the following structure is created for each
  2904  ** trigger that may be fired while parsing an INSERT, UPDATE or DELETE
  2905  ** statement. All such objects are stored in the linked list headed at
  2906  ** Parse.pTriggerPrg and deleted once statement compilation has been
  2907  ** completed.
  2908  **
  2909  ** A Vdbe sub-program that implements the body and WHEN clause of trigger
  2910  ** TriggerPrg.pTrigger, assuming a default ON CONFLICT clause of
  2911  ** TriggerPrg.orconf, is stored in the TriggerPrg.pProgram variable.
  2912  ** The Parse.pTriggerPrg list never contains two entries with the same
  2913  ** values for both pTrigger and orconf.
  2914  **
  2915  ** The TriggerPrg.aColmask[0] variable is set to a mask of old.* columns
  2916  ** accessed (or set to 0 for triggers fired as a result of INSERT
  2917  ** statements). Similarly, the TriggerPrg.aColmask[1] variable is set to
  2918  ** a mask of new.* columns used by the program.
  2919  */
  2920  struct TriggerPrg {
  2921    Trigger *pTrigger;      /* Trigger this program was coded from */
  2922    TriggerPrg *pNext;      /* Next entry in Parse.pTriggerPrg list */
  2923    SubProgram *pProgram;   /* Program implementing pTrigger/orconf */
  2924    int orconf;             /* Default ON CONFLICT policy */
  2925    u32 aColmask[2];        /* Masks of old.*, new.* columns accessed */
  2926  };
  2927  
  2928  /*
  2929  ** The yDbMask datatype for the bitmask of all attached databases.
  2930  */
  2931  #if SQLITE_MAX_ATTACHED>30
  2932    typedef unsigned char yDbMask[(SQLITE_MAX_ATTACHED+9)/8];
  2933  # define DbMaskTest(M,I)    (((M)[(I)/8]&(1<<((I)&7)))!=0)
  2934  # define DbMaskZero(M)      memset((M),0,sizeof(M))
  2935  # define DbMaskSet(M,I)     (M)[(I)/8]|=(1<<((I)&7))
  2936  # define DbMaskAllZero(M)   sqlite3DbMaskAllZero(M)
  2937  # define DbMaskNonZero(M)   (sqlite3DbMaskAllZero(M)==0)
  2938  #else
  2939    typedef unsigned int yDbMask;
  2940  # define DbMaskTest(M,I)    (((M)&(((yDbMask)1)<<(I)))!=0)
  2941  # define DbMaskZero(M)      (M)=0
  2942  # define DbMaskSet(M,I)     (M)|=(((yDbMask)1)<<(I))
  2943  # define DbMaskAllZero(M)   (M)==0
  2944  # define DbMaskNonZero(M)   (M)!=0
  2945  #endif
  2946  
  2947  /*
  2948  ** An SQL parser context.  A copy of this structure is passed through
  2949  ** the parser and down into all the parser action routine in order to
  2950  ** carry around information that is global to the entire parse.
  2951  **
  2952  ** The structure is divided into two parts.  When the parser and code
  2953  ** generate call themselves recursively, the first part of the structure
  2954  ** is constant but the second part is reset at the beginning and end of
  2955  ** each recursion.
  2956  **
  2957  ** The nTableLock and aTableLock variables are only used if the shared-cache
  2958  ** feature is enabled (if sqlite3Tsd()->useSharedData is true). They are
  2959  ** used to store the set of table-locks required by the statement being
  2960  ** compiled. Function sqlite3TableLock() is used to add entries to the
  2961  ** list.
  2962  */
  2963  struct Parse {
  2964    sqlite3 *db;         /* The main database structure */
  2965    char *zErrMsg;       /* An error message */
  2966    Vdbe *pVdbe;         /* An engine for executing database bytecode */
  2967    int rc;              /* Return code from execution */
  2968    u8 colNamesSet;      /* TRUE after OP_ColumnName has been issued to pVdbe */
  2969    u8 checkSchema;      /* Causes schema cookie check after an error */
  2970    u8 nested;           /* Number of nested calls to the parser/code generator */
  2971    u8 nTempReg;         /* Number of temporary registers in aTempReg[] */
  2972    u8 isMultiWrite;     /* True if statement may modify/insert multiple rows */
  2973    u8 mayAbort;         /* True if statement may throw an ABORT exception */
  2974    u8 hasCompound;      /* Need to invoke convertCompoundSelectToSubquery() */
  2975    u8 okConstFactor;    /* OK to factor out constants */
  2976    u8 disableLookaside; /* Number of times lookaside has been disabled */
  2977    u8 nColCache;        /* Number of entries in aColCache[] */
  2978    int nRangeReg;       /* Size of the temporary register block */
  2979    int iRangeReg;       /* First register in temporary register block */
  2980    int nErr;            /* Number of errors seen */
  2981    int nTab;            /* Number of previously allocated VDBE cursors */
  2982    int nMem;            /* Number of memory cells used so far */
  2983    int nOpAlloc;        /* Number of slots allocated for Vdbe.aOp[] */
  2984    int szOpAlloc;       /* Bytes of memory space allocated for Vdbe.aOp[] */
  2985    int iSelfTab;        /* Table for associated with an index on expr, or negative
  2986                         ** of the base register during check-constraint eval */
  2987    int iCacheLevel;     /* ColCache valid when aColCache[].iLevel<=iCacheLevel */
  2988    int iCacheCnt;       /* Counter used to generate aColCache[].lru values */
  2989    int nLabel;          /* Number of labels used */
  2990    int *aLabel;         /* Space to hold the labels */
  2991    ExprList *pConstExpr;/* Constant expressions */
  2992    Token constraintName;/* Name of the constraint currently being parsed */
  2993    yDbMask writeMask;   /* Start a write transaction on these databases */
  2994    yDbMask cookieMask;  /* Bitmask of schema verified databases */
  2995    int regRowid;        /* Register holding rowid of CREATE TABLE entry */
  2996    int regRoot;         /* Register holding root page number for new objects */
  2997    int nMaxArg;         /* Max args passed to user function by sub-program */
  2998  #if SELECTTRACE_ENABLED
  2999    int nSelect;         /* Number of SELECT statements seen */
  3000    int nSelectIndent;   /* How far to indent SELECTTRACE() output */
  3001  #endif
  3002  #ifndef SQLITE_OMIT_SHARED_CACHE
  3003    int nTableLock;        /* Number of locks in aTableLock */
  3004    TableLock *aTableLock; /* Required table locks for shared-cache mode */
  3005  #endif
  3006    AutoincInfo *pAinc;  /* Information about AUTOINCREMENT counters */
  3007    Parse *pToplevel;    /* Parse structure for main program (or NULL) */
  3008    Table *pTriggerTab;  /* Table triggers are being coded for */
  3009    int addrCrTab;       /* Address of OP_CreateBtree opcode on CREATE TABLE */
  3010    u32 nQueryLoop;      /* Est number of iterations of a query (10*log2(N)) */
  3011    u32 oldmask;         /* Mask of old.* columns referenced */
  3012    u32 newmask;         /* Mask of new.* columns referenced */
  3013    u8 eTriggerOp;       /* TK_UPDATE, TK_INSERT or TK_DELETE */
  3014    u8 eOrconf;          /* Default ON CONFLICT policy for trigger steps */
  3015    u8 disableTriggers;  /* True to disable triggers */
  3016  
  3017    /**************************************************************************
  3018    ** Fields above must be initialized to zero.  The fields that follow,
  3019    ** down to the beginning of the recursive section, do not need to be
  3020    ** initialized as they will be set before being used.  The boundary is
  3021    ** determined by offsetof(Parse,aColCache).
  3022    **************************************************************************/
  3023  
  3024    struct yColCache {
  3025      int iTable;           /* Table cursor number */
  3026      i16 iColumn;          /* Table column number */
  3027      u8 tempReg;           /* iReg is a temp register that needs to be freed */
  3028      int iLevel;           /* Nesting level */
  3029      int iReg;             /* Reg with value of this column. 0 means none. */
  3030      int lru;              /* Least recently used entry has the smallest value */
  3031    } aColCache[SQLITE_N_COLCACHE];  /* One for each column cache entry */
  3032    int aTempReg[8];        /* Holding area for temporary registers */
  3033    Token sNameToken;       /* Token with unqualified schema object name */
  3034  
  3035    /************************************************************************
  3036    ** Above is constant between recursions.  Below is reset before and after
  3037    ** each recursion.  The boundary between these two regions is determined
  3038    ** using offsetof(Parse,sLastToken) so the sLastToken field must be the
  3039    ** first field in the recursive region.
  3040    ************************************************************************/
  3041  
  3042    Token sLastToken;       /* The last token parsed */
  3043    ynVar nVar;               /* Number of '?' variables seen in the SQL so far */
  3044    u8 iPkSortOrder;          /* ASC or DESC for INTEGER PRIMARY KEY */
  3045    u8 explain;               /* True if the EXPLAIN flag is found on the query */
  3046  #ifndef SQLITE_OMIT_VIRTUALTABLE
  3047    u8 declareVtab;           /* True if inside sqlite3_declare_vtab() */
  3048    int nVtabLock;            /* Number of virtual tables to lock */
  3049  #endif
  3050    int nHeight;              /* Expression tree height of current sub-select */
  3051  #ifndef SQLITE_OMIT_EXPLAIN
  3052    int iSelectId;            /* ID of current select for EXPLAIN output */
  3053    int iNextSelectId;        /* Next available select ID for EXPLAIN output */
  3054  #endif
  3055    VList *pVList;            /* Mapping between variable names and numbers */
  3056    Vdbe *pReprepare;         /* VM being reprepared (sqlite3Reprepare()) */
  3057    const char *zTail;        /* All SQL text past the last semicolon parsed */
  3058    Table *pNewTable;         /* A table being constructed by CREATE TABLE */
  3059    Trigger *pNewTrigger;     /* Trigger under construct by a CREATE TRIGGER */
  3060    const char *zAuthContext; /* The 6th parameter to db->xAuth callbacks */
  3061  #ifndef SQLITE_OMIT_VIRTUALTABLE
  3062    Token sArg;               /* Complete text of a module argument */
  3063    Table **apVtabLock;       /* Pointer to virtual tables needing locking */
  3064  #endif
  3065    Table *pZombieTab;        /* List of Table objects to delete after code gen */
  3066    TriggerPrg *pTriggerPrg;  /* Linked list of coded triggers */
  3067    With *pWith;              /* Current WITH clause, or NULL */
  3068    With *pWithToFree;        /* Free this WITH object at the end of the parse */
  3069  };
  3070  
  3071  /*
  3072  ** Sizes and pointers of various parts of the Parse object.
  3073  */
  3074  #define PARSE_HDR_SZ offsetof(Parse,aColCache) /* Recursive part w/o aColCache*/
  3075  #define PARSE_RECURSE_SZ offsetof(Parse,sLastToken)    /* Recursive part */
  3076  #define PARSE_TAIL_SZ (sizeof(Parse)-PARSE_RECURSE_SZ) /* Non-recursive part */
  3077  #define PARSE_TAIL(X) (((char*)(X))+PARSE_RECURSE_SZ)  /* Pointer to tail */
  3078  
  3079  /*
  3080  ** Return true if currently inside an sqlite3_declare_vtab() call.
  3081  */
  3082  #ifdef SQLITE_OMIT_VIRTUALTABLE
  3083    #define IN_DECLARE_VTAB 0
  3084  #else
  3085    #define IN_DECLARE_VTAB (pParse->declareVtab)
  3086  #endif
  3087  
  3088  /*
  3089  ** An instance of the following structure can be declared on a stack and used
  3090  ** to save the Parse.zAuthContext value so that it can be restored later.
  3091  */
  3092  struct AuthContext {
  3093    const char *zAuthContext;   /* Put saved Parse.zAuthContext here */
  3094    Parse *pParse;              /* The Parse structure */
  3095  };
  3096  
  3097  /*
  3098  ** Bitfield flags for P5 value in various opcodes.
  3099  **
  3100  ** Value constraints (enforced via assert()):
  3101  **    OPFLAG_LENGTHARG    == SQLITE_FUNC_LENGTH
  3102  **    OPFLAG_TYPEOFARG    == SQLITE_FUNC_TYPEOF
  3103  **    OPFLAG_BULKCSR      == BTREE_BULKLOAD
  3104  **    OPFLAG_SEEKEQ       == BTREE_SEEK_EQ
  3105  **    OPFLAG_FORDELETE    == BTREE_FORDELETE
  3106  **    OPFLAG_SAVEPOSITION == BTREE_SAVEPOSITION
  3107  **    OPFLAG_AUXDELETE    == BTREE_AUXDELETE
  3108  */
  3109  #define OPFLAG_NCHANGE       0x01    /* OP_Insert: Set to update db->nChange */
  3110                                       /* Also used in P2 (not P5) of OP_Delete */
  3111  #define OPFLAG_EPHEM         0x01    /* OP_Column: Ephemeral output is ok */
  3112  #define OPFLAG_LASTROWID     0x20    /* Set to update db->lastRowid */
  3113  #define OPFLAG_ISUPDATE      0x04    /* This OP_Insert is an sql UPDATE */
  3114  #define OPFLAG_APPEND        0x08    /* This is likely to be an append */
  3115  #define OPFLAG_USESEEKRESULT 0x10    /* Try to avoid a seek in BtreeInsert() */
  3116  #define OPFLAG_ISNOOP        0x40    /* OP_Delete does pre-update-hook only */
  3117  #define OPFLAG_LENGTHARG     0x40    /* OP_Column only used for length() */
  3118  #define OPFLAG_TYPEOFARG     0x80    /* OP_Column only used for typeof() */
  3119  #define OPFLAG_BULKCSR       0x01    /* OP_Open** used to open bulk cursor */
  3120  #define OPFLAG_SEEKEQ        0x02    /* OP_Open** cursor uses EQ seek only */
  3121  #define OPFLAG_FORDELETE     0x08    /* OP_Open should use BTREE_FORDELETE */
  3122  #define OPFLAG_P2ISREG       0x10    /* P2 to OP_Open** is a register number */
  3123  #define OPFLAG_PERMUTE       0x01    /* OP_Compare: use the permutation */
  3124  #define OPFLAG_SAVEPOSITION  0x02    /* OP_Delete/Insert: save cursor pos */
  3125  #define OPFLAG_AUXDELETE     0x04    /* OP_Delete: index in a DELETE op */
  3126  
  3127  /*
  3128   * Each trigger present in the database schema is stored as an instance of
  3129   * struct Trigger.
  3130   *
  3131   * Pointers to instances of struct Trigger are stored in two ways.
  3132   * 1. In the "trigHash" hash table (part of the sqlite3* that represents the
  3133   *    database). This allows Trigger structures to be retrieved by name.
  3134   * 2. All triggers associated with a single table form a linked list, using the
  3135   *    pNext member of struct Trigger. A pointer to the first element of the
  3136   *    linked list is stored as the "pTrigger" member of the associated
  3137   *    struct Table.
  3138   *
  3139   * The "step_list" member points to the first element of a linked list
  3140   * containing the SQL statements specified as the trigger program.
  3141   */
  3142  struct Trigger {
  3143    char *zName;            /* The name of the trigger                        */
  3144    char *table;            /* The table or view to which the trigger applies */
  3145    u8 op;                  /* One of TK_DELETE, TK_UPDATE, TK_INSERT         */
  3146    u8 tr_tm;               /* One of TRIGGER_BEFORE, TRIGGER_AFTER */
  3147    Expr *pWhen;            /* The WHEN clause of the expression (may be NULL) */
  3148    IdList *pColumns;       /* If this is an UPDATE OF <column-list> trigger,
  3149                               the <column-list> is stored here */
  3150    Schema *pSchema;        /* Schema containing the trigger */
  3151    Schema *pTabSchema;     /* Schema containing the table */
  3152    TriggerStep *step_list; /* Link list of trigger program steps             */
  3153    Trigger *pNext;         /* Next trigger associated with the table */
  3154  };
  3155  
  3156  /*
  3157  ** A trigger is either a BEFORE or an AFTER trigger.  The following constants
  3158  ** determine which.
  3159  **
  3160  ** If there are multiple triggers, you might of some BEFORE and some AFTER.
  3161  ** In that cases, the constants below can be ORed together.
  3162  */
  3163  #define TRIGGER_BEFORE  1
  3164  #define TRIGGER_AFTER   2
  3165  
  3166  /*
  3167   * An instance of struct TriggerStep is used to store a single SQL statement
  3168   * that is a part of a trigger-program.
  3169   *
  3170   * Instances of struct TriggerStep are stored in a singly linked list (linked
  3171   * using the "pNext" member) referenced by the "step_list" member of the
  3172   * associated struct Trigger instance. The first element of the linked list is
  3173   * the first step of the trigger-program.
  3174   *
  3175   * The "op" member indicates whether this is a "DELETE", "INSERT", "UPDATE" or
  3176   * "SELECT" statement. The meanings of the other members is determined by the
  3177   * value of "op" as follows:
  3178   *
  3179   * (op == TK_INSERT)
  3180   * orconf    -> stores the ON CONFLICT algorithm
  3181   * pSelect   -> If this is an INSERT INTO ... SELECT ... statement, then
  3182   *              this stores a pointer to the SELECT statement. Otherwise NULL.
  3183   * zTarget   -> Dequoted name of the table to insert into.
  3184   * pExprList -> If this is an INSERT INTO ... VALUES ... statement, then
  3185   *              this stores values to be inserted. Otherwise NULL.
  3186   * pIdList   -> If this is an INSERT INTO ... (<column-names>) VALUES ...
  3187   *              statement, then this stores the column-names to be
  3188   *              inserted into.
  3189   *
  3190   * (op == TK_DELETE)
  3191   * zTarget   -> Dequoted name of the table to delete from.
  3192   * pWhere    -> The WHERE clause of the DELETE statement if one is specified.
  3193   *              Otherwise NULL.
  3194   *
  3195   * (op == TK_UPDATE)
  3196   * zTarget   -> Dequoted name of the table to update.
  3197   * pWhere    -> The WHERE clause of the UPDATE statement if one is specified.
  3198   *              Otherwise NULL.
  3199   * pExprList -> A list of the columns to update and the expressions to update
  3200   *              them to. See sqlite3Update() documentation of "pChanges"
  3201   *              argument.
  3202   *
  3203   */
  3204  struct TriggerStep {
  3205    u8 op;               /* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT */
  3206    u8 orconf;           /* OE_Rollback etc. */
  3207    Trigger *pTrig;      /* The trigger that this step is a part of */
  3208    Select *pSelect;     /* SELECT statement or RHS of INSERT INTO SELECT ... */
  3209    char *zTarget;       /* Target table for DELETE, UPDATE, INSERT */
  3210    Expr *pWhere;        /* The WHERE clause for DELETE or UPDATE steps */
  3211    ExprList *pExprList; /* SET clause for UPDATE. */
  3212    IdList *pIdList;     /* Column names for INSERT */
  3213    TriggerStep *pNext;  /* Next in the link-list */
  3214    TriggerStep *pLast;  /* Last element in link-list. Valid for 1st elem only */
  3215  };
  3216  
  3217  /*
  3218  ** The following structure contains information used by the sqliteFix...
  3219  ** routines as they walk the parse tree to make database references
  3220  ** explicit.
  3221  */
  3222  typedef struct DbFixer DbFixer;
  3223  struct DbFixer {
  3224    Parse *pParse;      /* The parsing context.  Error messages written here */
  3225    Schema *pSchema;    /* Fix items to this schema */
  3226    int bVarOnly;       /* Check for variable references only */
  3227    const char *zDb;    /* Make sure all objects are contained in this database */
  3228    const char *zType;  /* Type of the container - used for error messages */
  3229    const Token *pName; /* Name of the container - used for error messages */
  3230  };
  3231  
  3232  /*
  3233  ** An objected used to accumulate the text of a string where we
  3234  ** do not necessarily know how big the string will be in the end.
  3235  */
  3236  struct StrAccum {
  3237    sqlite3 *db;         /* Optional database for lookaside.  Can be NULL */
  3238    char *zText;         /* The string collected so far */
  3239    u32  nAlloc;         /* Amount of space allocated in zText */
  3240    u32  mxAlloc;        /* Maximum allowed allocation.  0 for no malloc usage */
  3241    u32  nChar;          /* Length of the string so far */
  3242    u8   accError;       /* STRACCUM_NOMEM or STRACCUM_TOOBIG */
  3243    u8   printfFlags;    /* SQLITE_PRINTF flags below */
  3244  };
  3245  #define STRACCUM_NOMEM   1
  3246  #define STRACCUM_TOOBIG  2
  3247  #define SQLITE_PRINTF_INTERNAL 0x01  /* Internal-use-only converters allowed */
  3248  #define SQLITE_PRINTF_SQLFUNC  0x02  /* SQL function arguments to VXPrintf */
  3249  #define SQLITE_PRINTF_MALLOCED 0x04  /* True if xText is allocated space */
  3250  
  3251  #define isMalloced(X)  (((X)->printfFlags & SQLITE_PRINTF_MALLOCED)!=0)
  3252  
  3253  
  3254  /*
  3255  ** A pointer to this structure is used to communicate information
  3256  ** from sqlite3Init and OP_ParseSchema into the sqlite3InitCallback.
  3257  */
  3258  typedef struct {
  3259    sqlite3 *db;        /* The database being initialized */
  3260    char **pzErrMsg;    /* Error message stored here */
  3261    int iDb;            /* 0 for main database.  1 for TEMP, 2.. for ATTACHed */
  3262    int rc;             /* Result code stored here */
  3263  } InitData;
  3264  
  3265  /*
  3266  ** Structure containing global configuration data for the SQLite library.
  3267  **
  3268  ** This structure also contains some state information.
  3269  */
  3270  struct Sqlite3Config {
  3271    int bMemstat;                     /* True to enable memory status */
  3272    int bCoreMutex;                   /* True to enable core mutexing */
  3273    int bFullMutex;                   /* True to enable full mutexing */
  3274    int bOpenUri;                     /* True to interpret filenames as URIs */
  3275    int bUseCis;                      /* Use covering indices for full-scans */
  3276    int bSmallMalloc;                 /* Avoid large memory allocations if true */
  3277    int mxStrlen;                     /* Maximum string length */
  3278    int neverCorrupt;                 /* Database is always well-formed */
  3279    int szLookaside;                  /* Default lookaside buffer size */
  3280    int nLookaside;                   /* Default lookaside buffer count */
  3281    int nStmtSpill;                   /* Stmt-journal spill-to-disk threshold */
  3282    sqlite3_mem_methods m;            /* Low-level memory allocation interface */
  3283    sqlite3_mutex_methods mutex;      /* Low-level mutex interface */
  3284    sqlite3_pcache_methods2 pcache2;  /* Low-level page-cache interface */
  3285    void *pHeap;                      /* Heap storage space */
  3286    int nHeap;                        /* Size of pHeap[] */
  3287    int mnReq, mxReq;                 /* Min and max heap requests sizes */
  3288    sqlite3_int64 szMmap;             /* mmap() space per open file */
  3289    sqlite3_int64 mxMmap;             /* Maximum value for szMmap */
  3290    void *pPage;                      /* Page cache memory */
  3291    int szPage;                       /* Size of each page in pPage[] */
  3292    int nPage;                        /* Number of pages in pPage[] */
  3293    int mxParserStack;                /* maximum depth of the parser stack */
  3294    int sharedCacheEnabled;           /* true if shared-cache mode enabled */
  3295    u32 szPma;                        /* Maximum Sorter PMA size */
  3296    /* The above might be initialized to non-zero.  The following need to always
  3297    ** initially be zero, however. */
  3298    int isInit;                       /* True after initialization has finished */
  3299    int inProgress;                   /* True while initialization in progress */
  3300    int isMutexInit;                  /* True after mutexes are initialized */
  3301    int isMallocInit;                 /* True after malloc is initialized */
  3302    int isPCacheInit;                 /* True after malloc is initialized */
  3303    int nRefInitMutex;                /* Number of users of pInitMutex */
  3304    sqlite3_mutex *pInitMutex;        /* Mutex used by sqlite3_initialize() */
  3305    void (*xLog)(void*,int,const char*); /* Function for logging */
  3306    void *pLogArg;                       /* First argument to xLog() */
  3307  #ifdef SQLITE_ENABLE_SQLLOG
  3308    void(*xSqllog)(void*,sqlite3*,const char*, int);
  3309    void *pSqllogArg;
  3310  #endif
  3311  #ifdef SQLITE_VDBE_COVERAGE
  3312    /* The following callback (if not NULL) is invoked on every VDBE branch
  3313    ** operation.  Set the callback using SQLITE_TESTCTRL_VDBE_COVERAGE.
  3314    */
  3315    void (*xVdbeBranch)(void*,int iSrcLine,u8 eThis,u8 eMx);  /* Callback */
  3316    void *pVdbeBranchArg;                                     /* 1st argument */
  3317  #endif
  3318  #ifndef SQLITE_UNTESTABLE
  3319    int (*xTestCallback)(int);        /* Invoked by sqlite3FaultSim() */
  3320  #endif
  3321    int bLocaltimeFault;              /* True to fail localtime() calls */
  3322    int iOnceResetThreshold;          /* When to reset OP_Once counters */
  3323  };
  3324  
  3325  /*
  3326  ** This macro is used inside of assert() statements to indicate that
  3327  ** the assert is only valid on a well-formed database.  Instead of:
  3328  **
  3329  **     assert( X );
  3330  **
  3331  ** One writes:
  3332  **
  3333  **     assert( X || CORRUPT_DB );
  3334  **
  3335  ** CORRUPT_DB is true during normal operation.  CORRUPT_DB does not indicate
  3336  ** that the database is definitely corrupt, only that it might be corrupt.
  3337  ** For most test cases, CORRUPT_DB is set to false using a special
  3338  ** sqlite3_test_control().  This enables assert() statements to prove
  3339  ** things that are always true for well-formed databases.
  3340  */
  3341  #define CORRUPT_DB  (sqlite3Config.neverCorrupt==0)
  3342  
  3343  /*
  3344  ** Context pointer passed down through the tree-walk.
  3345  */
  3346  struct Walker {
  3347    Parse *pParse;                            /* Parser context.  */
  3348    int (*xExprCallback)(Walker*, Expr*);     /* Callback for expressions */
  3349    int (*xSelectCallback)(Walker*,Select*);  /* Callback for SELECTs */
  3350    void (*xSelectCallback2)(Walker*,Select*);/* Second callback for SELECTs */
  3351    int walkerDepth;                          /* Number of subqueries */
  3352    u8 eCode;                                 /* A small processing code */
  3353    union {                                   /* Extra data for callback */
  3354      NameContext *pNC;                         /* Naming context */
  3355      int n;                                    /* A counter */
  3356      int iCur;                                 /* A cursor number */
  3357      SrcList *pSrcList;                        /* FROM clause */
  3358      struct SrcCount *pSrcCount;               /* Counting column references */
  3359      struct CCurHint *pCCurHint;               /* Used by codeCursorHint() */
  3360      int *aiCol;                               /* array of column indexes */
  3361      struct IdxCover *pIdxCover;               /* Check for index coverage */
  3362      struct IdxExprTrans *pIdxTrans;           /* Convert indexed expr to column */
  3363      ExprList *pGroupBy;                       /* GROUP BY clause */
  3364      struct HavingToWhereCtx *pHavingCtx;      /* HAVING to WHERE clause ctx */
  3365    } u;
  3366  };
  3367  
  3368  /* Forward declarations */
  3369  int sqlite3WalkExpr(Walker*, Expr*);
  3370  int sqlite3WalkExprList(Walker*, ExprList*);
  3371  int sqlite3WalkSelect(Walker*, Select*);
  3372  int sqlite3WalkSelectExpr(Walker*, Select*);
  3373  int sqlite3WalkSelectFrom(Walker*, Select*);
  3374  int sqlite3ExprWalkNoop(Walker*, Expr*);
  3375  int sqlite3SelectWalkNoop(Walker*, Select*);
  3376  int sqlite3SelectWalkFail(Walker*, Select*);
  3377  #ifdef SQLITE_DEBUG
  3378  void sqlite3SelectWalkAssert2(Walker*, Select*);
  3379  #endif
  3380  
  3381  /*
  3382  ** Return code from the parse-tree walking primitives and their
  3383  ** callbacks.
  3384  */
  3385  #define WRC_Continue    0   /* Continue down into children */
  3386  #define WRC_Prune       1   /* Omit children but continue walking siblings */
  3387  #define WRC_Abort       2   /* Abandon the tree walk */
  3388  
  3389  /*
  3390  ** An instance of this structure represents a set of one or more CTEs
  3391  ** (common table expressions) created by a single WITH clause.
  3392  */
  3393  struct With {
  3394    int nCte;                       /* Number of CTEs in the WITH clause */
  3395    With *pOuter;                   /* Containing WITH clause, or NULL */
  3396    struct Cte {                    /* For each CTE in the WITH clause.... */
  3397      char *zName;                    /* Name of this CTE */
  3398      ExprList *pCols;                /* List of explicit column names, or NULL */
  3399      Select *pSelect;                /* The definition of this CTE */
  3400      const char *zCteErr;            /* Error message for circular references */
  3401    } a[1];
  3402  };
  3403  
  3404  #ifdef SQLITE_DEBUG
  3405  /*
  3406  ** An instance of the TreeView object is used for printing the content of
  3407  ** data structures on sqlite3DebugPrintf() using a tree-like view.
  3408  */
  3409  struct TreeView {
  3410    int iLevel;             /* Which level of the tree we are on */
  3411    u8  bLine[100];         /* Draw vertical in column i if bLine[i] is true */
  3412  };
  3413  #endif /* SQLITE_DEBUG */
  3414  
  3415  /*
  3416  ** Assuming zIn points to the first byte of a UTF-8 character,
  3417  ** advance zIn to point to the first byte of the next UTF-8 character.
  3418  */
  3419  #define SQLITE_SKIP_UTF8(zIn) {                        \
  3420    if( (*(zIn++))>=0xc0 ){                              \
  3421      while( (*zIn & 0xc0)==0x80 ){ zIn++; }             \
  3422    }                                                    \
  3423  }
  3424  
  3425  /*
  3426  ** The SQLITE_*_BKPT macros are substitutes for the error codes with
  3427  ** the same name but without the _BKPT suffix.  These macros invoke
  3428  ** routines that report the line-number on which the error originated
  3429  ** using sqlite3_log().  The routines also provide a convenient place
  3430  ** to set a debugger breakpoint.
  3431  */
  3432  int sqlite3CorruptError(int);
  3433  int sqlite3MisuseError(int);
  3434  int sqlite3CantopenError(int);
  3435  #define SQLITE_CORRUPT_BKPT sqlite3CorruptError(__LINE__)
  3436  #define SQLITE_MISUSE_BKPT sqlite3MisuseError(__LINE__)
  3437  #define SQLITE_CANTOPEN_BKPT sqlite3CantopenError(__LINE__)
  3438  #ifdef SQLITE_DEBUG
  3439    int sqlite3NomemError(int);
  3440    int sqlite3IoerrnomemError(int);
  3441    int sqlite3CorruptPgnoError(int,Pgno);
  3442  # define SQLITE_NOMEM_BKPT sqlite3NomemError(__LINE__)
  3443  # define SQLITE_IOERR_NOMEM_BKPT sqlite3IoerrnomemError(__LINE__)
  3444  # define SQLITE_CORRUPT_PGNO(P) sqlite3CorruptPgnoError(__LINE__,(P))
  3445  #else
  3446  # define SQLITE_NOMEM_BKPT SQLITE_NOMEM
  3447  # define SQLITE_IOERR_NOMEM_BKPT SQLITE_IOERR_NOMEM
  3448  # define SQLITE_CORRUPT_PGNO(P) sqlite3CorruptError(__LINE__)
  3449  #endif
  3450  
  3451  /*
  3452  ** FTS3 and FTS4 both require virtual table support
  3453  */
  3454  #if defined(SQLITE_OMIT_VIRTUALTABLE)
  3455  # undef SQLITE_ENABLE_FTS3
  3456  # undef SQLITE_ENABLE_FTS4
  3457  #endif
  3458  
  3459  /*
  3460  ** FTS4 is really an extension for FTS3.  It is enabled using the
  3461  ** SQLITE_ENABLE_FTS3 macro.  But to avoid confusion we also call
  3462  ** the SQLITE_ENABLE_FTS4 macro to serve as an alias for SQLITE_ENABLE_FTS3.
  3463  */
  3464  #if defined(SQLITE_ENABLE_FTS4) && !defined(SQLITE_ENABLE_FTS3)
  3465  # define SQLITE_ENABLE_FTS3 1
  3466  #endif
  3467  
  3468  /*
  3469  ** The ctype.h header is needed for non-ASCII systems.  It is also
  3470  ** needed by FTS3 when FTS3 is included in the amalgamation.
  3471  */
  3472  #if !defined(SQLITE_ASCII) || \
  3473      (defined(SQLITE_ENABLE_FTS3) && defined(SQLITE_AMALGAMATION))
  3474  # include <ctype.h>
  3475  #endif
  3476  
  3477  /*
  3478  ** The following macros mimic the standard library functions toupper(),
  3479  ** isspace(), isalnum(), isdigit() and isxdigit(), respectively. The
  3480  ** sqlite versions only work for ASCII characters, regardless of locale.
  3481  */
  3482  #ifdef SQLITE_ASCII
  3483  # define sqlite3Toupper(x)  ((x)&~(sqlite3CtypeMap[(unsigned char)(x)]&0x20))
  3484  # define sqlite3Isspace(x)   (sqlite3CtypeMap[(unsigned char)(x)]&0x01)
  3485  # define sqlite3Isalnum(x)   (sqlite3CtypeMap[(unsigned char)(x)]&0x06)
  3486  # define sqlite3Isalpha(x)   (sqlite3CtypeMap[(unsigned char)(x)]&0x02)
  3487  # define sqlite3Isdigit(x)   (sqlite3CtypeMap[(unsigned char)(x)]&0x04)
  3488  # define sqlite3Isxdigit(x)  (sqlite3CtypeMap[(unsigned char)(x)]&0x08)
  3489  # define sqlite3Tolower(x)   (sqlite3UpperToLower[(unsigned char)(x)])
  3490  # define sqlite3Isquote(x)   (sqlite3CtypeMap[(unsigned char)(x)]&0x80)
  3491  #else
  3492  # define sqlite3Toupper(x)   toupper((unsigned char)(x))
  3493  # define sqlite3Isspace(x)   isspace((unsigned char)(x))
  3494  # define sqlite3Isalnum(x)   isalnum((unsigned char)(x))
  3495  # define sqlite3Isalpha(x)   isalpha((unsigned char)(x))
  3496  # define sqlite3Isdigit(x)   isdigit((unsigned char)(x))
  3497  # define sqlite3Isxdigit(x)  isxdigit((unsigned char)(x))
  3498  # define sqlite3Tolower(x)   tolower((unsigned char)(x))
  3499  # define sqlite3Isquote(x)   ((x)=='"'||(x)=='\''||(x)=='['||(x)=='`')
  3500  #endif
  3501  #ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
  3502  int sqlite3IsIdChar(u8);
  3503  #endif
  3504  
  3505  /*
  3506  ** Internal function prototypes
  3507  */
  3508  int sqlite3StrICmp(const char*,const char*);
  3509  int sqlite3Strlen30(const char*);
  3510  char *sqlite3ColumnType(Column*,char*);
  3511  #define sqlite3StrNICmp sqlite3_strnicmp
  3512  
  3513  int sqlite3MallocInit(void);
  3514  void sqlite3MallocEnd(void);
  3515  void *sqlite3Malloc(u64);
  3516  void *sqlite3MallocZero(u64);
  3517  void *sqlite3DbMallocZero(sqlite3*, u64);
  3518  void *sqlite3DbMallocRaw(sqlite3*, u64);
  3519  void *sqlite3DbMallocRawNN(sqlite3*, u64);
  3520  char *sqlite3DbStrDup(sqlite3*,const char*);
  3521  char *sqlite3DbStrNDup(sqlite3*,const char*, u64);
  3522  void *sqlite3Realloc(void*, u64);
  3523  void *sqlite3DbReallocOrFree(sqlite3 *, void *, u64);
  3524  void *sqlite3DbRealloc(sqlite3 *, void *, u64);
  3525  void sqlite3DbFree(sqlite3*, void*);
  3526  void sqlite3DbFreeNN(sqlite3*, void*);
  3527  int sqlite3MallocSize(void*);
  3528  int sqlite3DbMallocSize(sqlite3*, void*);
  3529  void *sqlite3PageMalloc(int);
  3530  void sqlite3PageFree(void*);
  3531  void sqlite3MemSetDefault(void);
  3532  #ifndef SQLITE_UNTESTABLE
  3533  void sqlite3BenignMallocHooks(void (*)(void), void (*)(void));
  3534  #endif
  3535  int sqlite3HeapNearlyFull(void);
  3536  
  3537  /*
  3538  ** On systems with ample stack space and that support alloca(), make
  3539  ** use of alloca() to obtain space for large automatic objects.  By default,
  3540  ** obtain space from malloc().
  3541  **
  3542  ** The alloca() routine never returns NULL.  This will cause code paths
  3543  ** that deal with sqlite3StackAlloc() failures to be unreachable.
  3544  */
  3545  #ifdef SQLITE_USE_ALLOCA
  3546  # define sqlite3StackAllocRaw(D,N)   alloca(N)
  3547  # define sqlite3StackAllocZero(D,N)  memset(alloca(N), 0, N)
  3548  # define sqlite3StackFree(D,P)
  3549  #else
  3550  # define sqlite3StackAllocRaw(D,N)   sqlite3DbMallocRaw(D,N)
  3551  # define sqlite3StackAllocZero(D,N)  sqlite3DbMallocZero(D,N)
  3552  # define sqlite3StackFree(D,P)       sqlite3DbFree(D,P)
  3553  #endif
  3554  
  3555  /* Do not allow both MEMSYS5 and MEMSYS3 to be defined together.  If they
  3556  ** are, disable MEMSYS3
  3557  */
  3558  #ifdef SQLITE_ENABLE_MEMSYS5
  3559  const sqlite3_mem_methods *sqlite3MemGetMemsys5(void);
  3560  #undef SQLITE_ENABLE_MEMSYS3
  3561  #endif
  3562  #ifdef SQLITE_ENABLE_MEMSYS3
  3563  const sqlite3_mem_methods *sqlite3MemGetMemsys3(void);
  3564  #endif
  3565  
  3566  
  3567  #ifndef SQLITE_MUTEX_OMIT
  3568    sqlite3_mutex_methods const *sqlite3DefaultMutex(void);
  3569    sqlite3_mutex_methods const *sqlite3NoopMutex(void);
  3570    sqlite3_mutex *sqlite3MutexAlloc(int);
  3571    int sqlite3MutexInit(void);
  3572    int sqlite3MutexEnd(void);
  3573  #endif
  3574  #if !defined(SQLITE_MUTEX_OMIT) && !defined(SQLITE_MUTEX_NOOP)
  3575    void sqlite3MemoryBarrier(void);
  3576  #else
  3577  # define sqlite3MemoryBarrier()
  3578  #endif
  3579  
  3580  sqlite3_int64 sqlite3StatusValue(int);
  3581  void sqlite3StatusUp(int, int);
  3582  void sqlite3StatusDown(int, int);
  3583  void sqlite3StatusHighwater(int, int);
  3584  int sqlite3LookasideUsed(sqlite3*,int*);
  3585  
  3586  /* Access to mutexes used by sqlite3_status() */
  3587  sqlite3_mutex *sqlite3Pcache1Mutex(void);
  3588  sqlite3_mutex *sqlite3MallocMutex(void);
  3589  
  3590  #ifndef SQLITE_OMIT_FLOATING_POINT
  3591    int sqlite3IsNaN(double);
  3592  #else
  3593  # define sqlite3IsNaN(X)  0
  3594  #endif
  3595  
  3596  /*
  3597  ** An instance of the following structure holds information about SQL
  3598  ** functions arguments that are the parameters to the printf() function.
  3599  */
  3600  struct PrintfArguments {
  3601    int nArg;                /* Total number of arguments */
  3602    int nUsed;               /* Number of arguments used so far */
  3603    sqlite3_value **apArg;   /* The argument values */
  3604  };
  3605  
  3606  void sqlite3VXPrintf(StrAccum*, const char*, va_list);
  3607  void sqlite3XPrintf(StrAccum*, const char*, ...);
  3608  char *sqlite3MPrintf(sqlite3*,const char*, ...);
  3609  char *sqlite3VMPrintf(sqlite3*,const char*, va_list);
  3610  #if defined(SQLITE_DEBUG) || defined(SQLITE_HAVE_OS_TRACE)
  3611    void sqlite3DebugPrintf(const char*, ...);
  3612  #endif
  3613  #if defined(SQLITE_TEST)
  3614    void *sqlite3TestTextToPtr(const char*);
  3615  #endif
  3616  
  3617  #if defined(SQLITE_DEBUG)
  3618    void sqlite3TreeViewExpr(TreeView*, const Expr*, u8);
  3619    void sqlite3TreeViewBareExprList(TreeView*, const ExprList*, const char*);
  3620    void sqlite3TreeViewExprList(TreeView*, const ExprList*, u8, const char*);
  3621    void sqlite3TreeViewSelect(TreeView*, const Select*, u8);
  3622    void sqlite3TreeViewWith(TreeView*, const With*, u8);
  3623  #endif
  3624  
  3625  
  3626  void sqlite3SetString(char **, sqlite3*, const char*);
  3627  void sqlite3ErrorMsg(Parse*, const char*, ...);
  3628  void sqlite3Dequote(char*);
  3629  void sqlite3TokenInit(Token*,char*);
  3630  int sqlite3KeywordCode(const unsigned char*, int);
  3631  int sqlite3RunParser(Parse*, const char*, char **);
  3632  void sqlite3FinishCoding(Parse*);
  3633  int sqlite3GetTempReg(Parse*);
  3634  void sqlite3ReleaseTempReg(Parse*,int);
  3635  int sqlite3GetTempRange(Parse*,int);
  3636  void sqlite3ReleaseTempRange(Parse*,int,int);
  3637  void sqlite3ClearTempRegCache(Parse*);
  3638  #ifdef SQLITE_DEBUG
  3639  int sqlite3NoTempsInRange(Parse*,int,int);
  3640  #endif
  3641  Expr *sqlite3ExprAlloc(sqlite3*,int,const Token*,int);
  3642  Expr *sqlite3Expr(sqlite3*,int,const char*);
  3643  void sqlite3ExprAttachSubtrees(sqlite3*,Expr*,Expr*,Expr*);
  3644  Expr *sqlite3PExpr(Parse*, int, Expr*, Expr*);
  3645  void sqlite3PExprAddSelect(Parse*, Expr*, Select*);
  3646  Expr *sqlite3ExprAnd(sqlite3*,Expr*, Expr*);
  3647  Expr *sqlite3ExprFunction(Parse*,ExprList*, Token*);
  3648  void sqlite3ExprAssignVarNumber(Parse*, Expr*, u32);
  3649  void sqlite3ExprDelete(sqlite3*, Expr*);
  3650  ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*);
  3651  ExprList *sqlite3ExprListAppendVector(Parse*,ExprList*,IdList*,Expr*);
  3652  void sqlite3ExprListSetSortOrder(ExprList*,int);
  3653  void sqlite3ExprListSetName(Parse*,ExprList*,Token*,int);
  3654  void sqlite3ExprListSetSpan(Parse*,ExprList*,ExprSpan*);
  3655  void sqlite3ExprListDelete(sqlite3*, ExprList*);
  3656  u32 sqlite3ExprListFlags(const ExprList*);
  3657  int sqlite3Init(sqlite3*, char**);
  3658  int sqlite3InitCallback(void*, int, char**, char**);
  3659  void sqlite3Pragma(Parse*,Token*,Token*,Token*,int);
  3660  #ifndef SQLITE_OMIT_VIRTUALTABLE
  3661  Module *sqlite3PragmaVtabRegister(sqlite3*,const char *zName);
  3662  #endif
  3663  void sqlite3ResetAllSchemasOfConnection(sqlite3*);
  3664  void sqlite3ResetOneSchema(sqlite3*,int);
  3665  void sqlite3CollapseDatabaseArray(sqlite3*);
  3666  void sqlite3CommitInternalChanges(sqlite3*);
  3667  void sqlite3DeleteColumnNames(sqlite3*,Table*);
  3668  int sqlite3ColumnsFromExprList(Parse*,ExprList*,i16*,Column**);
  3669  void sqlite3SelectAddColumnTypeAndCollation(Parse*,Table*,Select*);
  3670  Table *sqlite3ResultSetOfSelect(Parse*,Select*);
  3671  void sqlite3OpenMasterTable(Parse *, int);
  3672  Index *sqlite3PrimaryKeyIndex(Table*);
  3673  i16 sqlite3ColumnOfIndex(Index*, i16);
  3674  void sqlite3StartTable(Parse*,Token*,Token*,int,int,int,int);
  3675  #if SQLITE_ENABLE_HIDDEN_COLUMNS
  3676    void sqlite3ColumnPropertiesFromName(Table*, Column*);
  3677  #else
  3678  # define sqlite3ColumnPropertiesFromName(T,C) /* no-op */
  3679  #endif
  3680  void sqlite3AddColumn(Parse*,Token*,Token*);
  3681  void sqlite3AddNotNull(Parse*, int);
  3682  void sqlite3AddPrimaryKey(Parse*, ExprList*, int, int, int);
  3683  void sqlite3AddCheckConstraint(Parse*, Expr*);
  3684  void sqlite3AddDefaultValue(Parse*,ExprSpan*);
  3685  void sqlite3AddCollateType(Parse*, Token*);
  3686  void sqlite3EndTable(Parse*,Token*,Token*,u8,Select*);
  3687  int sqlite3ParseUri(const char*,const char*,unsigned int*,
  3688                      sqlite3_vfs**,char**,char **);
  3689  Btree *sqlite3DbNameToBtree(sqlite3*,const char*);
  3690  
  3691  #ifdef SQLITE_UNTESTABLE
  3692  # define sqlite3FaultSim(X) SQLITE_OK
  3693  #else
  3694    int sqlite3FaultSim(int);
  3695  #endif
  3696  
  3697  Bitvec *sqlite3BitvecCreate(u32);
  3698  int sqlite3BitvecTest(Bitvec*, u32);
  3699  int sqlite3BitvecTestNotNull(Bitvec*, u32);
  3700  int sqlite3BitvecSet(Bitvec*, u32);
  3701  void sqlite3BitvecClear(Bitvec*, u32, void*);
  3702  void sqlite3BitvecDestroy(Bitvec*);
  3703  u32 sqlite3BitvecSize(Bitvec*);
  3704  #ifndef SQLITE_UNTESTABLE
  3705  int sqlite3BitvecBuiltinTest(int,int*);
  3706  #endif
  3707  
  3708  RowSet *sqlite3RowSetInit(sqlite3*, void*, unsigned int);
  3709  void sqlite3RowSetClear(RowSet*);
  3710  void sqlite3RowSetInsert(RowSet*, i64);
  3711  int sqlite3RowSetTest(RowSet*, int iBatch, i64);
  3712  int sqlite3RowSetNext(RowSet*, i64*);
  3713  
  3714  void sqlite3CreateView(Parse*,Token*,Token*,Token*,ExprList*,Select*,int,int);
  3715  
  3716  #if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE)
  3717    int sqlite3ViewGetColumnNames(Parse*,Table*);
  3718  #else
  3719  # define sqlite3ViewGetColumnNames(A,B) 0
  3720  #endif
  3721  
  3722  #if SQLITE_MAX_ATTACHED>30
  3723    int sqlite3DbMaskAllZero(yDbMask);
  3724  #endif
  3725  void sqlite3DropTable(Parse*, SrcList*, int, int);
  3726  void sqlite3CodeDropTable(Parse*, Table*, int, int);
  3727  void sqlite3DeleteTable(sqlite3*, Table*);
  3728  #ifndef SQLITE_OMIT_AUTOINCREMENT
  3729    void sqlite3AutoincrementBegin(Parse *pParse);
  3730    void sqlite3AutoincrementEnd(Parse *pParse);
  3731  #else
  3732  # define sqlite3AutoincrementBegin(X)
  3733  # define sqlite3AutoincrementEnd(X)
  3734  #endif
  3735  void sqlite3Insert(Parse*, SrcList*, Select*, IdList*, int);
  3736  void *sqlite3ArrayAllocate(sqlite3*,void*,int,int*,int*);
  3737  IdList *sqlite3IdListAppend(sqlite3*, IdList*, Token*);
  3738  int sqlite3IdListIndex(IdList*,const char*);
  3739  SrcList *sqlite3SrcListEnlarge(sqlite3*, SrcList*, int, int);
  3740  SrcList *sqlite3SrcListAppend(sqlite3*, SrcList*, Token*, Token*);
  3741  SrcList *sqlite3SrcListAppendFromTerm(Parse*, SrcList*, Token*, Token*,
  3742                                        Token*, Select*, Expr*, IdList*);
  3743  void sqlite3SrcListIndexedBy(Parse *, SrcList *, Token *);
  3744  void sqlite3SrcListFuncArgs(Parse*, SrcList*, ExprList*);
  3745  int sqlite3IndexedByLookup(Parse *, struct SrcList_item *);
  3746  void sqlite3SrcListShiftJoinType(SrcList*);
  3747  void sqlite3SrcListAssignCursors(Parse*, SrcList*);
  3748  void sqlite3IdListDelete(sqlite3*, IdList*);
  3749  void sqlite3SrcListDelete(sqlite3*, SrcList*);
  3750  Index *sqlite3AllocateIndexObject(sqlite3*,i16,int,char**);
  3751  void sqlite3CreateIndex(Parse*,Token*,Token*,SrcList*,ExprList*,int,Token*,
  3752                            Expr*, int, int, u8);
  3753  void sqlite3DropIndex(Parse*, SrcList*, int);
  3754  int sqlite3Select(Parse*, Select*, SelectDest*);
  3755  Select *sqlite3SelectNew(Parse*,ExprList*,SrcList*,Expr*,ExprList*,
  3756                           Expr*,ExprList*,u32,Expr*,Expr*);
  3757  void sqlite3SelectDelete(sqlite3*, Select*);
  3758  Table *sqlite3SrcListLookup(Parse*, SrcList*);
  3759  int sqlite3IsReadOnly(Parse*, Table*, int);
  3760  void sqlite3OpenTable(Parse*, int iCur, int iDb, Table*, int);
  3761  #if defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT) && !defined(SQLITE_OMIT_SUBQUERY)
  3762  Expr *sqlite3LimitWhere(Parse*,SrcList*,Expr*,ExprList*,Expr*,Expr*,char*);
  3763  #endif
  3764  void sqlite3DeleteFrom(Parse*, SrcList*, Expr*);
  3765  void sqlite3Update(Parse*, SrcList*, ExprList*, Expr*, int);
  3766  WhereInfo *sqlite3WhereBegin(Parse*,SrcList*,Expr*,ExprList*,ExprList*,u16,int);
  3767  void sqlite3WhereEnd(WhereInfo*);
  3768  LogEst sqlite3WhereOutputRowCount(WhereInfo*);
  3769  int sqlite3WhereIsDistinct(WhereInfo*);
  3770  int sqlite3WhereIsOrdered(WhereInfo*);
  3771  int sqlite3WhereOrderedInnerLoop(WhereInfo*);
  3772  int sqlite3WhereIsSorted(WhereInfo*);
  3773  int sqlite3WhereContinueLabel(WhereInfo*);
  3774  int sqlite3WhereBreakLabel(WhereInfo*);
  3775  int sqlite3WhereOkOnePass(WhereInfo*, int*);
  3776  #define ONEPASS_OFF      0        /* Use of ONEPASS not allowed */
  3777  #define ONEPASS_SINGLE   1        /* ONEPASS valid for a single row update */
  3778  #define ONEPASS_MULTI    2        /* ONEPASS is valid for multiple rows */
  3779  void sqlite3ExprCodeLoadIndexColumn(Parse*, Index*, int, int, int);
  3780  int sqlite3ExprCodeGetColumn(Parse*, Table*, int, int, int, u8);
  3781  void sqlite3ExprCodeGetColumnToReg(Parse*, Table*, int, int, int);
  3782  void sqlite3ExprCodeGetColumnOfTable(Vdbe*, Table*, int, int, int);
  3783  void sqlite3ExprCodeMove(Parse*, int, int, int);
  3784  void sqlite3ExprCacheStore(Parse*, int, int, int);
  3785  void sqlite3ExprCachePush(Parse*);
  3786  void sqlite3ExprCachePop(Parse*);
  3787  void sqlite3ExprCacheRemove(Parse*, int, int);
  3788  void sqlite3ExprCacheClear(Parse*);
  3789  void sqlite3ExprCacheAffinityChange(Parse*, int, int);
  3790  void sqlite3ExprCode(Parse*, Expr*, int);
  3791  void sqlite3ExprCodeCopy(Parse*, Expr*, int);
  3792  void sqlite3ExprCodeFactorable(Parse*, Expr*, int);
  3793  int sqlite3ExprCodeAtInit(Parse*, Expr*, int);
  3794  int sqlite3ExprCodeTemp(Parse*, Expr*, int*);
  3795  int sqlite3ExprCodeTarget(Parse*, Expr*, int);
  3796  void sqlite3ExprCodeAndCache(Parse*, Expr*, int);
  3797  int sqlite3ExprCodeExprList(Parse*, ExprList*, int, int, u8);
  3798  #define SQLITE_ECEL_DUP      0x01  /* Deep, not shallow copies */
  3799  #define SQLITE_ECEL_FACTOR   0x02  /* Factor out constant terms */
  3800  #define SQLITE_ECEL_REF      0x04  /* Use ExprList.u.x.iOrderByCol */
  3801  #define SQLITE_ECEL_OMITREF  0x08  /* Omit if ExprList.u.x.iOrderByCol */
  3802  void sqlite3ExprIfTrue(Parse*, Expr*, int, int);
  3803  void sqlite3ExprIfFalse(Parse*, Expr*, int, int);
  3804  void sqlite3ExprIfFalseDup(Parse*, Expr*, int, int);
  3805  Table *sqlite3FindTable(sqlite3*,const char*, const char*);
  3806  #define LOCATE_VIEW    0x01
  3807  #define LOCATE_NOERR   0x02
  3808  Table *sqlite3LocateTable(Parse*,u32 flags,const char*, const char*);
  3809  Table *sqlite3LocateTableItem(Parse*,u32 flags,struct SrcList_item *);
  3810  Index *sqlite3FindIndex(sqlite3*,const char*, const char*);
  3811  void sqlite3UnlinkAndDeleteTable(sqlite3*,int,const char*);
  3812  void sqlite3UnlinkAndDeleteIndex(sqlite3*,int,const char*);
  3813  void sqlite3Vacuum(Parse*,Token*);
  3814  int sqlite3RunVacuum(char**, sqlite3*, int);
  3815  char *sqlite3NameFromToken(sqlite3*, Token*);
  3816  int sqlite3ExprCompare(Parse*,Expr*, Expr*, int);
  3817  int sqlite3ExprCompareSkip(Expr*, Expr*, int);
  3818  int sqlite3ExprListCompare(ExprList*, ExprList*, int);
  3819  int sqlite3ExprImpliesExpr(Parse*,Expr*, Expr*, int);
  3820  void sqlite3ExprAnalyzeAggregates(NameContext*, Expr*);
  3821  void sqlite3ExprAnalyzeAggList(NameContext*,ExprList*);
  3822  int sqlite3ExprCoveredByIndex(Expr*, int iCur, Index *pIdx);
  3823  int sqlite3FunctionUsesThisSrc(Expr*, SrcList*);
  3824  Vdbe *sqlite3GetVdbe(Parse*);
  3825  #ifndef SQLITE_UNTESTABLE
  3826  void sqlite3PrngSaveState(void);
  3827  void sqlite3PrngRestoreState(void);
  3828  #endif
  3829  void sqlite3RollbackAll(sqlite3*,int);
  3830  void sqlite3CodeVerifySchema(Parse*, int);
  3831  void sqlite3CodeVerifyNamedSchema(Parse*, const char *zDb);
  3832  void sqlite3BeginTransaction(Parse*, int);
  3833  void sqlite3EndTransaction(Parse*,int);
  3834  void sqlite3Savepoint(Parse*, int, Token*);
  3835  void sqlite3CloseSavepoints(sqlite3 *);
  3836  void sqlite3LeaveMutexAndCloseZombie(sqlite3*);
  3837  int sqlite3ExprIsConstant(Expr*);
  3838  int sqlite3ExprIsConstantNotJoin(Expr*);
  3839  int sqlite3ExprIsConstantOrFunction(Expr*, u8);
  3840  int sqlite3ExprIsConstantOrGroupBy(Parse*, Expr*, ExprList*);
  3841  int sqlite3ExprIsTableConstant(Expr*,int);
  3842  #ifdef SQLITE_ENABLE_CURSOR_HINTS
  3843  int sqlite3ExprContainsSubquery(Expr*);
  3844  #endif
  3845  int sqlite3ExprIsInteger(Expr*, int*);
  3846  int sqlite3ExprCanBeNull(const Expr*);
  3847  int sqlite3ExprNeedsNoAffinityChange(const Expr*, char);
  3848  int sqlite3IsRowid(const char*);
  3849  void sqlite3GenerateRowDelete(
  3850      Parse*,Table*,Trigger*,int,int,int,i16,u8,u8,u8,int);
  3851  void sqlite3GenerateRowIndexDelete(Parse*, Table*, int, int, int*, int);
  3852  int sqlite3GenerateIndexKey(Parse*, Index*, int, int, int, int*,Index*,int);
  3853  void sqlite3ResolvePartIdxLabel(Parse*,int);
  3854  void sqlite3GenerateConstraintChecks(Parse*,Table*,int*,int,int,int,int,
  3855                                       u8,u8,int,int*,int*);
  3856  #ifdef SQLITE_ENABLE_NULL_TRIM
  3857    void sqlite3SetMakeRecordP5(Vdbe*,Table*);
  3858  #else
  3859  # define sqlite3SetMakeRecordP5(A,B)
  3860  #endif
  3861  void sqlite3CompleteInsertion(Parse*,Table*,int,int,int,int*,int,int,int);
  3862  int sqlite3OpenTableAndIndices(Parse*, Table*, int, u8, int, u8*, int*, int*);
  3863  void sqlite3BeginWriteOperation(Parse*, int, int);
  3864  void sqlite3MultiWrite(Parse*);
  3865  void sqlite3MayAbort(Parse*);
  3866  void sqlite3HaltConstraint(Parse*, int, int, char*, i8, u8);
  3867  void sqlite3UniqueConstraint(Parse*, int, Index*);
  3868  void sqlite3RowidConstraint(Parse*, int, Table*);
  3869  Expr *sqlite3ExprDup(sqlite3*,Expr*,int);
  3870  ExprList *sqlite3ExprListDup(sqlite3*,ExprList*,int);
  3871  SrcList *sqlite3SrcListDup(sqlite3*,SrcList*,int);
  3872  IdList *sqlite3IdListDup(sqlite3*,IdList*);
  3873  Select *sqlite3SelectDup(sqlite3*,Select*,int);
  3874  #if SELECTTRACE_ENABLED
  3875  void sqlite3SelectSetName(Select*,const char*);
  3876  #else
  3877  # define sqlite3SelectSetName(A,B)
  3878  #endif
  3879  void sqlite3InsertBuiltinFuncs(FuncDef*,int);
  3880  FuncDef *sqlite3FindFunction(sqlite3*,const char*,int,u8,u8);
  3881  void sqlite3RegisterBuiltinFunctions(void);
  3882  void sqlite3RegisterDateTimeFunctions(void);
  3883  void sqlite3RegisterPerConnectionBuiltinFunctions(sqlite3*);
  3884  int sqlite3SafetyCheckOk(sqlite3*);
  3885  int sqlite3SafetyCheckSickOrOk(sqlite3*);
  3886  void sqlite3ChangeCookie(Parse*, int);
  3887  
  3888  #if !defined(SQLITE_OMIT_VIEW) && !defined(SQLITE_OMIT_TRIGGER)
  3889  void sqlite3MaterializeView(Parse*, Table*, Expr*, int);
  3890  #endif
  3891  
  3892  #ifndef SQLITE_OMIT_TRIGGER
  3893    void sqlite3BeginTrigger(Parse*, Token*,Token*,int,int,IdList*,SrcList*,
  3894                             Expr*,int, int);
  3895    void sqlite3FinishTrigger(Parse*, TriggerStep*, Token*);
  3896    void sqlite3DropTrigger(Parse*, SrcList*, int);
  3897    void sqlite3DropTriggerPtr(Parse*, Trigger*);
  3898    Trigger *sqlite3TriggersExist(Parse *, Table*, int, ExprList*, int *pMask);
  3899    Trigger *sqlite3TriggerList(Parse *, Table *);
  3900    void sqlite3CodeRowTrigger(Parse*, Trigger *, int, ExprList*, int, Table *,
  3901                              int, int, int);
  3902    void sqlite3CodeRowTriggerDirect(Parse *, Trigger *, Table *, int, int, int);
  3903    void sqliteViewTriggers(Parse*, Table*, Expr*, int, ExprList*);
  3904    void sqlite3DeleteTriggerStep(sqlite3*, TriggerStep*);
  3905    TriggerStep *sqlite3TriggerSelectStep(sqlite3*,Select*);
  3906    TriggerStep *sqlite3TriggerInsertStep(sqlite3*,Token*, IdList*,
  3907                                          Select*,u8);
  3908    TriggerStep *sqlite3TriggerUpdateStep(sqlite3*,Token*,ExprList*, Expr*, u8);
  3909    TriggerStep *sqlite3TriggerDeleteStep(sqlite3*,Token*, Expr*);
  3910    void sqlite3DeleteTrigger(sqlite3*, Trigger*);
  3911    void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*);
  3912    u32 sqlite3TriggerColmask(Parse*,Trigger*,ExprList*,int,int,Table*,int);
  3913  # define sqlite3ParseToplevel(p) ((p)->pToplevel ? (p)->pToplevel : (p))
  3914  # define sqlite3IsToplevel(p) ((p)->pToplevel==0)
  3915  #else
  3916  # define sqlite3TriggersExist(B,C,D,E,F) 0
  3917  # define sqlite3DeleteTrigger(A,B)
  3918  # define sqlite3DropTriggerPtr(A,B)
  3919  # define sqlite3UnlinkAndDeleteTrigger(A,B,C)
  3920  # define sqlite3CodeRowTrigger(A,B,C,D,E,F,G,H,I)
  3921  # define sqlite3CodeRowTriggerDirect(A,B,C,D,E,F)
  3922  # define sqlite3TriggerList(X, Y) 0
  3923  # define sqlite3ParseToplevel(p) p
  3924  # define sqlite3IsToplevel(p) 1
  3925  # define sqlite3TriggerColmask(A,B,C,D,E,F,G) 0
  3926  #endif
  3927  
  3928  int sqlite3JoinType(Parse*, Token*, Token*, Token*);
  3929  void sqlite3CreateForeignKey(Parse*, ExprList*, Token*, ExprList*, int);
  3930  void sqlite3DeferForeignKey(Parse*, int);
  3931  #ifndef SQLITE_OMIT_AUTHORIZATION
  3932    void sqlite3AuthRead(Parse*,Expr*,Schema*,SrcList*);
  3933    int sqlite3AuthCheck(Parse*,int, const char*, const char*, const char*);
  3934    void sqlite3AuthContextPush(Parse*, AuthContext*, const char*);
  3935    void sqlite3AuthContextPop(AuthContext*);
  3936    int sqlite3AuthReadCol(Parse*, const char *, const char *, int);
  3937  #else
  3938  # define sqlite3AuthRead(a,b,c,d)
  3939  # define sqlite3AuthCheck(a,b,c,d,e)    SQLITE_OK
  3940  # define sqlite3AuthContextPush(a,b,c)
  3941  # define sqlite3AuthContextPop(a)  ((void)(a))
  3942  #endif
  3943  void sqlite3Attach(Parse*, Expr*, Expr*, Expr*);
  3944  void sqlite3Detach(Parse*, Expr*);
  3945  void sqlite3FixInit(DbFixer*, Parse*, int, const char*, const Token*);
  3946  int sqlite3FixSrcList(DbFixer*, SrcList*);
  3947  int sqlite3FixSelect(DbFixer*, Select*);
  3948  int sqlite3FixExpr(DbFixer*, Expr*);
  3949  int sqlite3FixExprList(DbFixer*, ExprList*);
  3950  int sqlite3FixTriggerStep(DbFixer*, TriggerStep*);
  3951  int sqlite3AtoF(const char *z, double*, int, u8);
  3952  int sqlite3GetInt32(const char *, int*);
  3953  int sqlite3Atoi(const char*);
  3954  #ifndef SQLITE_OMIT_UTF16
  3955  int sqlite3Utf16ByteLen(const void *pData, int nChar);
  3956  #endif
  3957  int sqlite3Utf8CharLen(const char *pData, int nByte);
  3958  u32 sqlite3Utf8Read(const u8**);
  3959  LogEst sqlite3LogEst(u64);
  3960  LogEst sqlite3LogEstAdd(LogEst,LogEst);
  3961  #ifndef SQLITE_OMIT_VIRTUALTABLE
  3962  LogEst sqlite3LogEstFromDouble(double);
  3963  #endif
  3964  #if defined(SQLITE_ENABLE_STMT_SCANSTATUS) || \
  3965      defined(SQLITE_ENABLE_STAT3_OR_STAT4) || \
  3966      defined(SQLITE_EXPLAIN_ESTIMATED_ROWS)
  3967  u64 sqlite3LogEstToInt(LogEst);
  3968  #endif
  3969  VList *sqlite3VListAdd(sqlite3*,VList*,const char*,int,int);
  3970  const char *sqlite3VListNumToName(VList*,int);
  3971  int sqlite3VListNameToNum(VList*,const char*,int);
  3972  
  3973  /*
  3974  ** Routines to read and write variable-length integers.  These used to
  3975  ** be defined locally, but now we use the varint routines in the util.c
  3976  ** file.
  3977  */
  3978  int sqlite3PutVarint(unsigned char*, u64);
  3979  u8 sqlite3GetVarint(const unsigned char *, u64 *);
  3980  u8 sqlite3GetVarint32(const unsigned char *, u32 *);
  3981  int sqlite3VarintLen(u64 v);
  3982  
  3983  /*
  3984  ** The common case is for a varint to be a single byte.  They following
  3985  ** macros handle the common case without a procedure call, but then call
  3986  ** the procedure for larger varints.
  3987  */
  3988  #define getVarint32(A,B)  \
  3989    (u8)((*(A)<(u8)0x80)?((B)=(u32)*(A)),1:sqlite3GetVarint32((A),(u32 *)&(B)))
  3990  #define putVarint32(A,B)  \
  3991    (u8)(((u32)(B)<(u32)0x80)?(*(A)=(unsigned char)(B)),1:\
  3992    sqlite3PutVarint((A),(B)))
  3993  #define getVarint    sqlite3GetVarint
  3994  #define putVarint    sqlite3PutVarint
  3995  
  3996  
  3997  const char *sqlite3IndexAffinityStr(sqlite3*, Index*);
  3998  void sqlite3TableAffinity(Vdbe*, Table*, int);
  3999  char sqlite3CompareAffinity(Expr *pExpr, char aff2);
  4000  int sqlite3IndexAffinityOk(Expr *pExpr, char idx_affinity);
  4001  char sqlite3TableColumnAffinity(Table*,int);
  4002  char sqlite3ExprAffinity(Expr *pExpr);
  4003  int sqlite3Atoi64(const char*, i64*, int, u8);
  4004  int sqlite3DecOrHexToI64(const char*, i64*);
  4005  void sqlite3ErrorWithMsg(sqlite3*, int, const char*,...);
  4006  void sqlite3Error(sqlite3*,int);
  4007  void sqlite3SystemError(sqlite3*,int);
  4008  void *sqlite3HexToBlob(sqlite3*, const char *z, int n);
  4009  u8 sqlite3HexToInt(int h);
  4010  int sqlite3TwoPartName(Parse *, Token *, Token *, Token **);
  4011  
  4012  #if defined(SQLITE_NEED_ERR_NAME)
  4013  const char *sqlite3ErrName(int);
  4014  #endif
  4015  
  4016  const char *sqlite3ErrStr(int);
  4017  int sqlite3ReadSchema(Parse *pParse);
  4018  CollSeq *sqlite3FindCollSeq(sqlite3*,u8 enc, const char*,int);
  4019  CollSeq *sqlite3LocateCollSeq(Parse *pParse, const char*zName);
  4020  CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr);
  4021  CollSeq *sqlite3ExprNNCollSeq(Parse *pParse, Expr *pExpr);
  4022  int sqlite3ExprCollSeqMatch(Parse*,Expr*,Expr*);
  4023  Expr *sqlite3ExprAddCollateToken(Parse *pParse, Expr*, const Token*, int);
  4024  Expr *sqlite3ExprAddCollateString(Parse*,Expr*,const char*);
  4025  Expr *sqlite3ExprSkipCollate(Expr*);
  4026  int sqlite3CheckCollSeq(Parse *, CollSeq *);
  4027  int sqlite3CheckObjectName(Parse *, const char *);
  4028  void sqlite3VdbeSetChanges(sqlite3 *, int);
  4029  int sqlite3AddInt64(i64*,i64);
  4030  int sqlite3SubInt64(i64*,i64);
  4031  int sqlite3MulInt64(i64*,i64);
  4032  int sqlite3AbsInt32(int);
  4033  #ifdef SQLITE_ENABLE_8_3_NAMES
  4034  void sqlite3FileSuffix3(const char*, char*);
  4035  #else
  4036  # define sqlite3FileSuffix3(X,Y)
  4037  #endif
  4038  u8 sqlite3GetBoolean(const char *z,u8);
  4039  
  4040  const void *sqlite3ValueText(sqlite3_value*, u8);
  4041  int sqlite3ValueBytes(sqlite3_value*, u8);
  4042  void sqlite3ValueSetStr(sqlite3_value*, int, const void *,u8,
  4043                          void(*)(void*));
  4044  void sqlite3ValueSetNull(sqlite3_value*);
  4045  void sqlite3ValueFree(sqlite3_value*);
  4046  sqlite3_value *sqlite3ValueNew(sqlite3 *);
  4047  #ifndef SQLITE_OMIT_UTF16
  4048  char *sqlite3Utf16to8(sqlite3 *, const void*, int, u8);
  4049  #endif
  4050  int sqlite3ValueFromExpr(sqlite3 *, Expr *, u8, u8, sqlite3_value **);
  4051  void sqlite3ValueApplyAffinity(sqlite3_value *, u8, u8);
  4052  #ifndef SQLITE_AMALGAMATION
  4053  extern const unsigned char sqlite3OpcodeProperty[];
  4054  extern const char sqlite3StrBINARY[];
  4055  extern const unsigned char sqlite3UpperToLower[];
  4056  extern const unsigned char sqlite3CtypeMap[];
  4057  extern const Token sqlite3IntTokens[];
  4058  extern SQLITE_WSD struct Sqlite3Config sqlite3Config;
  4059  extern FuncDefHash sqlite3BuiltinFunctions;
  4060  #ifndef SQLITE_OMIT_WSD
  4061  extern int sqlite3PendingByte;
  4062  #endif
  4063  #endif
  4064  void sqlite3RootPageMoved(sqlite3*, int, int, int);
  4065  void sqlite3Reindex(Parse*, Token*, Token*);
  4066  void sqlite3AlterFunctions(void);
  4067  void sqlite3AlterRenameTable(Parse*, SrcList*, Token*);
  4068  int sqlite3GetToken(const unsigned char *, int *);
  4069  void sqlite3NestedParse(Parse*, const char*, ...);
  4070  void sqlite3ExpirePreparedStatements(sqlite3*);
  4071  int sqlite3CodeSubselect(Parse*, Expr *, int, int);
  4072  void sqlite3SelectPrep(Parse*, Select*, NameContext*);
  4073  void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p);
  4074  int sqlite3MatchSpanName(const char*, const char*, const char*, const char*);
  4075  int sqlite3ResolveExprNames(NameContext*, Expr*);
  4076  int sqlite3ResolveExprListNames(NameContext*, ExprList*);
  4077  void sqlite3ResolveSelectNames(Parse*, Select*, NameContext*);
  4078  void sqlite3ResolveSelfReference(Parse*,Table*,int,Expr*,ExprList*);
  4079  int sqlite3ResolveOrderGroupBy(Parse*, Select*, ExprList*, const char*);
  4080  void sqlite3ColumnDefault(Vdbe *, Table *, int, int);
  4081  void sqlite3AlterFinishAddColumn(Parse *, Token *);
  4082  void sqlite3AlterBeginAddColumn(Parse *, SrcList *);
  4083  CollSeq *sqlite3GetCollSeq(Parse*, u8, CollSeq *, const char*);
  4084  char sqlite3AffinityType(const char*, u8*);
  4085  void sqlite3Analyze(Parse*, Token*, Token*);
  4086  int sqlite3InvokeBusyHandler(BusyHandler*);
  4087  int sqlite3FindDb(sqlite3*, Token*);
  4088  int sqlite3FindDbName(sqlite3 *, const char *);
  4089  int sqlite3AnalysisLoad(sqlite3*,int iDB);
  4090  void sqlite3DeleteIndexSamples(sqlite3*,Index*);
  4091  void sqlite3DefaultRowEst(Index*);
  4092  void sqlite3RegisterLikeFunctions(sqlite3*, int);
  4093  int sqlite3IsLikeFunction(sqlite3*,Expr*,int*,char*);
  4094  void sqlite3SchemaClear(void *);
  4095  Schema *sqlite3SchemaGet(sqlite3 *, Btree *);
  4096  int sqlite3SchemaToIndex(sqlite3 *db, Schema *);
  4097  KeyInfo *sqlite3KeyInfoAlloc(sqlite3*,int,int);
  4098  void sqlite3KeyInfoUnref(KeyInfo*);
  4099  KeyInfo *sqlite3KeyInfoRef(KeyInfo*);
  4100  KeyInfo *sqlite3KeyInfoOfIndex(Parse*, Index*);
  4101  #ifdef SQLITE_DEBUG
  4102  int sqlite3KeyInfoIsWriteable(KeyInfo*);
  4103  #endif
  4104  int sqlite3CreateFunc(sqlite3 *, const char *, int, int, void *,
  4105    void (*)(sqlite3_context*,int,sqlite3_value **),
  4106    void (*)(sqlite3_context*,int,sqlite3_value **), void (*)(sqlite3_context*),
  4107    FuncDestructor *pDestructor
  4108  );
  4109  void sqlite3OomFault(sqlite3*);
  4110  void sqlite3OomClear(sqlite3*);
  4111  int sqlite3ApiExit(sqlite3 *db, int);
  4112  int sqlite3OpenTempDatabase(Parse *);
  4113  
  4114  void sqlite3StrAccumInit(StrAccum*, sqlite3*, char*, int, int);
  4115  void sqlite3StrAccumAppend(StrAccum*,const char*,int);
  4116  void sqlite3StrAccumAppendAll(StrAccum*,const char*);
  4117  void sqlite3AppendChar(StrAccum*,int,char);
  4118  char *sqlite3StrAccumFinish(StrAccum*);
  4119  void sqlite3StrAccumReset(StrAccum*);
  4120  void sqlite3SelectDestInit(SelectDest*,int,int);
  4121  Expr *sqlite3CreateColumnExpr(sqlite3 *, SrcList *, int, int);
  4122  
  4123  void sqlite3BackupRestart(sqlite3_backup *);
  4124  void sqlite3BackupUpdate(sqlite3_backup *, Pgno, const u8 *);
  4125  
  4126  #ifndef SQLITE_OMIT_SUBQUERY
  4127  int sqlite3ExprCheckIN(Parse*, Expr*);
  4128  #else
  4129  # define sqlite3ExprCheckIN(x,y) SQLITE_OK
  4130  #endif
  4131  
  4132  #ifdef SQLITE_ENABLE_STAT3_OR_STAT4
  4133  void sqlite3AnalyzeFunctions(void);
  4134  int sqlite3Stat4ProbeSetValue(
  4135      Parse*,Index*,UnpackedRecord**,Expr*,int,int,int*);
  4136  int sqlite3Stat4ValueFromExpr(Parse*, Expr*, u8, sqlite3_value**);
  4137  void sqlite3Stat4ProbeFree(UnpackedRecord*);
  4138  int sqlite3Stat4Column(sqlite3*, const void*, int, int, sqlite3_value**);
  4139  char sqlite3IndexColumnAffinity(sqlite3*, Index*, int);
  4140  #endif
  4141  
  4142  /*
  4143  ** The interface to the LEMON-generated parser
  4144  */
  4145  #ifndef SQLITE_AMALGAMATION
  4146    void *sqlite3ParserAlloc(void*(*)(u64));
  4147    void sqlite3ParserFree(void*, void(*)(void*));
  4148  #endif
  4149  void sqlite3Parser(void*, int, Token, Parse*);
  4150  #ifdef YYTRACKMAXSTACKDEPTH
  4151    int sqlite3ParserStackPeak(void*);
  4152  #endif
  4153  
  4154  void sqlite3AutoLoadExtensions(sqlite3*);
  4155  #ifndef SQLITE_OMIT_LOAD_EXTENSION
  4156    void sqlite3CloseExtensions(sqlite3*);
  4157  #else
  4158  # define sqlite3CloseExtensions(X)
  4159  #endif
  4160  
  4161  #ifndef SQLITE_OMIT_SHARED_CACHE
  4162    void sqlite3TableLock(Parse *, int, int, u8, const char *);
  4163  #else
  4164    #define sqlite3TableLock(v,w,x,y,z)
  4165  #endif
  4166  
  4167  #ifdef SQLITE_TEST
  4168    int sqlite3Utf8To8(unsigned char*);
  4169  #endif
  4170  
  4171  #ifdef SQLITE_OMIT_VIRTUALTABLE
  4172  #  define sqlite3VtabClear(Y)
  4173  #  define sqlite3VtabSync(X,Y) SQLITE_OK
  4174  #  define sqlite3VtabRollback(X)
  4175  #  define sqlite3VtabCommit(X)
  4176  #  define sqlite3VtabInSync(db) 0
  4177  #  define sqlite3VtabLock(X)
  4178  #  define sqlite3VtabUnlock(X)
  4179  #  define sqlite3VtabUnlockList(X)
  4180  #  define sqlite3VtabSavepoint(X, Y, Z) SQLITE_OK
  4181  #  define sqlite3GetVTable(X,Y)  ((VTable*)0)
  4182  #else
  4183     void sqlite3VtabClear(sqlite3 *db, Table*);
  4184     void sqlite3VtabDisconnect(sqlite3 *db, Table *p);
  4185     int sqlite3VtabSync(sqlite3 *db, Vdbe*);
  4186     int sqlite3VtabRollback(sqlite3 *db);
  4187     int sqlite3VtabCommit(sqlite3 *db);
  4188     void sqlite3VtabLock(VTable *);
  4189     void sqlite3VtabUnlock(VTable *);
  4190     void sqlite3VtabUnlockList(sqlite3*);
  4191     int sqlite3VtabSavepoint(sqlite3 *, int, int);
  4192     void sqlite3VtabImportErrmsg(Vdbe*, sqlite3_vtab*);
  4193     VTable *sqlite3GetVTable(sqlite3*, Table*);
  4194     Module *sqlite3VtabCreateModule(
  4195       sqlite3*,
  4196       const char*,
  4197       const sqlite3_module*,
  4198       void*,
  4199       void(*)(void*)
  4200     );
  4201  #  define sqlite3VtabInSync(db) ((db)->nVTrans>0 && (db)->aVTrans==0)
  4202  #endif
  4203  int sqlite3VtabEponymousTableInit(Parse*,Module*);
  4204  void sqlite3VtabEponymousTableClear(sqlite3*,Module*);
  4205  void sqlite3VtabMakeWritable(Parse*,Table*);
  4206  void sqlite3VtabBeginParse(Parse*, Token*, Token*, Token*, int);
  4207  void sqlite3VtabFinishParse(Parse*, Token*);
  4208  void sqlite3VtabArgInit(Parse*);
  4209  void sqlite3VtabArgExtend(Parse*, Token*);
  4210  int sqlite3VtabCallCreate(sqlite3*, int, const char *, char **);
  4211  int sqlite3VtabCallConnect(Parse*, Table*);
  4212  int sqlite3VtabCallDestroy(sqlite3*, int, const char *);
  4213  int sqlite3VtabBegin(sqlite3 *, VTable *);
  4214  FuncDef *sqlite3VtabOverloadFunction(sqlite3 *,FuncDef*, int nArg, Expr*);
  4215  void sqlite3InvalidFunction(sqlite3_context*,int,sqlite3_value**);
  4216  sqlite3_int64 sqlite3StmtCurrentTime(sqlite3_context*);
  4217  int sqlite3VdbeParameterIndex(Vdbe*, const char*, int);
  4218  int sqlite3TransferBindings(sqlite3_stmt *, sqlite3_stmt *);
  4219  void sqlite3ParserReset(Parse*);
  4220  int sqlite3Reprepare(Vdbe*);
  4221  void sqlite3ExprListCheckLength(Parse*, ExprList*, const char*);
  4222  CollSeq *sqlite3BinaryCompareCollSeq(Parse *, Expr *, Expr *);
  4223  int sqlite3TempInMemory(const sqlite3*);
  4224  const char *sqlite3JournalModename(int);
  4225  #ifndef SQLITE_OMIT_WAL
  4226    int sqlite3Checkpoint(sqlite3*, int, int, int*, int*);
  4227    int sqlite3WalDefaultHook(void*,sqlite3*,const char*,int);
  4228  #endif
  4229  #ifndef SQLITE_OMIT_CTE
  4230    With *sqlite3WithAdd(Parse*,With*,Token*,ExprList*,Select*);
  4231    void sqlite3WithDelete(sqlite3*,With*);
  4232    void sqlite3WithPush(Parse*, With*, u8);
  4233  #else
  4234  #define sqlite3WithPush(x,y,z)
  4235  #define sqlite3WithDelete(x,y)
  4236  #endif
  4237  
  4238  /* Declarations for functions in fkey.c. All of these are replaced by
  4239  ** no-op macros if OMIT_FOREIGN_KEY is defined. In this case no foreign
  4240  ** key functionality is available. If OMIT_TRIGGER is defined but
  4241  ** OMIT_FOREIGN_KEY is not, only some of the functions are no-oped. In
  4242  ** this case foreign keys are parsed, but no other functionality is
  4243  ** provided (enforcement of FK constraints requires the triggers sub-system).
  4244  */
  4245  #if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
  4246    void sqlite3FkCheck(Parse*, Table*, int, int, int*, int);
  4247    void sqlite3FkDropTable(Parse*, SrcList *, Table*);
  4248    void sqlite3FkActions(Parse*, Table*, ExprList*, int, int*, int);
  4249    int sqlite3FkRequired(Parse*, Table*, int*, int);
  4250    u32 sqlite3FkOldmask(Parse*, Table*);
  4251    FKey *sqlite3FkReferences(Table *);
  4252  #else
  4253    #define sqlite3FkActions(a,b,c,d,e,f)
  4254    #define sqlite3FkCheck(a,b,c,d,e,f)
  4255    #define sqlite3FkDropTable(a,b,c)
  4256    #define sqlite3FkOldmask(a,b)         0
  4257    #define sqlite3FkRequired(a,b,c,d)    0
  4258    #define sqlite3FkReferences(a)        0
  4259  #endif
  4260  #ifndef SQLITE_OMIT_FOREIGN_KEY
  4261    void sqlite3FkDelete(sqlite3 *, Table*);
  4262    int sqlite3FkLocateIndex(Parse*,Table*,FKey*,Index**,int**);
  4263  #else
  4264    #define sqlite3FkDelete(a,b)
  4265    #define sqlite3FkLocateIndex(a,b,c,d,e)
  4266  #endif
  4267  
  4268  
  4269  /*
  4270  ** Available fault injectors.  Should be numbered beginning with 0.
  4271  */
  4272  #define SQLITE_FAULTINJECTOR_MALLOC     0
  4273  #define SQLITE_FAULTINJECTOR_COUNT      1
  4274  
  4275  /*
  4276  ** The interface to the code in fault.c used for identifying "benign"
  4277  ** malloc failures. This is only present if SQLITE_UNTESTABLE
  4278  ** is not defined.
  4279  */
  4280  #ifndef SQLITE_UNTESTABLE
  4281    void sqlite3BeginBenignMalloc(void);
  4282    void sqlite3EndBenignMalloc(void);
  4283  #else
  4284    #define sqlite3BeginBenignMalloc()
  4285    #define sqlite3EndBenignMalloc()
  4286  #endif
  4287  
  4288  /*
  4289  ** Allowed return values from sqlite3FindInIndex()
  4290  */
  4291  #define IN_INDEX_ROWID        1   /* Search the rowid of the table */
  4292  #define IN_INDEX_EPH          2   /* Search an ephemeral b-tree */
  4293  #define IN_INDEX_INDEX_ASC    3   /* Existing index ASCENDING */
  4294  #define IN_INDEX_INDEX_DESC   4   /* Existing index DESCENDING */
  4295  #define IN_INDEX_NOOP         5   /* No table available. Use comparisons */
  4296  /*
  4297  ** Allowed flags for the 3rd parameter to sqlite3FindInIndex().
  4298  */
  4299  #define IN_INDEX_NOOP_OK     0x0001  /* OK to return IN_INDEX_NOOP */
  4300  #define IN_INDEX_MEMBERSHIP  0x0002  /* IN operator used for membership test */
  4301  #define IN_INDEX_LOOP        0x0004  /* IN operator used as a loop */
  4302  int sqlite3FindInIndex(Parse *, Expr *, u32, int*, int*);
  4303  
  4304  int sqlite3JournalOpen(sqlite3_vfs *, const char *, sqlite3_file *, int, int);
  4305  int sqlite3JournalSize(sqlite3_vfs *);
  4306  #if defined(SQLITE_ENABLE_ATOMIC_WRITE) \
  4307   || defined(SQLITE_ENABLE_BATCH_ATOMIC_WRITE)
  4308    int sqlite3JournalCreate(sqlite3_file *);
  4309  #endif
  4310  
  4311  int sqlite3JournalIsInMemory(sqlite3_file *p);
  4312  void sqlite3MemJournalOpen(sqlite3_file *);
  4313  
  4314  void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p);
  4315  #if SQLITE_MAX_EXPR_DEPTH>0
  4316    int sqlite3SelectExprHeight(Select *);
  4317    int sqlite3ExprCheckHeight(Parse*, int);
  4318  #else
  4319    #define sqlite3SelectExprHeight(x) 0
  4320    #define sqlite3ExprCheckHeight(x,y)
  4321  #endif
  4322  
  4323  u32 sqlite3Get4byte(const u8*);
  4324  void sqlite3Put4byte(u8*, u32);
  4325  
  4326  #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
  4327    void sqlite3ConnectionBlocked(sqlite3 *, sqlite3 *);
  4328    void sqlite3ConnectionUnlocked(sqlite3 *db);
  4329    void sqlite3ConnectionClosed(sqlite3 *db);
  4330  #else
  4331    #define sqlite3ConnectionBlocked(x,y)
  4332    #define sqlite3ConnectionUnlocked(x)
  4333    #define sqlite3ConnectionClosed(x)
  4334  #endif
  4335  
  4336  #ifdef SQLITE_DEBUG
  4337    void sqlite3ParserTrace(FILE*, char *);
  4338  #endif
  4339  
  4340  /*
  4341  ** If the SQLITE_ENABLE IOTRACE exists then the global variable
  4342  ** sqlite3IoTrace is a pointer to a printf-like routine used to
  4343  ** print I/O tracing messages.
  4344  */
  4345  #ifdef SQLITE_ENABLE_IOTRACE
  4346  # define IOTRACE(A)  if( sqlite3IoTrace ){ sqlite3IoTrace A; }
  4347    void sqlite3VdbeIOTraceSql(Vdbe*);
  4348  SQLITE_API SQLITE_EXTERN void (SQLITE_CDECL *sqlite3IoTrace)(const char*,...);
  4349  #else
  4350  # define IOTRACE(A)
  4351  # define sqlite3VdbeIOTraceSql(X)
  4352  #endif
  4353  
  4354  /*
  4355  ** These routines are available for the mem2.c debugging memory allocator
  4356  ** only.  They are used to verify that different "types" of memory
  4357  ** allocations are properly tracked by the system.
  4358  **
  4359  ** sqlite3MemdebugSetType() sets the "type" of an allocation to one of
  4360  ** the MEMTYPE_* macros defined below.  The type must be a bitmask with
  4361  ** a single bit set.
  4362  **
  4363  ** sqlite3MemdebugHasType() returns true if any of the bits in its second
  4364  ** argument match the type set by the previous sqlite3MemdebugSetType().
  4365  ** sqlite3MemdebugHasType() is intended for use inside assert() statements.
  4366  **
  4367  ** sqlite3MemdebugNoType() returns true if none of the bits in its second
  4368  ** argument match the type set by the previous sqlite3MemdebugSetType().
  4369  **
  4370  ** Perhaps the most important point is the difference between MEMTYPE_HEAP
  4371  ** and MEMTYPE_LOOKASIDE.  If an allocation is MEMTYPE_LOOKASIDE, that means
  4372  ** it might have been allocated by lookaside, except the allocation was
  4373  ** too large or lookaside was already full.  It is important to verify
  4374  ** that allocations that might have been satisfied by lookaside are not
  4375  ** passed back to non-lookaside free() routines.  Asserts such as the
  4376  ** example above are placed on the non-lookaside free() routines to verify
  4377  ** this constraint.
  4378  **
  4379  ** All of this is no-op for a production build.  It only comes into
  4380  ** play when the SQLITE_MEMDEBUG compile-time option is used.
  4381  */
  4382  #ifdef SQLITE_MEMDEBUG
  4383    void sqlite3MemdebugSetType(void*,u8);
  4384    int sqlite3MemdebugHasType(void*,u8);
  4385    int sqlite3MemdebugNoType(void*,u8);
  4386  #else
  4387  # define sqlite3MemdebugSetType(X,Y)  /* no-op */
  4388  # define sqlite3MemdebugHasType(X,Y)  1
  4389  # define sqlite3MemdebugNoType(X,Y)   1
  4390  #endif
  4391  #define MEMTYPE_HEAP       0x01  /* General heap allocations */
  4392  #define MEMTYPE_LOOKASIDE  0x02  /* Heap that might have been lookaside */
  4393  #define MEMTYPE_PCACHE     0x04  /* Page cache allocations */
  4394  
  4395  /*
  4396  ** Threading interface
  4397  */
  4398  #if SQLITE_MAX_WORKER_THREADS>0
  4399  int sqlite3ThreadCreate(SQLiteThread**,void*(*)(void*),void*);
  4400  int sqlite3ThreadJoin(SQLiteThread*, void**);
  4401  #endif
  4402  
  4403  #if defined(SQLITE_ENABLE_DBPAGE_VTAB) || defined(SQLITE_TEST)
  4404  int sqlite3DbpageRegister(sqlite3*);
  4405  #endif
  4406  #if defined(SQLITE_ENABLE_DBSTAT_VTAB) || defined(SQLITE_TEST)
  4407  int sqlite3DbstatRegister(sqlite3*);
  4408  #endif
  4409  
  4410  int sqlite3ExprVectorSize(Expr *pExpr);
  4411  int sqlite3ExprIsVector(Expr *pExpr);
  4412  Expr *sqlite3VectorFieldSubexpr(Expr*, int);
  4413  Expr *sqlite3ExprForVectorField(Parse*,Expr*,int);
  4414  void sqlite3VectorErrorMsg(Parse*, Expr*);
  4415  
  4416  #ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
  4417  const char **sqlite3CompileOptions(int *pnOpt);
  4418  #endif
  4419  
  4420  #endif /* SQLITEINT_H */