extensions/sqlite/sqlite-source/sqliteInt.h
author Scott Ehlert <ds@alliedmods.net>
Sun Mar 30 07:00:22 2008 +0000 (2008-03-30)
changeset 1952 b7aa2b626807
permissions -rw-r--r--
Spring Cleaning, Part Ichi (1)
Various minor things done to project files
Updated sample extension project file and updated makefile to the new unified version (more changes likely on the way)
Updated regex project file and makefile
     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 ** @(#) $Id$
    15 */
    16 #ifndef _SQLITEINT_H_
    17 #define _SQLITEINT_H_
    18 #include "sqliteLimit.h"
    19 
    20 /*
    21 ** For testing purposes, the various size limit constants are really
    22 ** variables that we can modify in the testfixture.
    23 */
    24 #ifdef SQLITE_TEST
    25   #undef SQLITE_MAX_LENGTH
    26   #undef SQLITE_MAX_COLUMN
    27   #undef SQLITE_MAX_SQL_LENGTH
    28   #undef SQLITE_MAX_EXPR_DEPTH
    29   #undef SQLITE_MAX_COMPOUND_SELECT
    30   #undef SQLITE_MAX_VDBE_OP
    31   #undef SQLITE_MAX_FUNCTION_ARG
    32   #undef SQLITE_MAX_VARIABLE_NUMBER
    33   #undef SQLITE_MAX_PAGE_SIZE
    34   #undef SQLITE_MAX_PAGE_COUNT
    35   #undef SQLITE_MAX_LIKE_PATTERN_LENGTH
    36 
    37   #define SQLITE_MAX_LENGTH              sqlite3MAX_LENGTH
    38   #define SQLITE_MAX_COLUMN              sqlite3MAX_COLUMN
    39   #define SQLITE_MAX_SQL_LENGTH          sqlite3MAX_SQL_LENGTH
    40   #define SQLITE_MAX_EXPR_DEPTH          sqlite3MAX_EXPR_DEPTH
    41   #define SQLITE_MAX_COMPOUND_SELECT     sqlite3MAX_COMPOUND_SELECT
    42   #define SQLITE_MAX_VDBE_OP             sqlite3MAX_VDBE_OP
    43   #define SQLITE_MAX_FUNCTION_ARG        sqlite3MAX_FUNCTION_ARG
    44   #define SQLITE_MAX_VARIABLE_NUMBER     sqlite3MAX_VARIABLE_NUMBER
    45   #define SQLITE_MAX_PAGE_SIZE           sqlite3MAX_PAGE_SIZE
    46   #define SQLITE_MAX_PAGE_COUNT          sqlite3MAX_PAGE_COUNT
    47   #define SQLITE_MAX_LIKE_PATTERN_LENGTH sqlite3MAX_LIKE_PATTERN_LENGTH
    48 
    49   extern int sqlite3MAX_LENGTH;
    50   extern int sqlite3MAX_COLUMN;
    51   extern int sqlite3MAX_SQL_LENGTH;
    52   extern int sqlite3MAX_EXPR_DEPTH;
    53   extern int sqlite3MAX_COMPOUND_SELECT;
    54   extern int sqlite3MAX_VDBE_OP;
    55   extern int sqlite3MAX_FUNCTION_ARG;
    56   extern int sqlite3MAX_VARIABLE_NUMBER;
    57   extern int sqlite3MAX_PAGE_SIZE;
    58   extern int sqlite3MAX_PAGE_COUNT;
    59   extern int sqlite3MAX_LIKE_PATTERN_LENGTH;
    60 #endif
    61 
    62 
    63 /*
    64 ** The SQLITE_THREADSAFE macro must be defined as either 0 or 1.
    65 ** Older versions of SQLite used an optional THREADSAFE macro.
    66 ** We support that for legacy
    67 */
    68 #if !defined(SQLITE_THREADSAFE)
    69 #if defined(THREADSAFE)
    70 # define SQLITE_THREADSAFE THREADSAFE
    71 #else
    72 # define SQLITE_THREADSAFE 1
    73 #endif
    74 #endif
    75 
    76 /*
    77 ** We need to define _XOPEN_SOURCE as follows in order to enable
    78 ** recursive mutexes on most unix systems.  But Mac OS X is different.
    79 ** The _XOPEN_SOURCE define causes problems for Mac OS X we are told,
    80 ** so it is omitted there.  See ticket #2673.
    81 **
    82 ** Later we learn that _XOPEN_SOURCE is poorly or incorrectly
    83 ** implemented on some systems.  So we avoid defining it at all
    84 ** if it is already defined or if it is unneeded because we are
    85 ** not doing a threadsafe build.  Ticket #2681.
    86 */
    87 #if !defined(_XOPEN_SOURCE) && !defined(__MACOS__) && SQLITE_THREADSAFE
    88 #  define _XOPEN_SOURCE 500  /* Needed to enable pthread recursive mutexes */
    89 #endif
    90 
    91 #if defined(SQLITE_TCL) || defined(TCLSH)
    92 # include <tcl.h>
    93 #endif
    94 
    95 /*
    96 ** Many people are failing to set -DNDEBUG=1 when compiling SQLite.
    97 ** Setting NDEBUG makes the code smaller and run faster.  So the following
    98 ** lines are added to automatically set NDEBUG unless the -DSQLITE_DEBUG=1
    99 ** option is set.  Thus NDEBUG becomes an opt-in rather than an opt-out
   100 ** feature.
   101 */
   102 #if !defined(NDEBUG) && !defined(SQLITE_DEBUG) 
   103 # define NDEBUG 1
   104 #endif
   105 
   106 /*
   107 ** These #defines should enable >2GB file support on Posix if the
   108 ** underlying operating system supports it.  If the OS lacks
   109 ** large file support, or if the OS is windows, these should be no-ops.
   110 **
   111 ** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
   112 ** on the compiler command line.  This is necessary if you are compiling
   113 ** on a recent machine (ex: RedHat 7.2) but you want your code to work
   114 ** on an older machine (ex: RedHat 6.0).  If you compile on RedHat 7.2
   115 ** without this option, LFS is enable.  But LFS does not exist in the kernel
   116 ** in RedHat 6.0, so the code won't work.  Hence, for maximum binary
   117 ** portability you should omit LFS.
   118 **
   119 ** Similar is true for MacOS.  LFS is only supported on MacOS 9 and later.
   120 */
   121 #ifndef SQLITE_DISABLE_LFS
   122 # define _LARGE_FILE       1
   123 # ifndef _FILE_OFFSET_BITS
   124 #   define _FILE_OFFSET_BITS 64
   125 # endif
   126 # define _LARGEFILE_SOURCE 1
   127 #endif
   128 
   129 #include "sqlite3.h"
   130 #include "hash.h"
   131 #include "parse.h"
   132 #include <stdio.h>
   133 #include <stdlib.h>
   134 #include <string.h>
   135 #include <assert.h>
   136 #include <stddef.h>
   137 
   138 #define sqlite3_isnan(X)  ((X)!=(X))
   139 
   140 /*
   141 ** If compiling for a processor that lacks floating point support,
   142 ** substitute integer for floating-point
   143 */
   144 #ifdef SQLITE_OMIT_FLOATING_POINT
   145 # define double sqlite_int64
   146 # define LONGDOUBLE_TYPE sqlite_int64
   147 # ifndef SQLITE_BIG_DBL
   148 #   define SQLITE_BIG_DBL (0x7fffffffffffffff)
   149 # endif
   150 # define SQLITE_OMIT_DATETIME_FUNCS 1
   151 # define SQLITE_OMIT_TRACE 1
   152 # undef SQLITE_MIXED_ENDIAN_64BIT_FLOAT
   153 #endif
   154 #ifndef SQLITE_BIG_DBL
   155 # define SQLITE_BIG_DBL (1e99)
   156 #endif
   157 
   158 /*
   159 ** OMIT_TEMPDB is set to 1 if SQLITE_OMIT_TEMPDB is defined, or 0
   160 ** afterward. Having this macro allows us to cause the C compiler 
   161 ** to omit code used by TEMP tables without messy #ifndef statements.
   162 */
   163 #ifdef SQLITE_OMIT_TEMPDB
   164 #define OMIT_TEMPDB 1
   165 #else
   166 #define OMIT_TEMPDB 0
   167 #endif
   168 
   169 /*
   170 ** If the following macro is set to 1, then NULL values are considered
   171 ** distinct when determining whether or not two entries are the same
   172 ** in a UNIQUE index.  This is the way PostgreSQL, Oracle, DB2, MySQL,
   173 ** OCELOT, and Firebird all work.  The SQL92 spec explicitly says this
   174 ** is the way things are suppose to work.
   175 **
   176 ** If the following macro is set to 0, the NULLs are indistinct for
   177 ** a UNIQUE index.  In this mode, you can only have a single NULL entry
   178 ** for a column declared UNIQUE.  This is the way Informix and SQL Server
   179 ** work.
   180 */
   181 #define NULL_DISTINCT_FOR_UNIQUE 1
   182 
   183 /*
   184 ** The "file format" number is an integer that is incremented whenever
   185 ** the VDBE-level file format changes.  The following macros define the
   186 ** the default file format for new databases and the maximum file format
   187 ** that the library can read.
   188 */
   189 #define SQLITE_MAX_FILE_FORMAT 4
   190 #ifndef SQLITE_DEFAULT_FILE_FORMAT
   191 # define SQLITE_DEFAULT_FILE_FORMAT 1
   192 #endif
   193 
   194 /*
   195 ** Provide a default value for TEMP_STORE in case it is not specified
   196 ** on the command-line
   197 */
   198 #ifndef TEMP_STORE
   199 # define TEMP_STORE 1
   200 #endif
   201 
   202 /*
   203 ** GCC does not define the offsetof() macro so we'll have to do it
   204 ** ourselves.
   205 */
   206 #ifndef offsetof
   207 #define offsetof(STRUCTURE,FIELD) ((int)((char*)&((STRUCTURE*)0)->FIELD))
   208 #endif
   209 
   210 /*
   211 ** Check to see if this machine uses EBCDIC.  (Yes, believe it or
   212 ** not, there are still machines out there that use EBCDIC.)
   213 */
   214 #if 'A' == '\301'
   215 # define SQLITE_EBCDIC 1
   216 #else
   217 # define SQLITE_ASCII 1
   218 #endif
   219 
   220 /*
   221 ** Integers of known sizes.  These typedefs might change for architectures
   222 ** where the sizes very.  Preprocessor macros are available so that the
   223 ** types can be conveniently redefined at compile-type.  Like this:
   224 **
   225 **         cc '-DUINTPTR_TYPE=long long int' ...
   226 */
   227 #ifndef UINT32_TYPE
   228 # define UINT32_TYPE unsigned int
   229 #endif
   230 #ifndef UINT16_TYPE
   231 # define UINT16_TYPE unsigned short int
   232 #endif
   233 #ifndef INT16_TYPE
   234 # define INT16_TYPE short int
   235 #endif
   236 #ifndef UINT8_TYPE
   237 # define UINT8_TYPE unsigned char
   238 #endif
   239 #ifndef INT8_TYPE
   240 # define INT8_TYPE signed char
   241 #endif
   242 #ifndef LONGDOUBLE_TYPE
   243 # define LONGDOUBLE_TYPE long double
   244 #endif
   245 typedef sqlite_int64 i64;          /* 8-byte signed integer */
   246 typedef sqlite_uint64 u64;         /* 8-byte unsigned integer */
   247 typedef UINT32_TYPE u32;           /* 4-byte unsigned integer */
   248 typedef UINT16_TYPE u16;           /* 2-byte unsigned integer */
   249 typedef INT16_TYPE i16;            /* 2-byte signed integer */
   250 typedef UINT8_TYPE u8;             /* 1-byte unsigned integer */
   251 typedef UINT8_TYPE i8;             /* 1-byte signed integer */
   252 
   253 /*
   254 ** Macros to determine whether the machine is big or little endian,
   255 ** evaluated at runtime.
   256 */
   257 #ifdef SQLITE_AMALGAMATION
   258 const int sqlite3One;
   259 #else
   260 extern const int sqlite3one;
   261 #endif
   262 #if defined(i386) || defined(__i386__) || defined(_M_IX86)
   263 # define SQLITE_BIGENDIAN    0
   264 # define SQLITE_LITTLEENDIAN 1
   265 # define SQLITE_UTF16NATIVE  SQLITE_UTF16LE
   266 #else
   267 # define SQLITE_BIGENDIAN    (*(char *)(&sqlite3one)==0)
   268 # define SQLITE_LITTLEENDIAN (*(char *)(&sqlite3one)==1)
   269 # define SQLITE_UTF16NATIVE (SQLITE_BIGENDIAN?SQLITE_UTF16BE:SQLITE_UTF16LE)
   270 #endif
   271 
   272 /*
   273 ** An instance of the following structure is used to store the busy-handler
   274 ** callback for a given sqlite handle. 
   275 **
   276 ** The sqlite.busyHandler member of the sqlite struct contains the busy
   277 ** callback for the database handle. Each pager opened via the sqlite
   278 ** handle is passed a pointer to sqlite.busyHandler. The busy-handler
   279 ** callback is currently invoked only from within pager.c.
   280 */
   281 typedef struct BusyHandler BusyHandler;
   282 struct BusyHandler {
   283   int (*xFunc)(void *,int);  /* The busy callback */
   284   void *pArg;                /* First arg to busy callback */
   285   int nBusy;                 /* Incremented with each busy call */
   286 };
   287 
   288 /*
   289 ** Defer sourcing vdbe.h and btree.h until after the "u8" and 
   290 ** "BusyHandler typedefs.
   291 */
   292 #include "btree.h"
   293 #include "vdbe.h"
   294 #include "pager.h"
   295 
   296 
   297 /*
   298 ** Name of the master database table.  The master database table
   299 ** is a special table that holds the names and attributes of all
   300 ** user tables and indices.
   301 */
   302 #define MASTER_NAME       "sqlite_master"
   303 #define TEMP_MASTER_NAME  "sqlite_temp_master"
   304 
   305 /*
   306 ** The root-page of the master database table.
   307 */
   308 #define MASTER_ROOT       1
   309 
   310 /*
   311 ** The name of the schema table.
   312 */
   313 #define SCHEMA_TABLE(x)  ((!OMIT_TEMPDB)&&(x==1)?TEMP_MASTER_NAME:MASTER_NAME)
   314 
   315 /*
   316 ** A convenience macro that returns the number of elements in
   317 ** an array.
   318 */
   319 #define ArraySize(X)    (sizeof(X)/sizeof(X[0]))
   320 
   321 /*
   322 ** Forward references to structures
   323 */
   324 typedef struct AggInfo AggInfo;
   325 typedef struct AuthContext AuthContext;
   326 typedef struct CollSeq CollSeq;
   327 typedef struct Column Column;
   328 typedef struct Db Db;
   329 typedef struct Schema Schema;
   330 typedef struct Expr Expr;
   331 typedef struct ExprList ExprList;
   332 typedef struct FKey FKey;
   333 typedef struct FuncDef FuncDef;
   334 typedef struct IdList IdList;
   335 typedef struct Index Index;
   336 typedef struct KeyClass KeyClass;
   337 typedef struct KeyInfo KeyInfo;
   338 typedef struct Module Module;
   339 typedef struct NameContext NameContext;
   340 typedef struct Parse Parse;
   341 typedef struct Select Select;
   342 typedef struct SrcList SrcList;
   343 typedef struct Table Table;
   344 typedef struct TableLock TableLock;
   345 typedef struct Token Token;
   346 typedef struct TriggerStack TriggerStack;
   347 typedef struct TriggerStep TriggerStep;
   348 typedef struct Trigger Trigger;
   349 typedef struct WhereInfo WhereInfo;
   350 typedef struct WhereLevel WhereLevel;
   351 
   352 #include "os.h"
   353 #include "mutex.h"
   354 
   355 /*
   356 ** Each database file to be accessed by the system is an instance
   357 ** of the following structure.  There are normally two of these structures
   358 ** in the sqlite.aDb[] array.  aDb[0] is the main database file and
   359 ** aDb[1] is the database file used to hold temporary tables.  Additional
   360 ** databases may be attached.
   361 */
   362 struct Db {
   363   char *zName;         /* Name of this database */
   364   Btree *pBt;          /* The B*Tree structure for this database file */
   365   u8 inTrans;          /* 0: not writable.  1: Transaction.  2: Checkpoint */
   366   u8 safety_level;     /* How aggressive at synching data to disk */
   367   void *pAux;               /* Auxiliary data.  Usually NULL */
   368   void (*xFreeAux)(void*);  /* Routine to free pAux */
   369   Schema *pSchema;     /* Pointer to database schema (possibly shared) */
   370 };
   371 
   372 /*
   373 ** An instance of the following structure stores a database schema.
   374 **
   375 ** If there are no virtual tables configured in this schema, the
   376 ** Schema.db variable is set to NULL. After the first virtual table
   377 ** has been added, it is set to point to the database connection 
   378 ** used to create the connection. Once a virtual table has been
   379 ** added to the Schema structure and the Schema.db variable populated, 
   380 ** only that database connection may use the Schema to prepare 
   381 ** statements.
   382 */
   383 struct Schema {
   384   int schema_cookie;   /* Database schema version number for this file */
   385   Hash tblHash;        /* All tables indexed by name */
   386   Hash idxHash;        /* All (named) indices indexed by name */
   387   Hash trigHash;       /* All triggers indexed by name */
   388   Hash aFKey;          /* Foreign keys indexed by to-table */
   389   Table *pSeqTab;      /* The sqlite_sequence table used by AUTOINCREMENT */
   390   u8 file_format;      /* Schema format version for this file */
   391   u8 enc;              /* Text encoding used by this database */
   392   u16 flags;           /* Flags associated with this schema */
   393   int cache_size;      /* Number of pages to use in the cache */
   394 #ifndef SQLITE_OMIT_VIRTUALTABLE
   395   sqlite3 *db;         /* "Owner" connection. See comment above */
   396 #endif
   397 };
   398 
   399 /*
   400 ** These macros can be used to test, set, or clear bits in the 
   401 ** Db.flags field.
   402 */
   403 #define DbHasProperty(D,I,P)     (((D)->aDb[I].pSchema->flags&(P))==(P))
   404 #define DbHasAnyProperty(D,I,P)  (((D)->aDb[I].pSchema->flags&(P))!=0)
   405 #define DbSetProperty(D,I,P)     (D)->aDb[I].pSchema->flags|=(P)
   406 #define DbClearProperty(D,I,P)   (D)->aDb[I].pSchema->flags&=~(P)
   407 
   408 /*
   409 ** Allowed values for the DB.flags field.
   410 **
   411 ** The DB_SchemaLoaded flag is set after the database schema has been
   412 ** read into internal hash tables.
   413 **
   414 ** DB_UnresetViews means that one or more views have column names that
   415 ** have been filled out.  If the schema changes, these column names might
   416 ** changes and so the view will need to be reset.
   417 */
   418 #define DB_SchemaLoaded    0x0001  /* The schema has been loaded */
   419 #define DB_UnresetViews    0x0002  /* Some views have defined column names */
   420 #define DB_Empty           0x0004  /* The file is empty (length 0 bytes) */
   421 
   422 
   423 /*
   424 ** Each database is an instance of the following structure.
   425 **
   426 ** The sqlite.lastRowid records the last insert rowid generated by an
   427 ** insert statement.  Inserts on views do not affect its value.  Each
   428 ** trigger has its own context, so that lastRowid can be updated inside
   429 ** triggers as usual.  The previous value will be restored once the trigger
   430 ** exits.  Upon entering a before or instead of trigger, lastRowid is no
   431 ** longer (since after version 2.8.12) reset to -1.
   432 **
   433 ** The sqlite.nChange does not count changes within triggers and keeps no
   434 ** context.  It is reset at start of sqlite3_exec.
   435 ** The sqlite.lsChange represents the number of changes made by the last
   436 ** insert, update, or delete statement.  It remains constant throughout the
   437 ** length of a statement and is then updated by OP_SetCounts.  It keeps a
   438 ** context stack just like lastRowid so that the count of changes
   439 ** within a trigger is not seen outside the trigger.  Changes to views do not
   440 ** affect the value of lsChange.
   441 ** The sqlite.csChange keeps track of the number of current changes (since
   442 ** the last statement) and is used to update sqlite_lsChange.
   443 **
   444 ** The member variables sqlite.errCode, sqlite.zErrMsg and sqlite.zErrMsg16
   445 ** store the most recent error code and, if applicable, string. The
   446 ** internal function sqlite3Error() is used to set these variables
   447 ** consistently.
   448 */
   449 struct sqlite3 {
   450   sqlite3_vfs *pVfs;            /* OS Interface */
   451   int nDb;                      /* Number of backends currently in use */
   452   Db *aDb;                      /* All backends */
   453   int flags;                    /* Miscellanous flags. See below */
   454   int openFlags;                /* Flags passed to sqlite3_vfs.xOpen() */
   455   int errCode;                  /* Most recent error code (SQLITE_*) */
   456   int errMask;                  /* & result codes with this before returning */
   457   u8 autoCommit;                /* The auto-commit flag. */
   458   u8 temp_store;                /* 1: file 2: memory 0: default */
   459   u8 mallocFailed;              /* True if we have seen a malloc failure */
   460   int nTable;                   /* Number of tables in the database */
   461   CollSeq *pDfltColl;           /* The default collating sequence (BINARY) */
   462   i64 lastRowid;                /* ROWID of most recent insert (see above) */
   463   i64 priorNewRowid;            /* Last randomly generated ROWID */
   464   int magic;                    /* Magic number for detect library misuse */
   465   int nChange;                  /* Value returned by sqlite3_changes() */
   466   int nTotalChange;             /* Value returned by sqlite3_total_changes() */
   467   sqlite3_mutex *mutex;         /* Connection mutex */
   468   struct sqlite3InitInfo {      /* Information used during initialization */
   469     int iDb;                    /* When back is being initialized */
   470     int newTnum;                /* Rootpage of table being initialized */
   471     u8 busy;                    /* TRUE if currently initializing */
   472   } init;
   473   int nExtension;               /* Number of loaded extensions */
   474   void **aExtension;            /* Array of shared libraray handles */
   475   struct Vdbe *pVdbe;           /* List of active virtual machines */
   476   int activeVdbeCnt;            /* Number of vdbes currently executing */
   477   void (*xTrace)(void*,const char*);        /* Trace function */
   478   void *pTraceArg;                          /* Argument to the trace function */
   479   void (*xProfile)(void*,const char*,u64);  /* Profiling function */
   480   void *pProfileArg;                        /* Argument to profile function */
   481   void *pCommitArg;                 /* Argument to xCommitCallback() */   
   482   int (*xCommitCallback)(void*);    /* Invoked at every commit. */
   483   void *pRollbackArg;               /* Argument to xRollbackCallback() */   
   484   void (*xRollbackCallback)(void*); /* Invoked at every commit. */
   485   void *pUpdateArg;
   486   void (*xUpdateCallback)(void*,int, const char*,const char*,sqlite_int64);
   487   void(*xCollNeeded)(void*,sqlite3*,int eTextRep,const char*);
   488   void(*xCollNeeded16)(void*,sqlite3*,int eTextRep,const void*);
   489   void *pCollNeededArg;
   490   sqlite3_value *pErr;          /* Most recent error message */
   491   char *zErrMsg;                /* Most recent error message (UTF-8 encoded) */
   492   char *zErrMsg16;              /* Most recent error message (UTF-16 encoded) */
   493   union {
   494     int isInterrupted;          /* True if sqlite3_interrupt has been called */
   495     double notUsed1;            /* Spacer */
   496   } u1;
   497 #ifndef SQLITE_OMIT_AUTHORIZATION
   498   int (*xAuth)(void*,int,const char*,const char*,const char*,const char*);
   499                                 /* Access authorization function */
   500   void *pAuthArg;               /* 1st argument to the access auth function */
   501 #endif
   502 #ifndef SQLITE_OMIT_PROGRESS_CALLBACK
   503   int (*xProgress)(void *);     /* The progress callback */
   504   void *pProgressArg;           /* Argument to the progress callback */
   505   int nProgressOps;             /* Number of opcodes for progress callback */
   506 #endif
   507 #ifndef SQLITE_OMIT_VIRTUALTABLE
   508   Hash aModule;                 /* populated by sqlite3_create_module() */
   509   Table *pVTab;                 /* vtab with active Connect/Create method */
   510   sqlite3_vtab **aVTrans;       /* Virtual tables with open transactions */
   511   int nVTrans;                  /* Allocated size of aVTrans */
   512 #endif
   513   Hash aFunc;                   /* All functions that can be in SQL exprs */
   514   Hash aCollSeq;                /* All collating sequences */
   515   BusyHandler busyHandler;      /* Busy callback */
   516   int busyTimeout;              /* Busy handler timeout, in msec */
   517   Db aDbStatic[2];              /* Static space for the 2 default backends */
   518 #ifdef SQLITE_SSE
   519   sqlite3_stmt *pFetch;         /* Used by SSE to fetch stored statements */
   520 #endif
   521   u8 dfltLockMode;              /* Default locking-mode for attached dbs */
   522 };
   523 
   524 /*
   525 ** A macro to discover the encoding of a database.
   526 */
   527 #define ENC(db) ((db)->aDb[0].pSchema->enc)
   528 
   529 /*
   530 ** Possible values for the sqlite.flags and or Db.flags fields.
   531 **
   532 ** On sqlite.flags, the SQLITE_InTrans value means that we have
   533 ** executed a BEGIN.  On Db.flags, SQLITE_InTrans means a statement
   534 ** transaction is active on that particular database file.
   535 */
   536 #define SQLITE_VdbeTrace      0x00000001  /* True to trace VDBE execution */
   537 #define SQLITE_InTrans        0x00000008  /* True if in a transaction */
   538 #define SQLITE_InternChanges  0x00000010  /* Uncommitted Hash table changes */
   539 #define SQLITE_FullColNames   0x00000020  /* Show full column names on SELECT */
   540 #define SQLITE_ShortColNames  0x00000040  /* Show short columns names */
   541 #define SQLITE_CountRows      0x00000080  /* Count rows changed by INSERT, */
   542                                           /*   DELETE, or UPDATE and return */
   543                                           /*   the count using a callback. */
   544 #define SQLITE_NullCallback   0x00000100  /* Invoke the callback once if the */
   545                                           /*   result set is empty */
   546 #define SQLITE_SqlTrace       0x00000200  /* Debug print SQL as it executes */
   547 #define SQLITE_VdbeListing    0x00000400  /* Debug listings of VDBE programs */
   548 #define SQLITE_WriteSchema    0x00000800  /* OK to update SQLITE_MASTER */
   549 #define SQLITE_NoReadlock     0x00001000  /* Readlocks are omitted when 
   550                                           ** accessing read-only databases */
   551 #define SQLITE_IgnoreChecks   0x00002000  /* Do not enforce check constraints */
   552 #define SQLITE_ReadUncommitted 0x00004000 /* For shared-cache mode */
   553 #define SQLITE_LegacyFileFmt  0x00008000  /* Create new databases in format 1 */
   554 #define SQLITE_FullFSync      0x00010000  /* Use full fsync on the backend */
   555 #define SQLITE_LoadExtension  0x00020000  /* Enable load_extension */
   556 
   557 #define SQLITE_RecoveryMode   0x00040000  /* Ignore schema errors */
   558 #define SQLITE_SharedCache    0x00080000  /* Cache sharing is enabled */
   559 #define SQLITE_Vtab           0x00100000  /* There exists a virtual table */
   560 
   561 /*
   562 ** Possible values for the sqlite.magic field.
   563 ** The numbers are obtained at random and have no special meaning, other
   564 ** than being distinct from one another.
   565 */
   566 #define SQLITE_MAGIC_OPEN     0xa029a697  /* Database is open */
   567 #define SQLITE_MAGIC_CLOSED   0x9f3c2d33  /* Database is closed */
   568 #define SQLITE_MAGIC_BUSY     0xf03b7906  /* Database currently in use */
   569 #define SQLITE_MAGIC_ERROR    0xb5357930  /* An SQLITE_MISUSE error occurred */
   570 
   571 /*
   572 ** Each SQL function is defined by an instance of the following
   573 ** structure.  A pointer to this structure is stored in the sqlite.aFunc
   574 ** hash table.  When multiple functions have the same name, the hash table
   575 ** points to a linked list of these structures.
   576 */
   577 struct FuncDef {
   578   i16 nArg;            /* Number of arguments.  -1 means unlimited */
   579   u8 iPrefEnc;         /* Preferred text encoding (SQLITE_UTF8, 16LE, 16BE) */
   580   u8 needCollSeq;      /* True if sqlite3GetFuncCollSeq() might be called */
   581   u8 flags;            /* Some combination of SQLITE_FUNC_* */
   582   void *pUserData;     /* User data parameter */
   583   FuncDef *pNext;      /* Next function with same name */
   584   void (*xFunc)(sqlite3_context*,int,sqlite3_value**); /* Regular function */
   585   void (*xStep)(sqlite3_context*,int,sqlite3_value**); /* Aggregate step */
   586   void (*xFinalize)(sqlite3_context*);                /* Aggregate finializer */
   587   char zName[1];       /* SQL name of the function.  MUST BE LAST */
   588 };
   589 
   590 /*
   591 ** Each SQLite module (virtual table definition) is defined by an
   592 ** instance of the following structure, stored in the sqlite3.aModule
   593 ** hash table.
   594 */
   595 struct Module {
   596   const sqlite3_module *pModule;       /* Callback pointers */
   597   const char *zName;                   /* Name passed to create_module() */
   598   void *pAux;                          /* pAux passed to create_module() */
   599   void (*xDestroy)(void *);            /* Module destructor function */
   600 };
   601 
   602 /*
   603 ** Possible values for FuncDef.flags
   604 */
   605 #define SQLITE_FUNC_LIKE   0x01  /* Candidate for the LIKE optimization */
   606 #define SQLITE_FUNC_CASE   0x02  /* Case-sensitive LIKE-type function */
   607 #define SQLITE_FUNC_EPHEM  0x04  /* Ephermeral.  Delete with VDBE */
   608 
   609 /*
   610 ** information about each column of an SQL table is held in an instance
   611 ** of this structure.
   612 */
   613 struct Column {
   614   char *zName;     /* Name of this column */
   615   Expr *pDflt;     /* Default value of this column */
   616   char *zType;     /* Data type for this column */
   617   char *zColl;     /* Collating sequence.  If NULL, use the default */
   618   u8 notNull;      /* True if there is a NOT NULL constraint */
   619   u8 isPrimKey;    /* True if this column is part of the PRIMARY KEY */
   620   char affinity;   /* One of the SQLITE_AFF_... values */
   621 #ifndef SQLITE_OMIT_VIRTUALTABLE
   622   u8 isHidden;     /* True if this column is 'hidden' */
   623 #endif
   624 };
   625 
   626 /*
   627 ** A "Collating Sequence" is defined by an instance of the following
   628 ** structure. Conceptually, a collating sequence consists of a name and
   629 ** a comparison routine that defines the order of that sequence.
   630 **
   631 ** There may two seperate implementations of the collation function, one
   632 ** that processes text in UTF-8 encoding (CollSeq.xCmp) and another that
   633 ** processes text encoded in UTF-16 (CollSeq.xCmp16), using the machine
   634 ** native byte order. When a collation sequence is invoked, SQLite selects
   635 ** the version that will require the least expensive encoding
   636 ** translations, if any.
   637 **
   638 ** The CollSeq.pUser member variable is an extra parameter that passed in
   639 ** as the first argument to the UTF-8 comparison function, xCmp.
   640 ** CollSeq.pUser16 is the equivalent for the UTF-16 comparison function,
   641 ** xCmp16.
   642 **
   643 ** If both CollSeq.xCmp and CollSeq.xCmp16 are NULL, it means that the
   644 ** collating sequence is undefined.  Indices built on an undefined
   645 ** collating sequence may not be read or written.
   646 */
   647 struct CollSeq {
   648   char *zName;          /* Name of the collating sequence, UTF-8 encoded */
   649   u8 enc;               /* Text encoding handled by xCmp() */
   650   u8 type;              /* One of the SQLITE_COLL_... values below */
   651   void *pUser;          /* First argument to xCmp() */
   652   int (*xCmp)(void*,int, const void*, int, const void*);
   653   void (*xDel)(void*);  /* Destructor for pUser */
   654 };
   655 
   656 /*
   657 ** Allowed values of CollSeq flags:
   658 */
   659 #define SQLITE_COLL_BINARY  1  /* The default memcmp() collating sequence */
   660 #define SQLITE_COLL_NOCASE  2  /* The built-in NOCASE collating sequence */
   661 #define SQLITE_COLL_REVERSE 3  /* The built-in REVERSE collating sequence */
   662 #define SQLITE_COLL_USER    0  /* Any other user-defined collating sequence */
   663 
   664 /*
   665 ** A sort order can be either ASC or DESC.
   666 */
   667 #define SQLITE_SO_ASC       0  /* Sort in ascending order */
   668 #define SQLITE_SO_DESC      1  /* Sort in ascending order */
   669 
   670 /*
   671 ** Column affinity types.
   672 **
   673 ** These used to have mnemonic name like 'i' for SQLITE_AFF_INTEGER and
   674 ** 't' for SQLITE_AFF_TEXT.  But we can save a little space and improve
   675 ** the speed a little by number the values consecutively.  
   676 **
   677 ** But rather than start with 0 or 1, we begin with 'a'.  That way,
   678 ** when multiple affinity types are concatenated into a string and
   679 ** used as the P3 operand, they will be more readable.
   680 **
   681 ** Note also that the numeric types are grouped together so that testing
   682 ** for a numeric type is a single comparison.
   683 */
   684 #define SQLITE_AFF_TEXT     'a'
   685 #define SQLITE_AFF_NONE     'b'
   686 #define SQLITE_AFF_NUMERIC  'c'
   687 #define SQLITE_AFF_INTEGER  'd'
   688 #define SQLITE_AFF_REAL     'e'
   689 
   690 #define sqlite3IsNumericAffinity(X)  ((X)>=SQLITE_AFF_NUMERIC)
   691 
   692 /*
   693 ** Each SQL table is represented in memory by an instance of the
   694 ** following structure.
   695 **
   696 ** Table.zName is the name of the table.  The case of the original
   697 ** CREATE TABLE statement is stored, but case is not significant for
   698 ** comparisons.
   699 **
   700 ** Table.nCol is the number of columns in this table.  Table.aCol is a
   701 ** pointer to an array of Column structures, one for each column.
   702 **
   703 ** If the table has an INTEGER PRIMARY KEY, then Table.iPKey is the index of
   704 ** the column that is that key.   Otherwise Table.iPKey is negative.  Note
   705 ** that the datatype of the PRIMARY KEY must be INTEGER for this field to
   706 ** be set.  An INTEGER PRIMARY KEY is used as the rowid for each row of
   707 ** the table.  If a table has no INTEGER PRIMARY KEY, then a random rowid
   708 ** is generated for each row of the table.  Table.hasPrimKey is true if
   709 ** the table has any PRIMARY KEY, INTEGER or otherwise.
   710 **
   711 ** Table.tnum is the page number for the root BTree page of the table in the
   712 ** database file.  If Table.iDb is the index of the database table backend
   713 ** in sqlite.aDb[].  0 is for the main database and 1 is for the file that
   714 ** holds temporary tables and indices.  If Table.isEphem
   715 ** is true, then the table is stored in a file that is automatically deleted
   716 ** when the VDBE cursor to the table is closed.  In this case Table.tnum 
   717 ** refers VDBE cursor number that holds the table open, not to the root
   718 ** page number.  Transient tables are used to hold the results of a
   719 ** sub-query that appears instead of a real table name in the FROM clause 
   720 ** of a SELECT statement.
   721 */
   722 struct Table {
   723   char *zName;     /* Name of the table */
   724   int nCol;        /* Number of columns in this table */
   725   Column *aCol;    /* Information about each column */
   726   int iPKey;       /* If not less then 0, use aCol[iPKey] as the primary key */
   727   Index *pIndex;   /* List of SQL indexes on this table. */
   728   int tnum;        /* Root BTree node for this table (see note above) */
   729   Select *pSelect; /* NULL for tables.  Points to definition if a view. */
   730   int nRef;          /* Number of pointers to this Table */
   731   Trigger *pTrigger; /* List of SQL triggers on this table */
   732   FKey *pFKey;       /* Linked list of all foreign keys in this table */
   733   char *zColAff;     /* String defining the affinity of each column */
   734 #ifndef SQLITE_OMIT_CHECK
   735   Expr *pCheck;      /* The AND of all CHECK constraints */
   736 #endif
   737 #ifndef SQLITE_OMIT_ALTERTABLE
   738   int addColOffset;  /* Offset in CREATE TABLE statement to add a new column */
   739 #endif
   740   u8 readOnly;     /* True if this table should not be written by the user */
   741   u8 isEphem;      /* True if created using OP_OpenEphermeral */
   742   u8 hasPrimKey;   /* True if there exists a primary key */
   743   u8 keyConf;      /* What to do in case of uniqueness conflict on iPKey */
   744   u8 autoInc;      /* True if the integer primary key is autoincrement */
   745 #ifndef SQLITE_OMIT_VIRTUALTABLE
   746   u8 isVirtual;             /* True if this is a virtual table */
   747   u8 isCommit;              /* True once the CREATE TABLE has been committed */
   748   Module *pMod;             /* Pointer to the implementation of the module */
   749   sqlite3_vtab *pVtab;      /* Pointer to the module instance */
   750   int nModuleArg;           /* Number of arguments to the module */
   751   char **azModuleArg;       /* Text of all module args. [0] is module name */
   752 #endif
   753   Schema *pSchema;          /* Schema that contains this table */
   754 };
   755 
   756 /*
   757 ** Test to see whether or not a table is a virtual table.  This is
   758 ** done as a macro so that it will be optimized out when virtual
   759 ** table support is omitted from the build.
   760 */
   761 #ifndef SQLITE_OMIT_VIRTUALTABLE
   762 #  define IsVirtual(X)      ((X)->isVirtual)
   763 #  define IsHiddenColumn(X) ((X)->isHidden)
   764 #else
   765 #  define IsVirtual(X)      0
   766 #  define IsHiddenColumn(X) 0
   767 #endif
   768 
   769 /*
   770 ** Each foreign key constraint is an instance of the following structure.
   771 **
   772 ** A foreign key is associated with two tables.  The "from" table is
   773 ** the table that contains the REFERENCES clause that creates the foreign
   774 ** key.  The "to" table is the table that is named in the REFERENCES clause.
   775 ** Consider this example:
   776 **
   777 **     CREATE TABLE ex1(
   778 **       a INTEGER PRIMARY KEY,
   779 **       b INTEGER CONSTRAINT fk1 REFERENCES ex2(x)
   780 **     );
   781 **
   782 ** For foreign key "fk1", the from-table is "ex1" and the to-table is "ex2".
   783 **
   784 ** Each REFERENCES clause generates an instance of the following structure
   785 ** which is attached to the from-table.  The to-table need not exist when
   786 ** the from-table is created.  The existance of the to-table is not checked
   787 ** until an attempt is made to insert data into the from-table.
   788 **
   789 ** The sqlite.aFKey hash table stores pointers to this structure
   790 ** given the name of a to-table.  For each to-table, all foreign keys
   791 ** associated with that table are on a linked list using the FKey.pNextTo
   792 ** field.
   793 */
   794 struct FKey {
   795   Table *pFrom;     /* The table that constains the REFERENCES clause */
   796   FKey *pNextFrom;  /* Next foreign key in pFrom */
   797   char *zTo;        /* Name of table that the key points to */
   798   FKey *pNextTo;    /* Next foreign key that points to zTo */
   799   int nCol;         /* Number of columns in this key */
   800   struct sColMap {  /* Mapping of columns in pFrom to columns in zTo */
   801     int iFrom;         /* Index of column in pFrom */
   802     char *zCol;        /* Name of column in zTo.  If 0 use PRIMARY KEY */
   803   } *aCol;          /* One entry for each of nCol column s */
   804   u8 isDeferred;    /* True if constraint checking is deferred till COMMIT */
   805   u8 updateConf;    /* How to resolve conflicts that occur on UPDATE */
   806   u8 deleteConf;    /* How to resolve conflicts that occur on DELETE */
   807   u8 insertConf;    /* How to resolve conflicts that occur on INSERT */
   808 };
   809 
   810 /*
   811 ** SQLite supports many different ways to resolve a constraint
   812 ** error.  ROLLBACK processing means that a constraint violation
   813 ** causes the operation in process to fail and for the current transaction
   814 ** to be rolled back.  ABORT processing means the operation in process
   815 ** fails and any prior changes from that one operation are backed out,
   816 ** but the transaction is not rolled back.  FAIL processing means that
   817 ** the operation in progress stops and returns an error code.  But prior
   818 ** changes due to the same operation are not backed out and no rollback
   819 ** occurs.  IGNORE means that the particular row that caused the constraint
   820 ** error is not inserted or updated.  Processing continues and no error
   821 ** is returned.  REPLACE means that preexisting database rows that caused
   822 ** a UNIQUE constraint violation are removed so that the new insert or
   823 ** update can proceed.  Processing continues and no error is reported.
   824 **
   825 ** RESTRICT, SETNULL, and CASCADE actions apply only to foreign keys.
   826 ** RESTRICT is the same as ABORT for IMMEDIATE foreign keys and the
   827 ** same as ROLLBACK for DEFERRED keys.  SETNULL means that the foreign
   828 ** key is set to NULL.  CASCADE means that a DELETE or UPDATE of the
   829 ** referenced table row is propagated into the row that holds the
   830 ** foreign key.
   831 ** 
   832 ** The following symbolic values are used to record which type
   833 ** of action to take.
   834 */
   835 #define OE_None     0   /* There is no constraint to check */
   836 #define OE_Rollback 1   /* Fail the operation and rollback the transaction */
   837 #define OE_Abort    2   /* Back out changes but do no rollback transaction */
   838 #define OE_Fail     3   /* Stop the operation but leave all prior changes */
   839 #define OE_Ignore   4   /* Ignore the error. Do not do the INSERT or UPDATE */
   840 #define OE_Replace  5   /* Delete existing record, then do INSERT or UPDATE */
   841 
   842 #define OE_Restrict 6   /* OE_Abort for IMMEDIATE, OE_Rollback for DEFERRED */
   843 #define OE_SetNull  7   /* Set the foreign key value to NULL */
   844 #define OE_SetDflt  8   /* Set the foreign key value to its default */
   845 #define OE_Cascade  9   /* Cascade the changes */
   846 
   847 #define OE_Default  99  /* Do whatever the default action is */
   848 
   849 
   850 /*
   851 ** An instance of the following structure is passed as the first
   852 ** argument to sqlite3VdbeKeyCompare and is used to control the 
   853 ** comparison of the two index keys.
   854 **
   855 ** If the KeyInfo.incrKey value is true and the comparison would
   856 ** otherwise be equal, then return a result as if the second key
   857 ** were larger.
   858 */
   859 struct KeyInfo {
   860   sqlite3 *db;        /* The database connection */
   861   u8 enc;             /* Text encoding - one of the TEXT_Utf* values */
   862   u8 incrKey;         /* Increase 2nd key by epsilon before comparison */
   863   int nField;         /* Number of entries in aColl[] */
   864   u8 *aSortOrder;     /* If defined an aSortOrder[i] is true, sort DESC */
   865   CollSeq *aColl[1];  /* Collating sequence for each term of the key */
   866 };
   867 
   868 /*
   869 ** Each SQL index is represented in memory by an
   870 ** instance of the following structure.
   871 **
   872 ** The columns of the table that are to be indexed are described
   873 ** by the aiColumn[] field of this structure.  For example, suppose
   874 ** we have the following table and index:
   875 **
   876 **     CREATE TABLE Ex1(c1 int, c2 int, c3 text);
   877 **     CREATE INDEX Ex2 ON Ex1(c3,c1);
   878 **
   879 ** In the Table structure describing Ex1, nCol==3 because there are
   880 ** three columns in the table.  In the Index structure describing
   881 ** Ex2, nColumn==2 since 2 of the 3 columns of Ex1 are indexed.
   882 ** The value of aiColumn is {2, 0}.  aiColumn[0]==2 because the 
   883 ** first column to be indexed (c3) has an index of 2 in Ex1.aCol[].
   884 ** The second column to be indexed (c1) has an index of 0 in
   885 ** Ex1.aCol[], hence Ex2.aiColumn[1]==0.
   886 **
   887 ** The Index.onError field determines whether or not the indexed columns
   888 ** must be unique and what to do if they are not.  When Index.onError=OE_None,
   889 ** it means this is not a unique index.  Otherwise it is a unique index
   890 ** and the value of Index.onError indicate the which conflict resolution 
   891 ** algorithm to employ whenever an attempt is made to insert a non-unique
   892 ** element.
   893 */
   894 struct Index {
   895   char *zName;     /* Name of this index */
   896   int nColumn;     /* Number of columns in the table used by this index */
   897   int *aiColumn;   /* Which columns are used by this index.  1st is 0 */
   898   unsigned *aiRowEst; /* Result of ANALYZE: Est. rows selected by each column */
   899   Table *pTable;   /* The SQL table being indexed */
   900   int tnum;        /* Page containing root of this index in database file */
   901   u8 onError;      /* OE_Abort, OE_Ignore, OE_Replace, or OE_None */
   902   u8 autoIndex;    /* True if is automatically created (ex: by UNIQUE) */
   903   char *zColAff;   /* String defining the affinity of each column */
   904   Index *pNext;    /* The next index associated with the same table */
   905   Schema *pSchema; /* Schema containing this index */
   906   u8 *aSortOrder;  /* Array of size Index.nColumn. True==DESC, False==ASC */
   907   char **azColl;   /* Array of collation sequence names for index */
   908 };
   909 
   910 /*
   911 ** Each token coming out of the lexer is an instance of
   912 ** this structure.  Tokens are also used as part of an expression.
   913 **
   914 ** Note if Token.z==0 then Token.dyn and Token.n are undefined and
   915 ** may contain random values.  Do not make any assuptions about Token.dyn
   916 ** and Token.n when Token.z==0.
   917 */
   918 struct Token {
   919   const unsigned char *z; /* Text of the token.  Not NULL-terminated! */
   920   unsigned dyn  : 1;      /* True for malloced memory, false for static */
   921   unsigned n    : 31;     /* Number of characters in this token */
   922 };
   923 
   924 /*
   925 ** An instance of this structure contains information needed to generate
   926 ** code for a SELECT that contains aggregate functions.
   927 **
   928 ** If Expr.op==TK_AGG_COLUMN or TK_AGG_FUNCTION then Expr.pAggInfo is a
   929 ** pointer to this structure.  The Expr.iColumn field is the index in
   930 ** AggInfo.aCol[] or AggInfo.aFunc[] of information needed to generate
   931 ** code for that node.
   932 **
   933 ** AggInfo.pGroupBy and AggInfo.aFunc.pExpr point to fields within the
   934 ** original Select structure that describes the SELECT statement.  These
   935 ** fields do not need to be freed when deallocating the AggInfo structure.
   936 */
   937 struct AggInfo {
   938   u8 directMode;          /* Direct rendering mode means take data directly
   939                           ** from source tables rather than from accumulators */
   940   u8 useSortingIdx;       /* In direct mode, reference the sorting index rather
   941                           ** than the source table */
   942   int sortingIdx;         /* Cursor number of the sorting index */
   943   ExprList *pGroupBy;     /* The group by clause */
   944   int nSortingColumn;     /* Number of columns in the sorting index */
   945   struct AggInfo_col {    /* For each column used in source tables */
   946     Table *pTab;             /* Source table */
   947     int iTable;              /* Cursor number of the source table */
   948     int iColumn;             /* Column number within the source table */
   949     int iSorterColumn;       /* Column number in the sorting index */
   950     int iMem;                /* Memory location that acts as accumulator */
   951     Expr *pExpr;             /* The original expression */
   952   } *aCol;
   953   int nColumn;            /* Number of used entries in aCol[] */
   954   int nColumnAlloc;       /* Number of slots allocated for aCol[] */
   955   int nAccumulator;       /* Number of columns that show through to the output.
   956                           ** Additional columns are used only as parameters to
   957                           ** aggregate functions */
   958   struct AggInfo_func {   /* For each aggregate function */
   959     Expr *pExpr;             /* Expression encoding the function */
   960     FuncDef *pFunc;          /* The aggregate function implementation */
   961     int iMem;                /* Memory location that acts as accumulator */
   962     int iDistinct;           /* Ephermeral table used to enforce DISTINCT */
   963   } *aFunc;
   964   int nFunc;              /* Number of entries in aFunc[] */
   965   int nFuncAlloc;         /* Number of slots allocated for aFunc[] */
   966 };
   967 
   968 /*
   969 ** Each node of an expression in the parse tree is an instance
   970 ** of this structure.
   971 **
   972 ** Expr.op is the opcode.  The integer parser token codes are reused
   973 ** as opcodes here.  For example, the parser defines TK_GE to be an integer
   974 ** code representing the ">=" operator.  This same integer code is reused
   975 ** to represent the greater-than-or-equal-to operator in the expression
   976 ** tree.
   977 **
   978 ** Expr.pRight and Expr.pLeft are subexpressions.  Expr.pList is a list
   979 ** of argument if the expression is a function.
   980 **
   981 ** Expr.token is the operator token for this node.  For some expressions
   982 ** that have subexpressions, Expr.token can be the complete text that gave
   983 ** rise to the Expr.  In the latter case, the token is marked as being
   984 ** a compound token.
   985 **
   986 ** An expression of the form ID or ID.ID refers to a column in a table.
   987 ** For such expressions, Expr.op is set to TK_COLUMN and Expr.iTable is
   988 ** the integer cursor number of a VDBE cursor pointing to that table and
   989 ** Expr.iColumn is the column number for the specific column.  If the
   990 ** expression is used as a result in an aggregate SELECT, then the
   991 ** value is also stored in the Expr.iAgg column in the aggregate so that
   992 ** it can be accessed after all aggregates are computed.
   993 **
   994 ** If the expression is a function, the Expr.iTable is an integer code
   995 ** representing which function.  If the expression is an unbound variable
   996 ** marker (a question mark character '?' in the original SQL) then the
   997 ** Expr.iTable holds the index number for that variable.
   998 **
   999 ** If the expression is a subquery then Expr.iColumn holds an integer
  1000 ** register number containing the result of the subquery.  If the
  1001 ** subquery gives a constant result, then iTable is -1.  If the subquery
  1002 ** gives a different answer at different times during statement processing
  1003 ** then iTable is the address of a subroutine that computes the subquery.
  1004 **
  1005 ** The Expr.pSelect field points to a SELECT statement.  The SELECT might
  1006 ** be the right operand of an IN operator.  Or, if a scalar SELECT appears
  1007 ** in an expression the opcode is TK_SELECT and Expr.pSelect is the only
  1008 ** operand.
  1009 **
  1010 ** If the Expr is of type OP_Column, and the table it is selecting from
  1011 ** is a disk table or the "old.*" pseudo-table, then pTab points to the
  1012 ** corresponding table definition.
  1013 */
  1014 struct Expr {
  1015   u8 op;                 /* Operation performed by this node */
  1016   char affinity;         /* The affinity of the column or 0 if not a column */
  1017   u16 flags;             /* Various flags.  See below */
  1018   CollSeq *pColl;        /* The collation type of the column or 0 */
  1019   Expr *pLeft, *pRight;  /* Left and right subnodes */
  1020   ExprList *pList;       /* A list of expressions used as function arguments
  1021                          ** or in "<expr> IN (<expr-list)" */
  1022   Token token;           /* An operand token */
  1023   Token span;            /* Complete text of the expression */
  1024   int iTable, iColumn;   /* When op==TK_COLUMN, then this expr node means the
  1025                          ** iColumn-th field of the iTable-th table. */
  1026   AggInfo *pAggInfo;     /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
  1027   int iAgg;              /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
  1028   int iRightJoinTable;   /* If EP_FromJoin, the right table of the join */
  1029   Select *pSelect;       /* When the expression is a sub-select.  Also the
  1030                          ** right side of "<expr> IN (<select>)" */
  1031   Table *pTab;           /* Table for OP_Column expressions. */
  1032 /*  Schema *pSchema; */
  1033 #if defined(SQLITE_TEST) || SQLITE_MAX_EXPR_DEPTH>0
  1034   int nHeight;           /* Height of the tree headed by this node */
  1035 #endif
  1036 };
  1037 
  1038 /*
  1039 ** The following are the meanings of bits in the Expr.flags field.
  1040 */
  1041 #define EP_FromJoin     0x01  /* Originated in ON or USING clause of a join */
  1042 #define EP_Agg          0x02  /* Contains one or more aggregate functions */
  1043 #define EP_Resolved     0x04  /* IDs have been resolved to COLUMNs */
  1044 #define EP_Error        0x08  /* Expression contains one or more errors */
  1045 #define EP_Distinct     0x10  /* Aggregate function with DISTINCT keyword */
  1046 #define EP_VarSelect    0x20  /* pSelect is correlated, not constant */
  1047 #define EP_Dequoted     0x40  /* True if the string has been dequoted */
  1048 #define EP_InfixFunc    0x80  /* True for an infix function: LIKE, GLOB, etc */
  1049 #define EP_ExpCollate  0x100  /* Collating sequence specified explicitly */
  1050 
  1051 /*
  1052 ** These macros can be used to test, set, or clear bits in the 
  1053 ** Expr.flags field.
  1054 */
  1055 #define ExprHasProperty(E,P)     (((E)->flags&(P))==(P))
  1056 #define ExprHasAnyProperty(E,P)  (((E)->flags&(P))!=0)
  1057 #define ExprSetProperty(E,P)     (E)->flags|=(P)
  1058 #define ExprClearProperty(E,P)   (E)->flags&=~(P)
  1059 
  1060 /*
  1061 ** A list of expressions.  Each expression may optionally have a
  1062 ** name.  An expr/name combination can be used in several ways, such
  1063 ** as the list of "expr AS ID" fields following a "SELECT" or in the
  1064 ** list of "ID = expr" items in an UPDATE.  A list of expressions can
  1065 ** also be used as the argument to a function, in which case the a.zName
  1066 ** field is not used.
  1067 */
  1068 struct ExprList {
  1069   int nExpr;             /* Number of expressions on the list */
  1070   int nAlloc;            /* Number of entries allocated below */
  1071   int iECursor;          /* VDBE Cursor associated with this ExprList */
  1072   struct ExprList_item {
  1073     Expr *pExpr;           /* The list of expressions */
  1074     char *zName;           /* Token associated with this expression */
  1075     u8 sortOrder;          /* 1 for DESC or 0 for ASC */
  1076     u8 isAgg;              /* True if this is an aggregate like count(*) */
  1077     u8 done;               /* A flag to indicate when processing is finished */
  1078   } *a;                  /* One entry for each expression */
  1079 };
  1080 
  1081 /*
  1082 ** An instance of this structure can hold a simple list of identifiers,
  1083 ** such as the list "a,b,c" in the following statements:
  1084 **
  1085 **      INSERT INTO t(a,b,c) VALUES ...;
  1086 **      CREATE INDEX idx ON t(a,b,c);
  1087 **      CREATE TRIGGER trig BEFORE UPDATE ON t(a,b,c) ...;
  1088 **
  1089 ** The IdList.a.idx field is used when the IdList represents the list of
  1090 ** column names after a table name in an INSERT statement.  In the statement
  1091 **
  1092 **     INSERT INTO t(a,b,c) ...
  1093 **
  1094 ** If "a" is the k-th column of table "t", then IdList.a[0].idx==k.
  1095 */
  1096 struct IdList {
  1097   struct IdList_item {
  1098     char *zName;      /* Name of the identifier */
  1099     int idx;          /* Index in some Table.aCol[] of a column named zName */
  1100   } *a;
  1101   int nId;         /* Number of identifiers on the list */
  1102   int nAlloc;      /* Number of entries allocated for a[] below */
  1103 };
  1104 
  1105 /*
  1106 ** The bitmask datatype defined below is used for various optimizations.
  1107 **
  1108 ** Changing this from a 64-bit to a 32-bit type limits the number of
  1109 ** tables in a join to 32 instead of 64.  But it also reduces the size
  1110 ** of the library by 738 bytes on ix86.
  1111 */
  1112 typedef u64 Bitmask;
  1113 
  1114 /*
  1115 ** The following structure describes the FROM clause of a SELECT statement.
  1116 ** Each table or subquery in the FROM clause is a separate element of
  1117 ** the SrcList.a[] array.
  1118 **
  1119 ** With the addition of multiple database support, the following structure
  1120 ** can also be used to describe a particular table such as the table that
  1121 ** is modified by an INSERT, DELETE, or UPDATE statement.  In standard SQL,
  1122 ** such a table must be a simple name: ID.  But in SQLite, the table can
  1123 ** now be identified by a database name, a dot, then the table name: ID.ID.
  1124 **
  1125 ** The jointype starts out showing the join type between the current table
  1126 ** and the next table on the list.  The parser builds the list this way.
  1127 ** But sqlite3SrcListShiftJoinType() later shifts the jointypes so that each
  1128 ** jointype expresses the join between the table and the previous table.
  1129 */
  1130 struct SrcList {
  1131   i16 nSrc;        /* Number of tables or subqueries in the FROM clause */
  1132   i16 nAlloc;      /* Number of entries allocated in a[] below */
  1133   struct SrcList_item {
  1134     char *zDatabase;  /* Name of database holding this table */
  1135     char *zName;      /* Name of the table */
  1136     char *zAlias;     /* The "B" part of a "A AS B" phrase.  zName is the "A" */
  1137     Table *pTab;      /* An SQL table corresponding to zName */
  1138     Select *pSelect;  /* A SELECT statement used in place of a table name */
  1139     u8 isPopulated;   /* Temporary table associated with SELECT is populated */
  1140     u8 jointype;      /* Type of join between this able and the previous */
  1141     int iCursor;      /* The VDBE cursor number used to access this table */
  1142     Expr *pOn;        /* The ON clause of a join */
  1143     IdList *pUsing;   /* The USING clause of a join */
  1144     Bitmask colUsed;  /* Bit N (1<<N) set if column N or pTab is used */
  1145   } a[1];             /* One entry for each identifier on the list */
  1146 };
  1147 
  1148 /*
  1149 ** Permitted values of the SrcList.a.jointype field
  1150 */
  1151 #define JT_INNER     0x0001    /* Any kind of inner or cross join */
  1152 #define JT_CROSS     0x0002    /* Explicit use of the CROSS keyword */
  1153 #define JT_NATURAL   0x0004    /* True for a "natural" join */
  1154 #define JT_LEFT      0x0008    /* Left outer join */
  1155 #define JT_RIGHT     0x0010    /* Right outer join */
  1156 #define JT_OUTER     0x0020    /* The "OUTER" keyword is present */
  1157 #define JT_ERROR     0x0040    /* unknown or unsupported join type */
  1158 
  1159 /*
  1160 ** For each nested loop in a WHERE clause implementation, the WhereInfo
  1161 ** structure contains a single instance of this structure.  This structure
  1162 ** is intended to be private the the where.c module and should not be
  1163 ** access or modified by other modules.
  1164 **
  1165 ** The pIdxInfo and pBestIdx fields are used to help pick the best
  1166 ** index on a virtual table.  The pIdxInfo pointer contains indexing
  1167 ** information for the i-th table in the FROM clause before reordering.
  1168 ** All the pIdxInfo pointers are freed by whereInfoFree() in where.c.
  1169 ** The pBestIdx pointer is a copy of pIdxInfo for the i-th table after
  1170 ** FROM clause ordering.  This is a little confusing so I will repeat
  1171 ** it in different words.  WhereInfo.a[i].pIdxInfo is index information 
  1172 ** for WhereInfo.pTabList.a[i].  WhereInfo.a[i].pBestInfo is the
  1173 ** index information for the i-th loop of the join.  pBestInfo is always
  1174 ** either NULL or a copy of some pIdxInfo.  So for cleanup it is 
  1175 ** sufficient to free all of the pIdxInfo pointers.
  1176 ** 
  1177 */
  1178 struct WhereLevel {
  1179   int iFrom;            /* Which entry in the FROM clause */
  1180   int flags;            /* Flags associated with this level */
  1181   int iMem;             /* First memory cell used by this level */
  1182   int iLeftJoin;        /* Memory cell used to implement LEFT OUTER JOIN */
  1183   Index *pIdx;          /* Index used.  NULL if no index */
  1184   int iTabCur;          /* The VDBE cursor used to access the table */
  1185   int iIdxCur;          /* The VDBE cursor used to acesss pIdx */
  1186   int brk;              /* Jump here to break out of the loop */
  1187   int nxt;              /* Jump here to start the next IN combination */
  1188   int cont;             /* Jump here to continue with the next loop cycle */
  1189   int top;              /* First instruction of interior of the loop */
  1190   int op, p1, p2;       /* Opcode used to terminate the loop */
  1191   int nEq;              /* Number of == or IN constraints on this loop */
  1192   int nIn;              /* Number of IN operators constraining this loop */
  1193   struct InLoop {
  1194     int iCur;              /* The VDBE cursor used by this IN operator */
  1195     int topAddr;           /* Top of the IN loop */
  1196   } *aInLoop;           /* Information about each nested IN operator */
  1197   sqlite3_index_info *pBestIdx;  /* Index information for this level */
  1198 
  1199   /* The following field is really not part of the current level.  But
  1200   ** we need a place to cache index information for each table in the
  1201   ** FROM clause and the WhereLevel structure is a convenient place.
  1202   */
  1203   sqlite3_index_info *pIdxInfo;  /* Index info for n-th source table */
  1204 };
  1205 
  1206 /*
  1207 ** The WHERE clause processing routine has two halves.  The
  1208 ** first part does the start of the WHERE loop and the second
  1209 ** half does the tail of the WHERE loop.  An instance of
  1210 ** this structure is returned by the first half and passed
  1211 ** into the second half to give some continuity.
  1212 */
  1213 struct WhereInfo {
  1214   Parse *pParse;
  1215   SrcList *pTabList;   /* List of tables in the join */
  1216   int iTop;            /* The very beginning of the WHERE loop */
  1217   int iContinue;       /* Jump here to continue with next record */
  1218   int iBreak;          /* Jump here to break out of the loop */
  1219   int nLevel;          /* Number of nested loop */
  1220   sqlite3_index_info **apInfo;  /* Array of pointers to index info structures */
  1221   WhereLevel a[1];     /* Information about each nest loop in the WHERE */
  1222 };
  1223 
  1224 /*
  1225 ** A NameContext defines a context in which to resolve table and column
  1226 ** names.  The context consists of a list of tables (the pSrcList) field and
  1227 ** a list of named expression (pEList).  The named expression list may
  1228 ** be NULL.  The pSrc corresponds to the FROM clause of a SELECT or
  1229 ** to the table being operated on by INSERT, UPDATE, or DELETE.  The
  1230 ** pEList corresponds to the result set of a SELECT and is NULL for
  1231 ** other statements.
  1232 **
  1233 ** NameContexts can be nested.  When resolving names, the inner-most 
  1234 ** context is searched first.  If no match is found, the next outer
  1235 ** context is checked.  If there is still no match, the next context
  1236 ** is checked.  This process continues until either a match is found
  1237 ** or all contexts are check.  When a match is found, the nRef member of
  1238 ** the context containing the match is incremented. 
  1239 **
  1240 ** Each subquery gets a new NameContext.  The pNext field points to the
  1241 ** NameContext in the parent query.  Thus the process of scanning the
  1242 ** NameContext list corresponds to searching through successively outer
  1243 ** subqueries looking for a match.
  1244 */
  1245 struct NameContext {
  1246   Parse *pParse;       /* The parser */
  1247   SrcList *pSrcList;   /* One or more tables used to resolve names */
  1248   ExprList *pEList;    /* Optional list of named expressions */
  1249   int nRef;            /* Number of names resolved by this context */
  1250   int nErr;            /* Number of errors encountered while resolving names */
  1251   u8 allowAgg;         /* Aggregate functions allowed here */
  1252   u8 hasAgg;           /* True if aggregates are seen */
  1253   u8 isCheck;          /* True if resolving names in a CHECK constraint */
  1254   int nDepth;          /* Depth of subquery recursion. 1 for no recursion */
  1255   AggInfo *pAggInfo;   /* Information about aggregates at this level */
  1256   NameContext *pNext;  /* Next outer name context.  NULL for outermost */
  1257 };
  1258 
  1259 /*
  1260 ** An instance of the following structure contains all information
  1261 ** needed to generate code for a single SELECT statement.
  1262 **
  1263 ** nLimit is set to -1 if there is no LIMIT clause.  nOffset is set to 0.
  1264 ** If there is a LIMIT clause, the parser sets nLimit to the value of the
  1265 ** limit and nOffset to the value of the offset (or 0 if there is not
  1266 ** offset).  But later on, nLimit and nOffset become the memory locations
  1267 ** in the VDBE that record the limit and offset counters.
  1268 **
  1269 ** addrOpenEphm[] entries contain the address of OP_OpenEphemeral opcodes.
  1270 ** These addresses must be stored so that we can go back and fill in
  1271 ** the P3_KEYINFO and P2 parameters later.  Neither the KeyInfo nor
  1272 ** the number of columns in P2 can be computed at the same time
  1273 ** as the OP_OpenEphm instruction is coded because not
  1274 ** enough information about the compound query is known at that point.
  1275 ** The KeyInfo for addrOpenTran[0] and [1] contains collating sequences
  1276 ** for the result set.  The KeyInfo for addrOpenTran[2] contains collating
  1277 ** sequences for the ORDER BY clause.
  1278 */
  1279 struct Select {
  1280   ExprList *pEList;      /* The fields of the result */
  1281   u8 op;                 /* One of: TK_UNION TK_ALL TK_INTERSECT TK_EXCEPT */
  1282   u8 isDistinct;         /* True if the DISTINCT keyword is present */
  1283   u8 isResolved;         /* True once sqlite3SelectResolve() has run. */
  1284   u8 isAgg;              /* True if this is an aggregate query */
  1285   u8 usesEphm;           /* True if uses an OpenEphemeral opcode */
  1286   u8 disallowOrderBy;    /* Do not allow an ORDER BY to be attached if TRUE */
  1287   char affinity;         /* MakeRecord with this affinity for SRT_Set */
  1288   SrcList *pSrc;         /* The FROM clause */
  1289   Expr *pWhere;          /* The WHERE clause */
  1290   ExprList *pGroupBy;    /* The GROUP BY clause */
  1291   Expr *pHaving;         /* The HAVING clause */
  1292   ExprList *pOrderBy;    /* The ORDER BY clause */
  1293   Select *pPrior;        /* Prior select in a compound select statement */
  1294   Select *pRightmost;    /* Right-most select in a compound select statement */
  1295   Expr *pLimit;          /* LIMIT expression. NULL means not used. */
  1296   Expr *pOffset;         /* OFFSET expression. NULL means not used. */
  1297   int iLimit, iOffset;   /* Memory registers holding LIMIT & OFFSET counters */
  1298   int addrOpenEphm[3];   /* OP_OpenEphem opcodes related to this select */
  1299 };
  1300 
  1301 /*
  1302 ** The results of a select can be distributed in several ways.
  1303 */
  1304 #define SRT_Union        1  /* Store result as keys in an index */
  1305 #define SRT_Except       2  /* Remove result from a UNION index */
  1306 #define SRT_Discard      3  /* Do not save the results anywhere */
  1307 
  1308 /* The ORDER BY clause is ignored for all of the above */
  1309 #define IgnorableOrderby(X) (X<=SRT_Discard)
  1310 
  1311 #define SRT_Callback     4  /* Invoke a callback with each row of result */
  1312 #define SRT_Mem          5  /* Store result in a memory cell */
  1313 #define SRT_Set          6  /* Store non-null results as keys in an index */
  1314 #define SRT_Table        7  /* Store result as data with an automatic rowid */
  1315 #define SRT_EphemTab     8  /* Create transient tab and store like SRT_Table */
  1316 #define SRT_Subroutine   9  /* Call a subroutine to handle results */
  1317 #define SRT_Exists      10  /* Store 1 if the result is not empty */
  1318 
  1319 /*
  1320 ** An SQL parser context.  A copy of this structure is passed through
  1321 ** the parser and down into all the parser action routine in order to
  1322 ** carry around information that is global to the entire parse.
  1323 **
  1324 ** The structure is divided into two parts.  When the parser and code
  1325 ** generate call themselves recursively, the first part of the structure
  1326 ** is constant but the second part is reset at the beginning and end of
  1327 ** each recursion.
  1328 **
  1329 ** The nTableLock and aTableLock variables are only used if the shared-cache 
  1330 ** feature is enabled (if sqlite3Tsd()->useSharedData is true). They are
  1331 ** used to store the set of table-locks required by the statement being
  1332 ** compiled. Function sqlite3TableLock() is used to add entries to the
  1333 ** list.
  1334 */
  1335 struct Parse {
  1336   sqlite3 *db;         /* The main database structure */
  1337   int rc;              /* Return code from execution */
  1338   char *zErrMsg;       /* An error message */
  1339   Vdbe *pVdbe;         /* An engine for executing database bytecode */
  1340   u8 colNamesSet;      /* TRUE after OP_ColumnName has been issued to pVdbe */
  1341   u8 nameClash;        /* A permanent table name clashes with temp table name */
  1342   u8 checkSchema;      /* Causes schema cookie check after an error */
  1343   u8 nested;           /* Number of nested calls to the parser/code generator */
  1344   u8 parseError;       /* True after a parsing error.  Ticket #1794 */
  1345   int nErr;            /* Number of errors seen */
  1346   int nTab;            /* Number of previously allocated VDBE cursors */
  1347   int nMem;            /* Number of memory cells used so far */
  1348   int nSet;            /* Number of sets used so far */
  1349   int ckOffset;        /* Stack offset to data used by CHECK constraints */
  1350   u32 writeMask;       /* Start a write transaction on these databases */
  1351   u32 cookieMask;      /* Bitmask of schema verified databases */
  1352   int cookieGoto;      /* Address of OP_Goto to cookie verifier subroutine */
  1353   int cookieValue[SQLITE_MAX_ATTACHED+2];  /* Values of cookies to verify */
  1354 #ifndef SQLITE_OMIT_SHARED_CACHE
  1355   int nTableLock;        /* Number of locks in aTableLock */
  1356   TableLock *aTableLock; /* Required table locks for shared-cache mode */
  1357 #endif
  1358 
  1359   /* Above is constant between recursions.  Below is reset before and after
  1360   ** each recursion */
  1361 
  1362   int nVar;            /* Number of '?' variables seen in the SQL so far */
  1363   int nVarExpr;        /* Number of used slots in apVarExpr[] */
  1364   int nVarExprAlloc;   /* Number of allocated slots in apVarExpr[] */
  1365   Expr **apVarExpr;    /* Pointers to :aaa and $aaaa wildcard expressions */
  1366   u8 explain;          /* True if the EXPLAIN flag is found on the query */
  1367   Token sErrToken;     /* The token at which the error occurred */
  1368   Token sNameToken;    /* Token with unqualified schema object name */
  1369   Token sLastToken;    /* The last token parsed */
  1370   const char *zSql;    /* All SQL text */
  1371   const char *zTail;   /* All SQL text past the last semicolon parsed */
  1372   Table *pNewTable;    /* A table being constructed by CREATE TABLE */
  1373   Trigger *pNewTrigger;     /* Trigger under construct by a CREATE TRIGGER */
  1374   TriggerStack *trigStack;  /* Trigger actions being coded */
  1375   const char *zAuthContext; /* The 6th parameter to db->xAuth callbacks */
  1376 #ifndef SQLITE_OMIT_VIRTUALTABLE
  1377   Token sArg;                /* Complete text of a module argument */
  1378   u8 declareVtab;            /* True if inside sqlite3_declare_vtab() */
  1379   Table *pVirtualLock;       /* Require virtual table lock on this table */
  1380 #endif
  1381 #if defined(SQLITE_TEST) || SQLITE_MAX_EXPR_DEPTH>0
  1382   int nHeight;            /* Expression tree height of current sub-select */
  1383 #endif
  1384 };
  1385 
  1386 #ifdef SQLITE_OMIT_VIRTUALTABLE
  1387   #define IN_DECLARE_VTAB 0
  1388 #else
  1389   #define IN_DECLARE_VTAB (pParse->declareVtab)
  1390 #endif
  1391 
  1392 /*
  1393 ** An instance of the following structure can be declared on a stack and used
  1394 ** to save the Parse.zAuthContext value so that it can be restored later.
  1395 */
  1396 struct AuthContext {
  1397   const char *zAuthContext;   /* Put saved Parse.zAuthContext here */
  1398   Parse *pParse;              /* The Parse structure */
  1399 };
  1400 
  1401 /*
  1402 ** Bitfield flags for P2 value in OP_Insert and OP_Delete
  1403 */
  1404 #define OPFLAG_NCHANGE   1    /* Set to update db->nChange */
  1405 #define OPFLAG_LASTROWID 2    /* Set to update db->lastRowid */
  1406 #define OPFLAG_ISUPDATE  4    /* This OP_Insert is an sql UPDATE */
  1407 #define OPFLAG_APPEND    8    /* This is likely to be an append */
  1408 
  1409 /*
  1410  * Each trigger present in the database schema is stored as an instance of
  1411  * struct Trigger. 
  1412  *
  1413  * Pointers to instances of struct Trigger are stored in two ways.
  1414  * 1. In the "trigHash" hash table (part of the sqlite3* that represents the 
  1415  *    database). This allows Trigger structures to be retrieved by name.
  1416  * 2. All triggers associated with a single table form a linked list, using the
  1417  *    pNext member of struct Trigger. A pointer to the first element of the
  1418  *    linked list is stored as the "pTrigger" member of the associated
  1419  *    struct Table.
  1420  *
  1421  * The "step_list" member points to the first element of a linked list
  1422  * containing the SQL statements specified as the trigger program.
  1423  */
  1424 struct Trigger {
  1425   char *name;             /* The name of the trigger                        */
  1426   char *table;            /* The table or view to which the trigger applies */
  1427   u8 op;                  /* One of TK_DELETE, TK_UPDATE, TK_INSERT         */
  1428   u8 tr_tm;               /* One of TRIGGER_BEFORE, TRIGGER_AFTER */
  1429   Expr *pWhen;            /* The WHEN clause of the expresion (may be NULL) */
  1430   IdList *pColumns;       /* If this is an UPDATE OF <column-list> trigger,
  1431                              the <column-list> is stored here */
  1432   Token nameToken;        /* Token containing zName. Use during parsing only */
  1433   Schema *pSchema;        /* Schema containing the trigger */
  1434   Schema *pTabSchema;     /* Schema containing the table */
  1435   TriggerStep *step_list; /* Link list of trigger program steps             */
  1436   Trigger *pNext;         /* Next trigger associated with the table */
  1437 };
  1438 
  1439 /*
  1440 ** A trigger is either a BEFORE or an AFTER trigger.  The following constants
  1441 ** determine which. 
  1442 **
  1443 ** If there are multiple triggers, you might of some BEFORE and some AFTER.
  1444 ** In that cases, the constants below can be ORed together.
  1445 */
  1446 #define TRIGGER_BEFORE  1
  1447 #define TRIGGER_AFTER   2
  1448 
  1449 /*
  1450  * An instance of struct TriggerStep is used to store a single SQL statement
  1451  * that is a part of a trigger-program. 
  1452  *
  1453  * Instances of struct TriggerStep are stored in a singly linked list (linked
  1454  * using the "pNext" member) referenced by the "step_list" member of the 
  1455  * associated struct Trigger instance. The first element of the linked list is
  1456  * the first step of the trigger-program.
  1457  * 
  1458  * The "op" member indicates whether this is a "DELETE", "INSERT", "UPDATE" or
  1459  * "SELECT" statement. The meanings of the other members is determined by the 
  1460  * value of "op" as follows:
  1461  *
  1462  * (op == TK_INSERT)
  1463  * orconf    -> stores the ON CONFLICT algorithm
  1464  * pSelect   -> If this is an INSERT INTO ... SELECT ... statement, then
  1465  *              this stores a pointer to the SELECT statement. Otherwise NULL.
  1466  * target    -> A token holding the name of the table to insert into.
  1467  * pExprList -> If this is an INSERT INTO ... VALUES ... statement, then
  1468  *              this stores values to be inserted. Otherwise NULL.
  1469  * pIdList   -> If this is an INSERT INTO ... (<column-names>) VALUES ... 
  1470  *              statement, then this stores the column-names to be
  1471  *              inserted into.
  1472  *
  1473  * (op == TK_DELETE)
  1474  * target    -> A token holding the name of the table to delete from.
  1475  * pWhere    -> The WHERE clause of the DELETE statement if one is specified.
  1476  *              Otherwise NULL.
  1477  * 
  1478  * (op == TK_UPDATE)
  1479  * target    -> A token holding the name of the table to update rows of.
  1480  * pWhere    -> The WHERE clause of the UPDATE statement if one is specified.
  1481  *              Otherwise NULL.
  1482  * pExprList -> A list of the columns to update and the expressions to update
  1483  *              them to. See sqlite3Update() documentation of "pChanges"
  1484  *              argument.
  1485  * 
  1486  */
  1487 struct TriggerStep {
  1488   int op;              /* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT */
  1489   int orconf;          /* OE_Rollback etc. */
  1490   Trigger *pTrig;      /* The trigger that this step is a part of */
  1491 
  1492   Select *pSelect;     /* Valid for SELECT and sometimes 
  1493                           INSERT steps (when pExprList == 0) */
  1494   Token target;        /* Valid for DELETE, UPDATE, INSERT steps */
  1495   Expr *pWhere;        /* Valid for DELETE, UPDATE steps */
  1496   ExprList *pExprList; /* Valid for UPDATE statements and sometimes 
  1497                            INSERT steps (when pSelect == 0)         */
  1498   IdList *pIdList;     /* Valid for INSERT statements only */
  1499   TriggerStep *pNext;  /* Next in the link-list */
  1500   TriggerStep *pLast;  /* Last element in link-list. Valid for 1st elem only */
  1501 };
  1502 
  1503 /*
  1504  * An instance of struct TriggerStack stores information required during code
  1505  * generation of a single trigger program. While the trigger program is being
  1506  * coded, its associated TriggerStack instance is pointed to by the
  1507  * "pTriggerStack" member of the Parse structure.
  1508  *
  1509  * The pTab member points to the table that triggers are being coded on. The 
  1510  * newIdx member contains the index of the vdbe cursor that points at the temp
  1511  * table that stores the new.* references. If new.* references are not valid
  1512  * for the trigger being coded (for example an ON DELETE trigger), then newIdx
  1513  * is set to -1. The oldIdx member is analogous to newIdx, for old.* references.
  1514  *
  1515  * The ON CONFLICT policy to be used for the trigger program steps is stored 
  1516  * as the orconf member. If this is OE_Default, then the ON CONFLICT clause 
  1517  * specified for individual triggers steps is used.
  1518  *
  1519  * struct TriggerStack has a "pNext" member, to allow linked lists to be
  1520  * constructed. When coding nested triggers (triggers fired by other triggers)
  1521  * each nested trigger stores its parent trigger's TriggerStack as the "pNext" 
  1522  * pointer. Once the nested trigger has been coded, the pNext value is restored
  1523  * to the pTriggerStack member of the Parse stucture and coding of the parent
  1524  * trigger continues.
  1525  *
  1526  * Before a nested trigger is coded, the linked list pointed to by the 
  1527  * pTriggerStack is scanned to ensure that the trigger is not about to be coded
  1528  * recursively. If this condition is detected, the nested trigger is not coded.
  1529  */
  1530 struct TriggerStack {
  1531   Table *pTab;         /* Table that triggers are currently being coded on */
  1532   int newIdx;          /* Index of vdbe cursor to "new" temp table */
  1533   int oldIdx;          /* Index of vdbe cursor to "old" temp table */
  1534   int orconf;          /* Current orconf policy */
  1535   int ignoreJump;      /* where to jump to for a RAISE(IGNORE) */
  1536   Trigger *pTrigger;   /* The trigger currently being coded */
  1537   TriggerStack *pNext; /* Next trigger down on the trigger stack */
  1538 };
  1539 
  1540 /*
  1541 ** The following structure contains information used by the sqliteFix...
  1542 ** routines as they walk the parse tree to make database references
  1543 ** explicit.  
  1544 */
  1545 typedef struct DbFixer DbFixer;
  1546 struct DbFixer {
  1547   Parse *pParse;      /* The parsing context.  Error messages written here */
  1548   const char *zDb;    /* Make sure all objects are contained in this database */
  1549   const char *zType;  /* Type of the container - used for error messages */
  1550   const Token *pName; /* Name of the container - used for error messages */
  1551 };
  1552 
  1553 /*
  1554 ** A pointer to this structure is used to communicate information
  1555 ** from sqlite3Init and OP_ParseSchema into the sqlite3InitCallback.
  1556 */
  1557 typedef struct {
  1558   sqlite3 *db;        /* The database being initialized */
  1559   int iDb;            /* 0 for main database.  1 for TEMP, 2.. for ATTACHed */
  1560   char **pzErrMsg;    /* Error message stored here */
  1561   int rc;             /* Result code stored here */
  1562 } InitData;
  1563 
  1564 /*
  1565 ** Assuming zIn points to the first byte of a UTF-8 character,
  1566 ** advance zIn to point to the first byte of the next UTF-8 character.
  1567 */
  1568 #define SQLITE_SKIP_UTF8(zIn) {                        \
  1569   if( (*(zIn++))>=0xc0 ){                              \
  1570     while( (*zIn & 0xc0)==0x80 ){ zIn++; }             \
  1571   }                                                    \
  1572 }
  1573 
  1574 /*
  1575 ** The SQLITE_CORRUPT_BKPT macro can be either a constant (for production
  1576 ** builds) or a function call (for debugging).  If it is a function call,
  1577 ** it allows the operator to set a breakpoint at the spot where database
  1578 ** corruption is first detected.
  1579 */
  1580 #ifdef SQLITE_DEBUG
  1581   int sqlite3Corrupt(void);
  1582 # define SQLITE_CORRUPT_BKPT sqlite3Corrupt()
  1583 #else
  1584 # define SQLITE_CORRUPT_BKPT SQLITE_CORRUPT
  1585 #endif
  1586 
  1587 /*
  1588 ** Internal function prototypes
  1589 */
  1590 int sqlite3StrICmp(const char *, const char *);
  1591 int sqlite3StrNICmp(const char *, const char *, int);
  1592 int sqlite3IsNumber(const char*, int*, u8);
  1593 
  1594 void *sqlite3MallocZero(unsigned);
  1595 void *sqlite3DbMallocZero(sqlite3*, unsigned);
  1596 void *sqlite3DbMallocRaw(sqlite3*, unsigned);
  1597 char *sqlite3StrDup(const char*);
  1598 char *sqlite3StrNDup(const char*, int);
  1599 char *sqlite3DbStrDup(sqlite3*,const char*);
  1600 char *sqlite3DbStrNDup(sqlite3*,const char*, int);
  1601 void *sqlite3DbReallocOrFree(sqlite3 *, void *, int);
  1602 void *sqlite3DbRealloc(sqlite3 *, void *, int);
  1603 
  1604 char *sqlite3MPrintf(sqlite3*,const char*, ...);
  1605 char *sqlite3VMPrintf(sqlite3*,const char*, va_list);
  1606 #if defined(SQLITE_TEST) || defined(SQLITE_DEBUG)
  1607   void sqlite3DebugPrintf(const char*, ...);
  1608   void *sqlite3TextToPtr(const char*);
  1609 #endif
  1610 void sqlite3SetString(char **, ...);
  1611 void sqlite3ErrorMsg(Parse*, const char*, ...);
  1612 void sqlite3ErrorClear(Parse*);
  1613 void sqlite3Dequote(char*);
  1614 void sqlite3DequoteExpr(sqlite3*, Expr*);
  1615 int sqlite3KeywordCode(const unsigned char*, int);
  1616 int sqlite3RunParser(Parse*, const char*, char **);
  1617 void sqlite3FinishCoding(Parse*);
  1618 Expr *sqlite3Expr(sqlite3*, int, Expr*, Expr*, const Token*);
  1619 Expr *sqlite3PExpr(Parse*, int, Expr*, Expr*, const Token*);
  1620 Expr *sqlite3RegisterExpr(Parse*,Token*);
  1621 Expr *sqlite3ExprAnd(sqlite3*,Expr*, Expr*);
  1622 void sqlite3ExprSpan(Expr*,Token*,Token*);
  1623 Expr *sqlite3ExprFunction(Parse*,ExprList*, Token*);
  1624 void sqlite3ExprAssignVarNumber(Parse*, Expr*);
  1625 void sqlite3ExprDelete(Expr*);
  1626 ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*,Token*);
  1627 void sqlite3ExprListDelete(ExprList*);
  1628 int sqlite3Init(sqlite3*, char**);
  1629 int sqlite3InitCallback(void*, int, char**, char**);
  1630 void sqlite3Pragma(Parse*,Token*,Token*,Token*,int);
  1631 void sqlite3ResetInternalSchema(sqlite3*, int);
  1632 void sqlite3BeginParse(Parse*,int);
  1633 void sqlite3CommitInternalChanges(sqlite3*);
  1634 Table *sqlite3ResultSetOfSelect(Parse*,char*,Select*);
  1635 void sqlite3OpenMasterTable(Parse *, int);
  1636 void sqlite3StartTable(Parse*,Token*,Token*,int,int,int,int);
  1637 void sqlite3AddColumn(Parse*,Token*);
  1638 void sqlite3AddNotNull(Parse*, int);
  1639 void sqlite3AddPrimaryKey(Parse*, ExprList*, int, int, int);
  1640 void sqlite3AddCheckConstraint(Parse*, Expr*);
  1641 void sqlite3AddColumnType(Parse*,Token*);
  1642 void sqlite3AddDefaultValue(Parse*,Expr*);
  1643 void sqlite3AddCollateType(Parse*, const char*, int);
  1644 void sqlite3EndTable(Parse*,Token*,Token*,Select*);
  1645 
  1646 void sqlite3CreateView(Parse*,Token*,Token*,Token*,Select*,int,int);
  1647 
  1648 #if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE)
  1649   int sqlite3ViewGetColumnNames(Parse*,Table*);
  1650 #else
  1651 # define sqlite3ViewGetColumnNames(A,B) 0
  1652 #endif
  1653 
  1654 void sqlite3DropTable(Parse*, SrcList*, int, int);
  1655 void sqlite3DeleteTable(Table*);
  1656 void sqlite3Insert(Parse*, SrcList*, ExprList*, Select*, IdList*, int);
  1657 void *sqlite3ArrayAllocate(sqlite3*,void*,int,int,int*,int*,int*);
  1658 IdList *sqlite3IdListAppend(sqlite3*, IdList*, Token*);
  1659 int sqlite3IdListIndex(IdList*,const char*);
  1660 SrcList *sqlite3SrcListAppend(sqlite3*, SrcList*, Token*, Token*);
  1661 SrcList *sqlite3SrcListAppendFromTerm(Parse*, SrcList*, Token*, Token*, Token*,
  1662                                       Select*, Expr*, IdList*);
  1663 void sqlite3SrcListShiftJoinType(SrcList*);
  1664 void sqlite3SrcListAssignCursors(Parse*, SrcList*);
  1665 void sqlite3IdListDelete(IdList*);
  1666 void sqlite3SrcListDelete(SrcList*);
  1667 void sqlite3CreateIndex(Parse*,Token*,Token*,SrcList*,ExprList*,int,Token*,
  1668                         Token*, int, int);
  1669 void sqlite3DropIndex(Parse*, SrcList*, int);
  1670 int sqlite3Select(Parse*, Select*, int, int, Select*, int, int*, char *aff);
  1671 Select *sqlite3SelectNew(Parse*,ExprList*,SrcList*,Expr*,ExprList*,
  1672                          Expr*,ExprList*,int,Expr*,Expr*);
  1673 void sqlite3SelectDelete(Select*);
  1674 Table *sqlite3SrcListLookup(Parse*, SrcList*);
  1675 int sqlite3IsReadOnly(Parse*, Table*, int);
  1676 void sqlite3OpenTable(Parse*, int iCur, int iDb, Table*, int);
  1677 void sqlite3DeleteFrom(Parse*, SrcList*, Expr*);
  1678 void sqlite3Update(Parse*, SrcList*, ExprList*, Expr*, int);
  1679 WhereInfo *sqlite3WhereBegin(Parse*, SrcList*, Expr*, ExprList**);
  1680 void sqlite3WhereEnd(WhereInfo*);
  1681 void sqlite3ExprCodeGetColumn(Vdbe*, Table*, int, int);
  1682 void sqlite3ExprCode(Parse*, Expr*);
  1683 void sqlite3ExprCodeAndCache(Parse*, Expr*);
  1684 int sqlite3ExprCodeExprList(Parse*, ExprList*);
  1685 void sqlite3ExprIfTrue(Parse*, Expr*, int, int);
  1686 void sqlite3ExprIfFalse(Parse*, Expr*, int, int);
  1687 Table *sqlite3FindTable(sqlite3*,const char*, const char*);
  1688 Table *sqlite3LocateTable(Parse*,const char*, const char*);
  1689 Index *sqlite3FindIndex(sqlite3*,const char*, const char*);
  1690 void sqlite3UnlinkAndDeleteTable(sqlite3*,int,const char*);
  1691 void sqlite3UnlinkAndDeleteIndex(sqlite3*,int,const char*);
  1692 void sqlite3Vacuum(Parse*);
  1693 int sqlite3RunVacuum(char**, sqlite3*);
  1694 char *sqlite3NameFromToken(sqlite3*, Token*);
  1695 int sqlite3ExprCompare(Expr*, Expr*);
  1696 int sqlite3ExprResolveNames(NameContext *, Expr *);
  1697 int sqlite3ExprAnalyzeAggregates(NameContext*, Expr*);
  1698 int sqlite3ExprAnalyzeAggList(NameContext*,ExprList*);
  1699 Vdbe *sqlite3GetVdbe(Parse*);
  1700 Expr *sqlite3CreateIdExpr(Parse *, const char*);
  1701 void sqlite3Randomness(int, void*);
  1702 void sqlite3RollbackAll(sqlite3*);
  1703 void sqlite3CodeVerifySchema(Parse*, int);
  1704 void sqlite3BeginTransaction(Parse*, int);
  1705 void sqlite3CommitTransaction(Parse*);
  1706 void sqlite3RollbackTransaction(Parse*);
  1707 int sqlite3ExprIsConstant(Expr*);
  1708 int sqlite3ExprIsConstantNotJoin(Expr*);
  1709 int sqlite3ExprIsConstantOrFunction(Expr*);
  1710 int sqlite3ExprIsInteger(Expr*, int*);
  1711 int sqlite3IsRowid(const char*);
  1712 void sqlite3GenerateRowDelete(sqlite3*, Vdbe*, Table*, int, int);
  1713 void sqlite3GenerateRowIndexDelete(Vdbe*, Table*, int, char*);
  1714 void sqlite3GenerateIndexKey(Vdbe*, Index*, int);
  1715 void sqlite3GenerateConstraintChecks(Parse*,Table*,int,char*,int,int,int,int);
  1716 void sqlite3CompleteInsertion(Parse*, Table*, int, char*, int, int, int, int);
  1717 void sqlite3OpenTableAndIndices(Parse*, Table*, int, int);
  1718 void sqlite3BeginWriteOperation(Parse*, int, int);
  1719 Expr *sqlite3ExprDup(sqlite3*,Expr*);
  1720 void sqlite3TokenCopy(sqlite3*,Token*, Token*);
  1721 ExprList *sqlite3ExprListDup(sqlite3*,ExprList*);
  1722 SrcList *sqlite3SrcListDup(sqlite3*,SrcList*);
  1723 IdList *sqlite3IdListDup(sqlite3*,IdList*);
  1724 Select *sqlite3SelectDup(sqlite3*,Select*);
  1725 FuncDef *sqlite3FindFunction(sqlite3*,const char*,int,int,u8,int);
  1726 void sqlite3RegisterBuiltinFunctions(sqlite3*);
  1727 void sqlite3RegisterDateTimeFunctions(sqlite3*);
  1728 int sqlite3SafetyOn(sqlite3*);
  1729 int sqlite3SafetyOff(sqlite3*);
  1730 int sqlite3SafetyCheck(sqlite3*);
  1731 void sqlite3ChangeCookie(sqlite3*, Vdbe*, int);
  1732 
  1733 #ifndef SQLITE_OMIT_TRIGGER
  1734   void sqlite3BeginTrigger(Parse*, Token*,Token*,int,int,IdList*,SrcList*,
  1735                            Expr*,int, int);
  1736   void sqlite3FinishTrigger(Parse*, TriggerStep*, Token*);
  1737   void sqlite3DropTrigger(Parse*, SrcList*, int);
  1738   void sqlite3DropTriggerPtr(Parse*, Trigger*);
  1739   int sqlite3TriggersExist(Parse*, Table*, int, ExprList*);
  1740   int sqlite3CodeRowTrigger(Parse*, int, ExprList*, int, Table *, int, int, 
  1741                            int, int);
  1742   void sqliteViewTriggers(Parse*, Table*, Expr*, int, ExprList*);
  1743   void sqlite3DeleteTriggerStep(TriggerStep*);
  1744   TriggerStep *sqlite3TriggerSelectStep(sqlite3*,Select*);
  1745   TriggerStep *sqlite3TriggerInsertStep(sqlite3*,Token*, IdList*,
  1746                                         ExprList*,Select*,int);
  1747   TriggerStep *sqlite3TriggerUpdateStep(sqlite3*,Token*,ExprList*, Expr*, int);
  1748   TriggerStep *sqlite3TriggerDeleteStep(sqlite3*,Token*, Expr*);
  1749   void sqlite3DeleteTrigger(Trigger*);
  1750   void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*);
  1751 #else
  1752 # define sqlite3TriggersExist(A,B,C,D,E,F) 0
  1753 # define sqlite3DeleteTrigger(A)
  1754 # define sqlite3DropTriggerPtr(A,B)
  1755 # define sqlite3UnlinkAndDeleteTrigger(A,B,C)
  1756 # define sqlite3CodeRowTrigger(A,B,C,D,E,F,G,H,I) 0
  1757 #endif
  1758 
  1759 int sqlite3JoinType(Parse*, Token*, Token*, Token*);
  1760 void sqlite3CreateForeignKey(Parse*, ExprList*, Token*, ExprList*, int);
  1761 void sqlite3DeferForeignKey(Parse*, int);
  1762 #ifndef SQLITE_OMIT_AUTHORIZATION
  1763   void sqlite3AuthRead(Parse*,Expr*,Schema*,SrcList*);
  1764   int sqlite3AuthCheck(Parse*,int, const char*, const char*, const char*);
  1765   void sqlite3AuthContextPush(Parse*, AuthContext*, const char*);
  1766   void sqlite3AuthContextPop(AuthContext*);
  1767 #else
  1768 # define sqlite3AuthRead(a,b,c)
  1769 # define sqlite3AuthCheck(a,b,c,d,e)    SQLITE_OK
  1770 # define sqlite3AuthContextPush(a,b,c)
  1771 # define sqlite3AuthContextPop(a)  ((void)(a))
  1772 #endif
  1773 void sqlite3Attach(Parse*, Expr*, Expr*, Expr*);
  1774 void sqlite3Detach(Parse*, Expr*);
  1775 int sqlite3BtreeFactory(const sqlite3 *db, const char *zFilename,
  1776                        int omitJournal, int nCache, int flags, Btree **ppBtree);
  1777 int sqlite3FixInit(DbFixer*, Parse*, int, const char*, const Token*);
  1778 int sqlite3FixSrcList(DbFixer*, SrcList*);
  1779 int sqlite3FixSelect(DbFixer*, Select*);
  1780 int sqlite3FixExpr(DbFixer*, Expr*);
  1781 int sqlite3FixExprList(DbFixer*, ExprList*);
  1782 int sqlite3FixTriggerStep(DbFixer*, TriggerStep*);
  1783 int sqlite3AtoF(const char *z, double*);
  1784 char *sqlite3_snprintf(int,char*,const char*,...);
  1785 int sqlite3GetInt32(const char *, int*);
  1786 int sqlite3FitsIn64Bits(const char *);
  1787 int sqlite3Utf16ByteLen(const void *pData, int nChar);
  1788 int sqlite3Utf8CharLen(const char *pData, int nByte);
  1789 int sqlite3Utf8Read(const u8*, const u8*, const u8**);
  1790 int sqlite3PutVarint(unsigned char *, u64);
  1791 int sqlite3GetVarint(const unsigned char *, u64 *);
  1792 int sqlite3GetVarint32(const unsigned char *, u32 *);
  1793 int sqlite3VarintLen(u64 v);
  1794 void sqlite3IndexAffinityStr(Vdbe *, Index *);
  1795 void sqlite3TableAffinityStr(Vdbe *, Table *);
  1796 char sqlite3CompareAffinity(Expr *pExpr, char aff2);
  1797 int sqlite3IndexAffinityOk(Expr *pExpr, char idx_affinity);
  1798 char sqlite3ExprAffinity(Expr *pExpr);
  1799 int sqlite3Atoi64(const char*, i64*);
  1800 void sqlite3Error(sqlite3*, int, const char*,...);
  1801 void *sqlite3HexToBlob(sqlite3*, const char *z);
  1802 int sqlite3TwoPartName(Parse *, Token *, Token *, Token **);
  1803 const char *sqlite3ErrStr(int);
  1804 int sqlite3ReadSchema(Parse *pParse);
  1805 CollSeq *sqlite3FindCollSeq(sqlite3*,u8 enc, const char *,int,int);
  1806 CollSeq *sqlite3LocateCollSeq(Parse *pParse, const char *zName, int nName);
  1807 CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr);
  1808 Expr *sqlite3ExprSetColl(Parse *pParse, Expr *, Token *);
  1809 int sqlite3CheckCollSeq(Parse *, CollSeq *);
  1810 int sqlite3CheckObjectName(Parse *, const char *);
  1811 void sqlite3VdbeSetChanges(sqlite3 *, int);
  1812 
  1813 const void *sqlite3ValueText(sqlite3_value*, u8);
  1814 int sqlite3ValueBytes(sqlite3_value*, u8);
  1815 void sqlite3ValueSetStr(sqlite3_value*, int, const void *,u8, 
  1816                         void(*)(void*));
  1817 void sqlite3ValueFree(sqlite3_value*);
  1818 sqlite3_value *sqlite3ValueNew(sqlite3 *);
  1819 char *sqlite3Utf16to8(sqlite3 *, const void*, int);
  1820 int sqlite3ValueFromExpr(sqlite3 *, Expr *, u8, u8, sqlite3_value **);
  1821 void sqlite3ValueApplyAffinity(sqlite3_value *, u8, u8);
  1822 #ifndef SQLITE_AMALGAMATION
  1823 extern const unsigned char sqlite3UpperToLower[];
  1824 #endif
  1825 void sqlite3RootPageMoved(Db*, int, int);
  1826 void sqlite3Reindex(Parse*, Token*, Token*);
  1827 void sqlite3AlterFunctions(sqlite3*);
  1828 void sqlite3AlterRenameTable(Parse*, SrcList*, Token*);
  1829 int sqlite3GetToken(const unsigned char *, int *);
  1830 void sqlite3NestedParse(Parse*, const char*, ...);
  1831 void sqlite3ExpirePreparedStatements(sqlite3*);
  1832 void sqlite3CodeSubselect(Parse *, Expr *);
  1833 int sqlite3SelectResolve(Parse *, Select *, NameContext *);
  1834 void sqlite3ColumnDefault(Vdbe *, Table *, int);
  1835 void sqlite3AlterFinishAddColumn(Parse *, Token *);
  1836 void sqlite3AlterBeginAddColumn(Parse *, SrcList *);
  1837 CollSeq *sqlite3GetCollSeq(sqlite3*, CollSeq *, const char *, int);
  1838 char sqlite3AffinityType(const Token*);
  1839 void sqlite3Analyze(Parse*, Token*, Token*);
  1840 int sqlite3InvokeBusyHandler(BusyHandler*);
  1841 int sqlite3FindDb(sqlite3*, Token*);
  1842 int sqlite3AnalysisLoad(sqlite3*,int iDB);
  1843 void sqlite3DefaultRowEst(Index*);
  1844 void sqlite3RegisterLikeFunctions(sqlite3*, int);
  1845 int sqlite3IsLikeFunction(sqlite3*,Expr*,int*,char*);
  1846 void sqlite3AttachFunctions(sqlite3 *);
  1847 void sqlite3MinimumFileFormat(Parse*, int, int);
  1848 void sqlite3SchemaFree(void *);
  1849 Schema *sqlite3SchemaGet(sqlite3 *, Btree *);
  1850 int sqlite3SchemaToIndex(sqlite3 *db, Schema *);
  1851 KeyInfo *sqlite3IndexKeyinfo(Parse *, Index *);
  1852 int sqlite3CreateFunc(sqlite3 *, const char *, int, int, void *, 
  1853   void (*)(sqlite3_context*,int,sqlite3_value **),
  1854   void (*)(sqlite3_context*,int,sqlite3_value **), void (*)(sqlite3_context*));
  1855 int sqlite3ApiExit(sqlite3 *db, int);
  1856 void sqlite3AbortOtherActiveVdbes(sqlite3 *, Vdbe *);
  1857 int sqlite3OpenTempDatabase(Parse *);
  1858 
  1859 
  1860 /*
  1861 ** The interface to the LEMON-generated parser
  1862 */
  1863 void *sqlite3ParserAlloc(void*(*)(size_t));
  1864 void sqlite3ParserFree(void*, void(*)(void*));
  1865 void sqlite3Parser(void*, int, Token, Parse*);
  1866 
  1867 #ifndef SQLITE_OMIT_LOAD_EXTENSION
  1868   void sqlite3CloseExtensions(sqlite3*);
  1869   int sqlite3AutoLoadExtensions(sqlite3*);
  1870 #else
  1871 # define sqlite3CloseExtensions(X)
  1872 # define sqlite3AutoLoadExtensions(X)  SQLITE_OK
  1873 #endif
  1874 
  1875 #ifndef SQLITE_OMIT_SHARED_CACHE
  1876   void sqlite3TableLock(Parse *, int, int, u8, const char *);
  1877 #else
  1878   #define sqlite3TableLock(v,w,x,y,z)
  1879 #endif
  1880 
  1881 #ifdef SQLITE_TEST
  1882   int sqlite3Utf8To8(unsigned char*);
  1883 #endif
  1884 
  1885 /*
  1886 ** The MallocDisallow() and MallocAllow() routines are like asserts.
  1887 ** Call them around a section of code that you do not expect to do
  1888 ** any memory allocation.
  1889 */
  1890 #ifdef SQLITE_MEMDEBUG
  1891   void sqlite3MallocDisallow(void);
  1892   void sqlite3MallocAllow(void);
  1893   void sqlite3MallocBenignFailure(int);
  1894   void sqlite3MallocEnterBenignBlock(int isBenign);
  1895   void sqlite3MallocLeaveBenignBlock();
  1896 #else
  1897 # define sqlite3MallocDisallow()
  1898 # define sqlite3MallocAllow()
  1899 # define sqlite3MallocBenignFailure(x)
  1900 # define sqlite3MallocEnterBenignBlock(x);
  1901 # define sqlite3MallocLeaveBenignBlock();
  1902 #endif
  1903 
  1904 
  1905 #ifdef SQLITE_OMIT_VIRTUALTABLE
  1906 #  define sqlite3VtabClear(X)
  1907 #  define sqlite3VtabSync(X,Y) (Y)
  1908 #  define sqlite3VtabRollback(X)
  1909 #  define sqlite3VtabCommit(X)
  1910 #else
  1911    void sqlite3VtabClear(Table*);
  1912    int sqlite3VtabSync(sqlite3 *db, int rc);
  1913    int sqlite3VtabRollback(sqlite3 *db);
  1914    int sqlite3VtabCommit(sqlite3 *db);
  1915 #endif
  1916 void sqlite3VtabLock(sqlite3_vtab*);
  1917 void sqlite3VtabUnlock(sqlite3*, sqlite3_vtab*);
  1918 void sqlite3VtabBeginParse(Parse*, Token*, Token*, Token*);
  1919 void sqlite3VtabFinishParse(Parse*, Token*);
  1920 void sqlite3VtabArgInit(Parse*);
  1921 void sqlite3VtabArgExtend(Parse*, Token*);
  1922 int sqlite3VtabCallCreate(sqlite3*, int, const char *, char **);
  1923 int sqlite3VtabCallConnect(Parse*, Table*);
  1924 int sqlite3VtabCallDestroy(sqlite3*, int, const char *);
  1925 int sqlite3VtabBegin(sqlite3 *, sqlite3_vtab *);
  1926 FuncDef *sqlite3VtabOverloadFunction(sqlite3 *,FuncDef*, int nArg, Expr*);
  1927 void sqlite3InvalidFunction(sqlite3_context*,int,sqlite3_value**);
  1928 int sqlite3Reprepare(Vdbe*);
  1929 void sqlite3ExprListCheckLength(Parse*, ExprList*, int, const char*);
  1930 CollSeq *sqlite3BinaryCompareCollSeq(Parse *, Expr *, Expr *);
  1931 
  1932 #ifdef SQLITE_ENABLE_ATOMIC_WRITE
  1933   int sqlite3JournalOpen(sqlite3_vfs *, const char *, sqlite3_file *, int, int);
  1934   int sqlite3JournalSize(sqlite3_vfs *);
  1935   int sqlite3JournalCreate(sqlite3_file *);
  1936 #else
  1937   #define sqlite3JournalSize(pVfs) ((pVfs)->szOsFile)
  1938 #endif
  1939 
  1940 #if defined(SQLITE_TEST) || SQLITE_MAX_EXPR_DEPTH>0
  1941   void sqlite3ExprSetHeight(Expr *);
  1942   int sqlite3SelectExprHeight(Select *);
  1943 #else
  1944   #define sqlite3ExprSetHeight(x)
  1945 #endif
  1946 
  1947 u32 sqlite3Get4byte(const u8*);
  1948 void sqlite3Put4byte(u8*, u32);
  1949 
  1950 #ifdef SQLITE_SSE
  1951 #include "sseInt.h"
  1952 #endif
  1953 
  1954 #ifdef SQLITE_DEBUG
  1955   void sqlite3ParserTrace(FILE*, char *);
  1956 #endif
  1957 
  1958 /*
  1959 ** If the SQLITE_ENABLE IOTRACE exists then the global variable
  1960 ** sqlite3_io_trace is a pointer to a printf-like routine used to
  1961 ** print I/O tracing messages. 
  1962 */
  1963 #ifdef SQLITE_ENABLE_IOTRACE
  1964 # define IOTRACE(A)  if( sqlite3_io_trace ){ sqlite3_io_trace A; }
  1965   void sqlite3VdbeIOTraceSql(Vdbe*);
  1966 #else
  1967 # define IOTRACE(A)
  1968 # define sqlite3VdbeIOTraceSql(X)
  1969 #endif
  1970 SQLITE_EXTERN void (*sqlite3_io_trace)(const char*,...);
  1971 
  1972 #endif