xref: /sqlite-3.40.0/src/sqliteInt.h (revision 4dcbdbff)
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: sqliteInt.h,v 1.400 2005/07/23 22:59:56 drh Exp $
15 */
16 #ifndef _SQLITEINT_H_
17 #define _SQLITEINT_H_
18 
19 /*
20 ** These #defines should enable >2GB file support on Posix if the
21 ** underlying operating system supports it.  If the OS lacks
22 ** large file support, or if the OS is windows, these should be no-ops.
23 **
24 ** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
25 ** on the compiler command line.  This is necessary if you are compiling
26 ** on a recent machine (ex: RedHat 7.2) but you want your code to work
27 ** on an older machine (ex: RedHat 6.0).  If you compile on RedHat 7.2
28 ** without this option, LFS is enable.  But LFS does not exist in the kernel
29 ** in RedHat 6.0, so the code won't work.  Hence, for maximum binary
30 ** portability you should omit LFS.
31 **
32 ** Similar is true for MacOS.  LFS is only supported on MacOS 9 and later.
33 */
34 #ifndef SQLITE_DISABLE_LFS
35 # define _LARGE_FILE       1
36 # ifndef _FILE_OFFSET_BITS
37 #   define _FILE_OFFSET_BITS 64
38 # endif
39 # define _LARGEFILE_SOURCE 1
40 #endif
41 
42 #include "sqlite3.h"
43 #include "hash.h"
44 #include "parse.h"
45 #include <stdio.h>
46 #include <stdlib.h>
47 #include <string.h>
48 #include <assert.h>
49 #include <stddef.h>
50 
51 /*
52 ** The maximum number of in-memory pages to use for the main database
53 ** table and for temporary tables. Internally, the MAX_PAGES and
54 ** TEMP_PAGES macros are used. To override the default values at
55 ** compilation time, the SQLITE_DEFAULT_CACHE_SIZE and
56 ** SQLITE_DEFAULT_TEMP_CACHE_SIZE macros should be set.
57 */
58 #ifdef SQLITE_DEFAULT_CACHE_SIZE
59 # define MAX_PAGES SQLITE_DEFAULT_CACHE_SIZE
60 #else
61 # define MAX_PAGES   2000
62 #endif
63 #ifdef SQLITE_DEFAULT_TEMP_CACHE_SIZE
64 # define TEMP_PAGES SQLITE_DEFAULT_TEMP_CACHE_SIZE
65 #else
66 # define TEMP_PAGES   500
67 #endif
68 
69 /*
70 ** OMIT_TEMPDB is set to 1 if SQLITE_OMIT_TEMPDB is defined, or 0
71 ** afterward. Having this macro allows us to cause the C compiler
72 ** to omit code used by TEMP tables without messy #ifndef statements.
73 */
74 #ifdef SQLITE_OMIT_TEMPDB
75 #define OMIT_TEMPDB 1
76 #else
77 #define OMIT_TEMPDB 0
78 #endif
79 
80 /*
81 ** If the following macro is set to 1, then NULL values are considered
82 ** distinct for the SELECT DISTINCT statement and for UNION or EXCEPT
83 ** compound queries.  No other SQL database engine (among those tested)
84 ** works this way except for OCELOT.  But the SQL92 spec implies that
85 ** this is how things should work.
86 **
87 ** If the following macro is set to 0, then NULLs are indistinct for
88 ** SELECT DISTINCT and for UNION.
89 */
90 #define NULL_ALWAYS_DISTINCT 0
91 
92 /*
93 ** If the following macro is set to 1, then NULL values are considered
94 ** distinct when determining whether or not two entries are the same
95 ** in a UNIQUE index.  This is the way PostgreSQL, Oracle, DB2, MySQL,
96 ** OCELOT, and Firebird all work.  The SQL92 spec explicitly says this
97 ** is the way things are suppose to work.
98 **
99 ** If the following macro is set to 0, the NULLs are indistinct for
100 ** a UNIQUE index.  In this mode, you can only have a single NULL entry
101 ** for a column declared UNIQUE.  This is the way Informix and SQL Server
102 ** work.
103 */
104 #define NULL_DISTINCT_FOR_UNIQUE 1
105 
106 /*
107 ** The maximum number of attached databases.  This must be at least 2
108 ** in order to support the main database file (0) and the file used to
109 ** hold temporary tables (1).  And it must be less than 32 because
110 ** we use a bitmask of databases with a u32 in places (for example
111 ** the Parse.cookieMask field).
112 */
113 #define MAX_ATTACHED 10
114 
115 /*
116 ** The maximum value of a ?nnn wildcard that the parser will accept.
117 */
118 #define SQLITE_MAX_VARIABLE_NUMBER 999
119 
120 /*
121 ** When building SQLite for embedded systems where memory is scarce,
122 ** you can define one or more of the following macros to omit extra
123 ** features of the library and thus keep the size of the library to
124 ** a minimum.
125 */
126 /* #define SQLITE_OMIT_AUTHORIZATION  1 */
127 /* #define SQLITE_OMIT_MEMORYDB     1 */
128 /* #define SQLITE_OMIT_VACUUM         1 */
129 /* #define SQLITE_OMIT_DATETIME_FUNCS 1 */
130 /* #define SQLITE_OMIT_PROGRESS_CALLBACK 1 */
131 /* #define SQLITE_OMIT_AUTOVACUUM */
132 /* #define SQLITE_OMIT_ALTERTABLE */
133 
134 /*
135 ** Provide a default value for TEMP_STORE in case it is not specified
136 ** on the command-line
137 */
138 #ifndef TEMP_STORE
139 # define TEMP_STORE 1
140 #endif
141 
142 /*
143 ** GCC does not define the offsetof() macro so we'll have to do it
144 ** ourselves.
145 */
146 #ifndef offsetof
147 #define offsetof(STRUCTURE,FIELD) ((int)((char*)&((STRUCTURE*)0)->FIELD))
148 #endif
149 
150 /*
151 ** Integers of known sizes.  These typedefs might change for architectures
152 ** where the sizes very.  Preprocessor macros are available so that the
153 ** types can be conveniently redefined at compile-type.  Like this:
154 **
155 **         cc '-DUINTPTR_TYPE=long long int' ...
156 */
157 #ifndef UINT64_TYPE
158 # if defined(_MSC_VER) || defined(__BORLANDC__)
159 #   define UINT64_TYPE unsigned __int64
160 # else
161 #   define UINT64_TYPE unsigned long long int
162 # endif
163 #endif
164 #ifndef UINT32_TYPE
165 # define UINT32_TYPE unsigned int
166 #endif
167 #ifndef UINT16_TYPE
168 # define UINT16_TYPE unsigned short int
169 #endif
170 #ifndef INT16_TYPE
171 # define INT16_TYPE short int
172 #endif
173 #ifndef UINT8_TYPE
174 # define UINT8_TYPE unsigned char
175 #endif
176 #ifndef INT8_TYPE
177 # define INT8_TYPE signed char
178 #endif
179 #ifndef LONGDOUBLE_TYPE
180 # define LONGDOUBLE_TYPE long double
181 #endif
182 typedef sqlite_int64 i64;          /* 8-byte signed integer */
183 typedef UINT64_TYPE u64;           /* 8-byte unsigned integer */
184 typedef UINT32_TYPE u32;           /* 4-byte unsigned integer */
185 typedef UINT16_TYPE u16;           /* 2-byte unsigned integer */
186 typedef INT16_TYPE i16;            /* 2-byte signed integer */
187 typedef UINT8_TYPE u8;             /* 1-byte unsigned integer */
188 typedef UINT8_TYPE i8;             /* 1-byte signed integer */
189 
190 /*
191 ** Macros to determine whether the machine is big or little endian,
192 ** evaluated at runtime.
193 */
194 extern const int sqlite3one;
195 #define SQLITE_BIGENDIAN    (*(char *)(&sqlite3one)==0)
196 #define SQLITE_LITTLEENDIAN (*(char *)(&sqlite3one)==1)
197 
198 /*
199 ** An instance of the following structure is used to store the busy-handler
200 ** callback for a given sqlite handle.
201 **
202 ** The sqlite.busyHandler member of the sqlite struct contains the busy
203 ** callback for the database handle. Each pager opened via the sqlite
204 ** handle is passed a pointer to sqlite.busyHandler. The busy-handler
205 ** callback is currently invoked only from within pager.c.
206 */
207 typedef struct BusyHandler BusyHandler;
208 struct BusyHandler {
209   int (*xFunc)(void *,int);  /* The busy callback */
210   void *pArg;                /* First arg to busy callback */
211   int nBusy;                 /* Incremented with each busy call */
212 };
213 
214 /*
215 ** Defer sourcing vdbe.h and btree.h until after the "u8" and
216 ** "BusyHandler typedefs.
217 */
218 #include "vdbe.h"
219 #include "btree.h"
220 
221 /*
222 ** This macro casts a pointer to an integer.  Useful for doing
223 ** pointer arithmetic.
224 */
225 #define Addr(X)  ((uptr)X)
226 
227 /*
228 ** If memory allocation problems are found, recompile with
229 **
230 **      -DSQLITE_DEBUG=1
231 **
232 ** to enable some sanity checking on malloc() and free().  To
233 ** check for memory leaks, recompile with
234 **
235 **      -DSQLITE_DEBUG=2
236 **
237 ** and a line of text will be written to standard error for
238 ** each malloc() and free().  This output can be analyzed
239 ** by an AWK script to determine if there are any leaks.
240 */
241 #ifdef SQLITE_MEMDEBUG
242 # define sqliteMalloc(X)    sqlite3Malloc_(X,1,__FILE__,__LINE__)
243 # define sqliteMallocRaw(X) sqlite3Malloc_(X,0,__FILE__,__LINE__)
244 # define sqliteFree(X)      sqlite3Free_(X,__FILE__,__LINE__)
245 # define sqliteRealloc(X,Y) sqlite3Realloc_(X,Y,__FILE__,__LINE__)
246 # define sqliteStrDup(X)    sqlite3StrDup_(X,__FILE__,__LINE__)
247 # define sqliteStrNDup(X,Y) sqlite3StrNDup_(X,Y,__FILE__,__LINE__)
248 #else
249 # define sqliteFree          sqlite3FreeX
250 # define sqliteMalloc        sqlite3Malloc
251 # define sqliteMallocRaw     sqlite3MallocRaw
252 # define sqliteRealloc       sqlite3Realloc
253 # define sqliteStrDup        sqlite3StrDup
254 # define sqliteStrNDup       sqlite3StrNDup
255 #endif
256 
257 /*
258 ** This variable gets set if malloc() ever fails.  After it gets set,
259 ** the SQLite library shuts down permanently.
260 */
261 extern int sqlite3_malloc_failed;
262 
263 /*
264 ** The following global variables are used for testing and debugging
265 ** only.  They only work if SQLITE_DEBUG is defined.
266 */
267 #ifdef SQLITE_MEMDEBUG
268 extern int sqlite3_nMalloc;      /* Number of sqliteMalloc() calls */
269 extern int sqlite3_nFree;        /* Number of sqliteFree() calls */
270 extern int sqlite3_iMallocFail;  /* Fail sqliteMalloc() after this many calls */
271 extern int sqlite3_iMallocReset; /* Set iMallocFail to this when it reaches 0 */
272 #endif
273 
274 /*
275 ** Name of the master database table.  The master database table
276 ** is a special table that holds the names and attributes of all
277 ** user tables and indices.
278 */
279 #define MASTER_NAME       "sqlite_master"
280 #define TEMP_MASTER_NAME  "sqlite_temp_master"
281 
282 /*
283 ** The root-page of the master database table.
284 */
285 #define MASTER_ROOT       1
286 
287 /*
288 ** The name of the schema table.
289 */
290 #define SCHEMA_TABLE(x)  ((!OMIT_TEMPDB)&&(x==1)?TEMP_MASTER_NAME:MASTER_NAME)
291 
292 /*
293 ** A convenience macro that returns the number of elements in
294 ** an array.
295 */
296 #define ArraySize(X)    (sizeof(X)/sizeof(X[0]))
297 
298 /*
299 ** Forward references to structures
300 */
301 typedef struct AggExpr AggExpr;
302 typedef struct AuthContext AuthContext;
303 typedef struct CollSeq CollSeq;
304 typedef struct Column Column;
305 typedef struct Db Db;
306 typedef struct Expr Expr;
307 typedef struct ExprList ExprList;
308 typedef struct FKey FKey;
309 typedef struct FuncDef FuncDef;
310 typedef struct IdList IdList;
311 typedef struct Index Index;
312 typedef struct KeyClass KeyClass;
313 typedef struct KeyInfo KeyInfo;
314 typedef struct NameContext NameContext;
315 typedef struct Parse Parse;
316 typedef struct Select Select;
317 typedef struct SrcList SrcList;
318 typedef struct Table Table;
319 typedef struct Token Token;
320 typedef struct TriggerStack TriggerStack;
321 typedef struct TriggerStep TriggerStep;
322 typedef struct Trigger Trigger;
323 typedef struct WhereInfo WhereInfo;
324 typedef struct WhereLevel WhereLevel;
325 
326 /*
327 ** Each database file to be accessed by the system is an instance
328 ** of the following structure.  There are normally two of these structures
329 ** in the sqlite.aDb[] array.  aDb[0] is the main database file and
330 ** aDb[1] is the database file used to hold temporary tables.  Additional
331 ** databases may be attached.
332 */
333 struct Db {
334   char *zName;         /* Name of this database */
335   Btree *pBt;          /* The B*Tree structure for this database file */
336   int schema_cookie;   /* Database schema version number for this file */
337   Hash tblHash;        /* All tables indexed by name */
338   Hash idxHash;        /* All (named) indices indexed by name */
339   Hash trigHash;       /* All triggers indexed by name */
340   Hash aFKey;          /* Foreign keys indexed by to-table */
341   u16 flags;           /* Flags associated with this database */
342   u8 inTrans;          /* 0: not writable.  1: Transaction.  2: Checkpoint */
343   u8 safety_level;     /* How aggressive at synching data to disk */
344   int cache_size;      /* Number of pages to use in the cache */
345   Table *pSeqTab;      /* The sqlite_sequence table used by AUTOINCREMENT */
346   void *pAux;               /* Auxiliary data.  Usually NULL */
347   void (*xFreeAux)(void*);  /* Routine to free pAux */
348 };
349 
350 /*
351 ** These macros can be used to test, set, or clear bits in the
352 ** Db.flags field.
353 */
354 #define DbHasProperty(D,I,P)     (((D)->aDb[I].flags&(P))==(P))
355 #define DbHasAnyProperty(D,I,P)  (((D)->aDb[I].flags&(P))!=0)
356 #define DbSetProperty(D,I,P)     (D)->aDb[I].flags|=(P)
357 #define DbClearProperty(D,I,P)   (D)->aDb[I].flags&=~(P)
358 
359 /*
360 ** Allowed values for the DB.flags field.
361 **
362 ** The DB_SchemaLoaded flag is set after the database schema has been
363 ** read into internal hash tables.
364 **
365 ** DB_UnresetViews means that one or more views have column names that
366 ** have been filled out.  If the schema changes, these column names might
367 ** changes and so the view will need to be reset.
368 */
369 #define DB_SchemaLoaded    0x0001  /* The schema has been loaded */
370 #define DB_UnresetViews    0x0002  /* Some views have defined column names */
371 
372 #define SQLITE_UTF16NATIVE (SQLITE_BIGENDIAN?SQLITE_UTF16BE:SQLITE_UTF16LE)
373 
374 /*
375 ** Each database is an instance of the following structure.
376 **
377 ** The sqlite.lastRowid records the last insert rowid generated by an
378 ** insert statement.  Inserts on views do not affect its value.  Each
379 ** trigger has its own context, so that lastRowid can be updated inside
380 ** triggers as usual.  The previous value will be restored once the trigger
381 ** exits.  Upon entering a before or instead of trigger, lastRowid is no
382 ** longer (since after version 2.8.12) reset to -1.
383 **
384 ** The sqlite.nChange does not count changes within triggers and keeps no
385 ** context.  It is reset at start of sqlite3_exec.
386 ** The sqlite.lsChange represents the number of changes made by the last
387 ** insert, update, or delete statement.  It remains constant throughout the
388 ** length of a statement and is then updated by OP_SetCounts.  It keeps a
389 ** context stack just like lastRowid so that the count of changes
390 ** within a trigger is not seen outside the trigger.  Changes to views do not
391 ** affect the value of lsChange.
392 ** The sqlite.csChange keeps track of the number of current changes (since
393 ** the last statement) and is used to update sqlite_lsChange.
394 **
395 ** The member variables sqlite.errCode, sqlite.zErrMsg and sqlite.zErrMsg16
396 ** store the most recent error code and, if applicable, string. The
397 ** internal function sqlite3Error() is used to set these variables
398 ** consistently.
399 */
400 struct sqlite3 {
401   int nDb;                      /* Number of backends currently in use */
402   Db *aDb;                      /* All backends */
403   int flags;                    /* Miscellanous flags. See below */
404   int errCode;                  /* Most recent error code (SQLITE_*) */
405   u8 enc;                       /* Text encoding for this database. */
406   u8 autoCommit;                /* The auto-commit flag. */
407   u8 file_format;               /* What file format version is this database? */
408   u8 temp_store;                /* 1: file 2: memory 0: default */
409   int nTable;                   /* Number of tables in the database */
410   CollSeq *pDfltColl;           /* The default collating sequence (BINARY) */
411   i64 lastRowid;                /* ROWID of most recent insert (see above) */
412   i64 priorNewRowid;            /* Last randomly generated ROWID */
413   int magic;                    /* Magic number for detect library misuse */
414   int nChange;                  /* Value returned by sqlite3_changes() */
415   int nTotalChange;             /* Value returned by sqlite3_total_changes() */
416   struct sqlite3InitInfo {      /* Information used during initialization */
417     int iDb;                    /* When back is being initialized */
418     int newTnum;                /* Rootpage of table being initialized */
419     u8 busy;                    /* TRUE if currently initializing */
420   } init;
421   struct Vdbe *pVdbe;           /* List of active virtual machines */
422   int activeVdbeCnt;            /* Number of vdbes currently executing */
423   void (*xTrace)(void*,const char*);     /* Trace function */
424   void *pTraceArg;                       /* Argument to the trace function */
425   void *pCommitArg;             /* Argument to xCommitCallback() */
426   int (*xCommitCallback)(void*);/* Invoked at every commit. */
427   void(*xCollNeeded)(void*,sqlite3*,int eTextRep,const char*);
428   void(*xCollNeeded16)(void*,sqlite3*,int eTextRep,const void*);
429   void *pCollNeededArg;
430   sqlite3_value *pValue;        /* Value used for transient conversions */
431   sqlite3_value *pErr;          /* Most recent error message */
432   char *zErrMsg;                /* Most recent error message (UTF-8 encoded) */
433   char *zErrMsg16;              /* Most recent error message (UTF-16 encoded) */
434 #ifndef SQLITE_OMIT_AUTHORIZATION
435   int (*xAuth)(void*,int,const char*,const char*,const char*,const char*);
436                                 /* Access authorization function */
437   void *pAuthArg;               /* 1st argument to the access auth function */
438 #endif
439 #ifndef SQLITE_OMIT_PROGRESS_CALLBACK
440   int (*xProgress)(void *);     /* The progress callback */
441   void *pProgressArg;           /* Argument to the progress callback */
442   int nProgressOps;             /* Number of opcodes for progress callback */
443 #endif
444 #ifndef SQLITE_OMIT_GLOBALRECOVER
445   sqlite3 *pNext;               /* Linked list of open db handles. */
446 #endif
447   Hash aFunc;                   /* All functions that can be in SQL exprs */
448   Hash aCollSeq;                /* All collating sequences */
449   BusyHandler busyHandler;      /* Busy callback */
450   int busyTimeout;             /* Busy handler timeout, in msec */
451   Db aDbStatic[2];              /* Static space for the 2 default backends */
452 #ifdef SQLITE_SSE
453   sqlite3_stmt *pFetch;         /* Used by SSE to fetch stored statements */
454 #endif
455 };
456 
457 /*
458 ** Possible values for the sqlite.flags and or Db.flags fields.
459 **
460 ** On sqlite.flags, the SQLITE_InTrans value means that we have
461 ** executed a BEGIN.  On Db.flags, SQLITE_InTrans means a statement
462 ** transaction is active on that particular database file.
463 */
464 #define SQLITE_VdbeTrace      0x00000001  /* True to trace VDBE execution */
465 #define SQLITE_Initialized    0x00000002  /* True after initialization */
466 #define SQLITE_Interrupt      0x00000004  /* Cancel current operation */
467 #define SQLITE_InTrans        0x00000008  /* True if in a transaction */
468 #define SQLITE_InternChanges  0x00000010  /* Uncommitted Hash table changes */
469 #define SQLITE_FullColNames   0x00000020  /* Show full column names on SELECT */
470 #define SQLITE_ShortColNames  0x00000040  /* Show short columns names */
471 #define SQLITE_CountRows      0x00000080  /* Count rows changed by INSERT, */
472                                           /*   DELETE, or UPDATE and return */
473                                           /*   the count using a callback. */
474 #define SQLITE_NullCallback   0x00000100  /* Invoke the callback once if the */
475                                           /*   result set is empty */
476 #define SQLITE_SqlTrace       0x00000200  /* Debug print SQL as it executes */
477 #define SQLITE_VdbeListing    0x00000400  /* Debug listings of VDBE programs */
478 #define SQLITE_WriteSchema    0x00000800  /* OK to update SQLITE_MASTER */
479 #define SQLITE_NoReadlock     0x00001000  /* Readlocks are omitted when
480                                           ** accessing read-only databases */
481 
482 /*
483 ** Possible values for the sqlite.magic field.
484 ** The numbers are obtained at random and have no special meaning, other
485 ** than being distinct from one another.
486 */
487 #define SQLITE_MAGIC_OPEN     0xa029a697  /* Database is open */
488 #define SQLITE_MAGIC_CLOSED   0x9f3c2d33  /* Database is closed */
489 #define SQLITE_MAGIC_BUSY     0xf03b7906  /* Database currently in use */
490 #define SQLITE_MAGIC_ERROR    0xb5357930  /* An SQLITE_MISUSE error occurred */
491 
492 /*
493 ** Each SQL function is defined by an instance of the following
494 ** structure.  A pointer to this structure is stored in the sqlite.aFunc
495 ** hash table.  When multiple functions have the same name, the hash table
496 ** points to a linked list of these structures.
497 */
498 struct FuncDef {
499   char *zName;         /* SQL name of the function */
500   int nArg;            /* Number of arguments.  -1 means unlimited */
501   u8 iPrefEnc;         /* Preferred text encoding (SQLITE_UTF8, 16LE, 16BE) */
502   void *pUserData;     /* User data parameter */
503   FuncDef *pNext;      /* Next function with same name */
504   void (*xFunc)(sqlite3_context*,int,sqlite3_value**); /* Regular function */
505   void (*xStep)(sqlite3_context*,int,sqlite3_value**); /* Aggregate step */
506   void (*xFinalize)(sqlite3_context*);                /* Aggregate finializer */
507   u8 needCollSeq;      /* True if sqlite3GetFuncCollSeq() might be called */
508 };
509 
510 /*
511 ** information about each column of an SQL table is held in an instance
512 ** of this structure.
513 */
514 struct Column {
515   char *zName;     /* Name of this column */
516   Expr *pDflt;     /* Default value of this column */
517   char *zType;     /* Data type for this column */
518   CollSeq *pColl;  /* Collating sequence.  If NULL, use the default */
519   u8 notNull;      /* True if there is a NOT NULL constraint */
520   u8 isPrimKey;    /* True if this column is part of the PRIMARY KEY */
521   char affinity;   /* One of the SQLITE_AFF_... values */
522 };
523 
524 /*
525 ** A "Collating Sequence" is defined by an instance of the following
526 ** structure. Conceptually, a collating sequence consists of a name and
527 ** a comparison routine that defines the order of that sequence.
528 **
529 ** There may two seperate implementations of the collation function, one
530 ** that processes text in UTF-8 encoding (CollSeq.xCmp) and another that
531 ** processes text encoded in UTF-16 (CollSeq.xCmp16), using the machine
532 ** native byte order. When a collation sequence is invoked, SQLite selects
533 ** the version that will require the least expensive encoding
534 ** transalations, if any.
535 **
536 ** The CollSeq.pUser member variable is an extra parameter that passed in
537 ** as the first argument to the UTF-8 comparison function, xCmp.
538 ** CollSeq.pUser16 is the equivalent for the UTF-16 comparison function,
539 ** xCmp16.
540 **
541 ** If both CollSeq.xCmp and CollSeq.xCmp16 are NULL, it means that the
542 ** collating sequence is undefined.  Indices built on an undefined
543 ** collating sequence may not be read or written.
544 */
545 struct CollSeq {
546   char *zName;         /* Name of the collating sequence, UTF-8 encoded */
547   u8 enc;              /* Text encoding handled by xCmp() */
548   void *pUser;         /* First argument to xCmp() */
549   int (*xCmp)(void*,int, const void*, int, const void*);
550 };
551 
552 /*
553 ** A sort order can be either ASC or DESC.
554 */
555 #define SQLITE_SO_ASC       0  /* Sort in ascending order */
556 #define SQLITE_SO_DESC      1  /* Sort in ascending order */
557 
558 /*
559 ** Column affinity types.
560 */
561 #define SQLITE_AFF_INTEGER  'i'
562 #define SQLITE_AFF_NUMERIC  'n'
563 #define SQLITE_AFF_TEXT     't'
564 #define SQLITE_AFF_NONE     'o'
565 
566 
567 /*
568 ** Each SQL table is represented in memory by an instance of the
569 ** following structure.
570 **
571 ** Table.zName is the name of the table.  The case of the original
572 ** CREATE TABLE statement is stored, but case is not significant for
573 ** comparisons.
574 **
575 ** Table.nCol is the number of columns in this table.  Table.aCol is a
576 ** pointer to an array of Column structures, one for each column.
577 **
578 ** If the table has an INTEGER PRIMARY KEY, then Table.iPKey is the index of
579 ** the column that is that key.   Otherwise Table.iPKey is negative.  Note
580 ** that the datatype of the PRIMARY KEY must be INTEGER for this field to
581 ** be set.  An INTEGER PRIMARY KEY is used as the rowid for each row of
582 ** the table.  If a table has no INTEGER PRIMARY KEY, then a random rowid
583 ** is generated for each row of the table.  Table.hasPrimKey is true if
584 ** the table has any PRIMARY KEY, INTEGER or otherwise.
585 **
586 ** Table.tnum is the page number for the root BTree page of the table in the
587 ** database file.  If Table.iDb is the index of the database table backend
588 ** in sqlite.aDb[].  0 is for the main database and 1 is for the file that
589 ** holds temporary tables and indices.  If Table.isTransient
590 ** is true, then the table is stored in a file that is automatically deleted
591 ** when the VDBE cursor to the table is closed.  In this case Table.tnum
592 ** refers VDBE cursor number that holds the table open, not to the root
593 ** page number.  Transient tables are used to hold the results of a
594 ** sub-query that appears instead of a real table name in the FROM clause
595 ** of a SELECT statement.
596 */
597 struct Table {
598   char *zName;     /* Name of the table */
599   int nCol;        /* Number of columns in this table */
600   Column *aCol;    /* Information about each column */
601   int iPKey;       /* If not less then 0, use aCol[iPKey] as the primary key */
602   Index *pIndex;   /* List of SQL indexes on this table. */
603   int tnum;        /* Root BTree node for this table (see note above) */
604   Select *pSelect; /* NULL for tables.  Points to definition if a view. */
605   u8 readOnly;     /* True if this table should not be written by the user */
606   u8 iDb;          /* Index into sqlite.aDb[] of the backend for this table */
607   u8 isTransient;  /* True if automatically deleted when VDBE finishes */
608   u8 hasPrimKey;   /* True if there exists a primary key */
609   u8 keyConf;      /* What to do in case of uniqueness conflict on iPKey */
610   u8 autoInc;      /* True if the integer primary key is autoincrement */
611   int nRef;          /* Number of pointers to this Table */
612   Trigger *pTrigger; /* List of SQL triggers on this table */
613   FKey *pFKey;       /* Linked list of all foreign keys in this table */
614   char *zColAff;     /* String defining the affinity of each column */
615 #ifndef SQLITE_OMIT_ALTERTABLE
616   int addColOffset;  /* Offset in CREATE TABLE statement to add a new column */
617 #endif
618 };
619 
620 /*
621 ** Each foreign key constraint is an instance of the following structure.
622 **
623 ** A foreign key is associated with two tables.  The "from" table is
624 ** the table that contains the REFERENCES clause that creates the foreign
625 ** key.  The "to" table is the table that is named in the REFERENCES clause.
626 ** Consider this example:
627 **
628 **     CREATE TABLE ex1(
629 **       a INTEGER PRIMARY KEY,
630 **       b INTEGER CONSTRAINT fk1 REFERENCES ex2(x)
631 **     );
632 **
633 ** For foreign key "fk1", the from-table is "ex1" and the to-table is "ex2".
634 **
635 ** Each REFERENCES clause generates an instance of the following structure
636 ** which is attached to the from-table.  The to-table need not exist when
637 ** the from-table is created.  The existance of the to-table is not checked
638 ** until an attempt is made to insert data into the from-table.
639 **
640 ** The sqlite.aFKey hash table stores pointers to this structure
641 ** given the name of a to-table.  For each to-table, all foreign keys
642 ** associated with that table are on a linked list using the FKey.pNextTo
643 ** field.
644 */
645 struct FKey {
646   Table *pFrom;     /* The table that constains the REFERENCES clause */
647   FKey *pNextFrom;  /* Next foreign key in pFrom */
648   char *zTo;        /* Name of table that the key points to */
649   FKey *pNextTo;    /* Next foreign key that points to zTo */
650   int nCol;         /* Number of columns in this key */
651   struct sColMap {  /* Mapping of columns in pFrom to columns in zTo */
652     int iFrom;         /* Index of column in pFrom */
653     char *zCol;        /* Name of column in zTo.  If 0 use PRIMARY KEY */
654   } *aCol;          /* One entry for each of nCol column s */
655   u8 isDeferred;    /* True if constraint checking is deferred till COMMIT */
656   u8 updateConf;    /* How to resolve conflicts that occur on UPDATE */
657   u8 deleteConf;    /* How to resolve conflicts that occur on DELETE */
658   u8 insertConf;    /* How to resolve conflicts that occur on INSERT */
659 };
660 
661 /*
662 ** SQLite supports many different ways to resolve a contraint
663 ** error.  ROLLBACK processing means that a constraint violation
664 ** causes the operation in process to fail and for the current transaction
665 ** to be rolled back.  ABORT processing means the operation in process
666 ** fails and any prior changes from that one operation are backed out,
667 ** but the transaction is not rolled back.  FAIL processing means that
668 ** the operation in progress stops and returns an error code.  But prior
669 ** changes due to the same operation are not backed out and no rollback
670 ** occurs.  IGNORE means that the particular row that caused the constraint
671 ** error is not inserted or updated.  Processing continues and no error
672 ** is returned.  REPLACE means that preexisting database rows that caused
673 ** a UNIQUE constraint violation are removed so that the new insert or
674 ** update can proceed.  Processing continues and no error is reported.
675 **
676 ** RESTRICT, SETNULL, and CASCADE actions apply only to foreign keys.
677 ** RESTRICT is the same as ABORT for IMMEDIATE foreign keys and the
678 ** same as ROLLBACK for DEFERRED keys.  SETNULL means that the foreign
679 ** key is set to NULL.  CASCADE means that a DELETE or UPDATE of the
680 ** referenced table row is propagated into the row that holds the
681 ** foreign key.
682 **
683 ** The following symbolic values are used to record which type
684 ** of action to take.
685 */
686 #define OE_None     0   /* There is no constraint to check */
687 #define OE_Rollback 1   /* Fail the operation and rollback the transaction */
688 #define OE_Abort    2   /* Back out changes but do no rollback transaction */
689 #define OE_Fail     3   /* Stop the operation but leave all prior changes */
690 #define OE_Ignore   4   /* Ignore the error. Do not do the INSERT or UPDATE */
691 #define OE_Replace  5   /* Delete existing record, then do INSERT or UPDATE */
692 
693 #define OE_Restrict 6   /* OE_Abort for IMMEDIATE, OE_Rollback for DEFERRED */
694 #define OE_SetNull  7   /* Set the foreign key value to NULL */
695 #define OE_SetDflt  8   /* Set the foreign key value to its default */
696 #define OE_Cascade  9   /* Cascade the changes */
697 
698 #define OE_Default  99  /* Do whatever the default action is */
699 
700 
701 /*
702 ** An instance of the following structure is passed as the first
703 ** argument to sqlite3VdbeKeyCompare and is used to control the
704 ** comparison of the two index keys.
705 **
706 ** If the KeyInfo.incrKey value is true and the comparison would
707 ** otherwise be equal, then return a result as if the second key
708 ** were larger.
709 */
710 struct KeyInfo {
711   u8 enc;             /* Text encoding - one of the TEXT_Utf* values */
712   u8 incrKey;         /* Increase 2nd key by epsilon before comparison */
713   int nField;         /* Number of entries in aColl[] */
714   u8 *aSortOrder;     /* If defined an aSortOrder[i] is true, sort DESC */
715   CollSeq *aColl[1];  /* Collating sequence for each term of the key */
716 };
717 
718 /*
719 ** Each SQL index is represented in memory by an
720 ** instance of the following structure.
721 **
722 ** The columns of the table that are to be indexed are described
723 ** by the aiColumn[] field of this structure.  For example, suppose
724 ** we have the following table and index:
725 **
726 **     CREATE TABLE Ex1(c1 int, c2 int, c3 text);
727 **     CREATE INDEX Ex2 ON Ex1(c3,c1);
728 **
729 ** In the Table structure describing Ex1, nCol==3 because there are
730 ** three columns in the table.  In the Index structure describing
731 ** Ex2, nColumn==2 since 2 of the 3 columns of Ex1 are indexed.
732 ** The value of aiColumn is {2, 0}.  aiColumn[0]==2 because the
733 ** first column to be indexed (c3) has an index of 2 in Ex1.aCol[].
734 ** The second column to be indexed (c1) has an index of 0 in
735 ** Ex1.aCol[], hence Ex2.aiColumn[1]==0.
736 **
737 ** The Index.onError field determines whether or not the indexed columns
738 ** must be unique and what to do if they are not.  When Index.onError=OE_None,
739 ** it means this is not a unique index.  Otherwise it is a unique index
740 ** and the value of Index.onError indicate the which conflict resolution
741 ** algorithm to employ whenever an attempt is made to insert a non-unique
742 ** element.
743 */
744 struct Index {
745   char *zName;     /* Name of this index */
746   int nColumn;     /* Number of columns in the table used by this index */
747   int *aiColumn;   /* Which columns are used by this index.  1st is 0 */
748   int *aiRowEst;   /* Result of ANALYZE: Est. rows selected by each column */
749   Table *pTable;   /* The SQL table being indexed */
750   int tnum;        /* Page containing root of this index in database file */
751   u8 onError;      /* OE_Abort, OE_Ignore, OE_Replace, or OE_None */
752   u8 autoIndex;    /* True if is automatically created (ex: by UNIQUE) */
753   u8 iDb;          /* Index in sqlite.aDb[] of where this index is stored */
754   char *zColAff;   /* String defining the affinity of each column */
755   Index *pNext;    /* The next index associated with the same table */
756   KeyInfo keyInfo; /* Info on how to order keys.  MUST BE LAST */
757 };
758 
759 /*
760 ** Each token coming out of the lexer is an instance of
761 ** this structure.  Tokens are also used as part of an expression.
762 **
763 ** Note if Token.z==0 then Token.dyn and Token.n are undefined and
764 ** may contain random values.  Do not make any assuptions about Token.dyn
765 ** and Token.n when Token.z==0.
766 */
767 struct Token {
768   const unsigned char *z; /* Text of the token.  Not NULL-terminated! */
769   unsigned dyn  : 1;      /* True for malloced memory, false for static */
770   unsigned n    : 31;     /* Number of characters in this token */
771 };
772 
773 /*
774 ** Each node of an expression in the parse tree is an instance
775 ** of this structure.
776 **
777 ** Expr.op is the opcode.  The integer parser token codes are reused
778 ** as opcodes here.  For example, the parser defines TK_GE to be an integer
779 ** code representing the ">=" operator.  This same integer code is reused
780 ** to represent the greater-than-or-equal-to operator in the expression
781 ** tree.
782 **
783 ** Expr.pRight and Expr.pLeft are subexpressions.  Expr.pList is a list
784 ** of argument if the expression is a function.
785 **
786 ** Expr.token is the operator token for this node.  For some expressions
787 ** that have subexpressions, Expr.token can be the complete text that gave
788 ** rise to the Expr.  In the latter case, the token is marked as being
789 ** a compound token.
790 **
791 ** An expression of the form ID or ID.ID refers to a column in a table.
792 ** For such expressions, Expr.op is set to TK_COLUMN and Expr.iTable is
793 ** the integer cursor number of a VDBE cursor pointing to that table and
794 ** Expr.iColumn is the column number for the specific column.  If the
795 ** expression is used as a result in an aggregate SELECT, then the
796 ** value is also stored in the Expr.iAgg column in the aggregate so that
797 ** it can be accessed after all aggregates are computed.
798 **
799 ** If the expression is a function, the Expr.iTable is an integer code
800 ** representing which function.  If the expression is an unbound variable
801 ** marker (a question mark character '?' in the original SQL) then the
802 ** Expr.iTable holds the index number for that variable.
803 **
804 ** If the expression is a subquery then Expr.iColumn holds an integer
805 ** register number containing the result of the subquery.  If the
806 ** subquery gives a constant result, then iTable is -1.  If the subquery
807 ** gives a different answer at different times during statement processing
808 ** then iTable is the address of a subroutine that computes the subquery.
809 **
810 ** The Expr.pSelect field points to a SELECT statement.  The SELECT might
811 ** be the right operand of an IN operator.  Or, if a scalar SELECT appears
812 ** in an expression the opcode is TK_SELECT and Expr.pSelect is the only
813 ** operand.
814 **
815 ** If the Expr is of type OP_Column, and the table it is selecting from
816 ** is a disk table or the "old.*" pseudo-table, then pTab points to the
817 ** corresponding table definition.
818 */
819 struct Expr {
820   u8 op;                 /* Operation performed by this node */
821   char affinity;         /* The affinity of the column or 0 if not a column */
822   u8 iDb;                /* Database referenced by this expression */
823   u8 flags;              /* Various flags.  See below */
824   CollSeq *pColl;        /* The collation type of the column or 0 */
825   Expr *pLeft, *pRight;  /* Left and right subnodes */
826   ExprList *pList;       /* A list of expressions used as function arguments
827                          ** or in "<expr> IN (<expr-list)" */
828   Token token;           /* An operand token */
829   Token span;            /* Complete text of the expression */
830   int iTable, iColumn;   /* When op==TK_COLUMN, then this expr node means the
831                          ** iColumn-th field of the iTable-th table. */
832   int iAgg;              /* When op==TK_COLUMN and pParse->fillAgg==FALSE, pull
833                          ** result from the iAgg-th element of the aggregator */
834   int iAggCtx;           /* The value to pass as P1 of OP_AggGet. */
835   Select *pSelect;       /* When the expression is a sub-select.  Also the
836                          ** right side of "<expr> IN (<select>)" */
837   Table *pTab;           /* Table for OP_Column expressions. */
838 };
839 
840 /*
841 ** The following are the meanings of bits in the Expr.flags field.
842 */
843 #define EP_FromJoin     0x01  /* Originated in ON or USING clause of a join */
844 #define EP_Agg          0x02  /* Contains one or more aggregate functions */
845 #define EP_Resolved     0x04  /* IDs have been resolved to COLUMNs */
846 #define EP_Error        0x08  /* Expression contains one or more errors */
847 #define EP_Not          0x10  /* Operator preceeded by NOT */
848 #define EP_VarSelect    0x20  /* pSelect is correlated, not constant */
849 
850 /*
851 ** These macros can be used to test, set, or clear bits in the
852 ** Expr.flags field.
853 */
854 #define ExprHasProperty(E,P)     (((E)->flags&(P))==(P))
855 #define ExprHasAnyProperty(E,P)  (((E)->flags&(P))!=0)
856 #define ExprSetProperty(E,P)     (E)->flags|=(P)
857 #define ExprClearProperty(E,P)   (E)->flags&=~(P)
858 
859 /*
860 ** A list of expressions.  Each expression may optionally have a
861 ** name.  An expr/name combination can be used in several ways, such
862 ** as the list of "expr AS ID" fields following a "SELECT" or in the
863 ** list of "ID = expr" items in an UPDATE.  A list of expressions can
864 ** also be used as the argument to a function, in which case the a.zName
865 ** field is not used.
866 */
867 struct ExprList {
868   int nExpr;             /* Number of expressions on the list */
869   int nAlloc;            /* Number of entries allocated below */
870   struct ExprList_item {
871     Expr *pExpr;           /* The list of expressions */
872     char *zName;           /* Token associated with this expression */
873     u8 sortOrder;          /* 1 for DESC or 0 for ASC */
874     u8 isAgg;              /* True if this is an aggregate like count(*) */
875     u8 done;               /* A flag to indicate when processing is finished */
876   } *a;                  /* One entry for each expression */
877 };
878 
879 /*
880 ** An instance of this structure can hold a simple list of identifiers,
881 ** such as the list "a,b,c" in the following statements:
882 **
883 **      INSERT INTO t(a,b,c) VALUES ...;
884 **      CREATE INDEX idx ON t(a,b,c);
885 **      CREATE TRIGGER trig BEFORE UPDATE ON t(a,b,c) ...;
886 **
887 ** The IdList.a.idx field is used when the IdList represents the list of
888 ** column names after a table name in an INSERT statement.  In the statement
889 **
890 **     INSERT INTO t(a,b,c) ...
891 **
892 ** If "a" is the k-th column of table "t", then IdList.a[0].idx==k.
893 */
894 struct IdList {
895   int nId;         /* Number of identifiers on the list */
896   int nAlloc;      /* Number of entries allocated for a[] below */
897   struct IdList_item {
898     char *zName;      /* Name of the identifier */
899     int idx;          /* Index in some Table.aCol[] of a column named zName */
900   } *a;
901 };
902 
903 /*
904 ** The bitmask datatype defined below is used for various optimizations.
905 */
906 typedef unsigned int Bitmask;
907 
908 /*
909 ** The following structure describes the FROM clause of a SELECT statement.
910 ** Each table or subquery in the FROM clause is a separate element of
911 ** the SrcList.a[] array.
912 **
913 ** With the addition of multiple database support, the following structure
914 ** can also be used to describe a particular table such as the table that
915 ** is modified by an INSERT, DELETE, or UPDATE statement.  In standard SQL,
916 ** such a table must be a simple name: ID.  But in SQLite, the table can
917 ** now be identified by a database name, a dot, then the table name: ID.ID.
918 */
919 struct SrcList {
920   i16 nSrc;        /* Number of tables or subqueries in the FROM clause */
921   i16 nAlloc;      /* Number of entries allocated in a[] below */
922   struct SrcList_item {
923     char *zDatabase;  /* Name of database holding this table */
924     char *zName;      /* Name of the table */
925     char *zAlias;     /* The "B" part of a "A AS B" phrase.  zName is the "A" */
926     Table *pTab;      /* An SQL table corresponding to zName */
927     Select *pSelect;  /* A SELECT statement used in place of a table name */
928     u8 jointype;      /* Type of join between this table and the next */
929     i16 iCursor;      /* The VDBE cursor number used to access this table */
930     Expr *pOn;        /* The ON clause of a join */
931     IdList *pUsing;   /* The USING clause of a join */
932     Bitmask colUsed;  /* Bit N (1<<N) set if column N or pTab is used */
933   } a[1];             /* One entry for each identifier on the list */
934 };
935 
936 /*
937 ** Permitted values of the SrcList.a.jointype field
938 */
939 #define JT_INNER     0x0001    /* Any kind of inner or cross join */
940 #define JT_NATURAL   0x0002    /* True for a "natural" join */
941 #define JT_LEFT      0x0004    /* Left outer join */
942 #define JT_RIGHT     0x0008    /* Right outer join */
943 #define JT_OUTER     0x0010    /* The "OUTER" keyword is present */
944 #define JT_ERROR     0x0020    /* unknown or unsupported join type */
945 
946 /*
947 ** For each nested loop in a WHERE clause implementation, the WhereInfo
948 ** structure contains a single instance of this structure.  This structure
949 ** is intended to be private the the where.c module and should not be
950 ** access or modified by other modules.
951 */
952 struct WhereLevel {
953   int iFrom;            /* Which entry in the FROM clause */
954   int flags;            /* Flags associated with this level */
955   int iMem;             /* First memory cell used by this level */
956   int iLeftJoin;        /* Memory cell used to implement LEFT OUTER JOIN */
957   Index *pIdx;          /* Index used.  NULL if no index */
958   int iTabCur;          /* The VDBE cursor used to access the table */
959   int iIdxCur;          /* The VDBE cursor used to acesss pIdx */
960   int brk;              /* Jump here to break out of the loop */
961   int cont;             /* Jump here to continue with the next loop cycle */
962   int top;              /* First instruction of interior of the loop */
963   int op, p1, p2;       /* Opcode used to terminate the loop */
964   int nEq;              /* Number of == or IN constraints on this loop */
965   int nIn;              /* Number of IN operators constraining this loop */
966   int *aInLoop;         /* Loop terminators for IN operators */
967 };
968 
969 /*
970 ** The WHERE clause processing routine has two halves.  The
971 ** first part does the start of the WHERE loop and the second
972 ** half does the tail of the WHERE loop.  An instance of
973 ** this structure is returned by the first half and passed
974 ** into the second half to give some continuity.
975 */
976 struct WhereInfo {
977   Parse *pParse;
978   SrcList *pTabList;   /* List of tables in the join */
979   int iTop;            /* The very beginning of the WHERE loop */
980   int iContinue;       /* Jump here to continue with next record */
981   int iBreak;          /* Jump here to break out of the loop */
982   int nLevel;          /* Number of nested loop */
983   WhereLevel a[1];     /* Information about each nest loop in the WHERE */
984 };
985 
986 /*
987 ** A NameContext defines a context in which to resolve table and column
988 ** names.  The context consists of a list of tables (the pSrcList) field and
989 ** a list of named expression (pEList).  The named expression list may
990 ** be NULL.  The pSrc corresponds to the FROM clause of a SELECT or
991 ** to the table being operated on by INSERT, UPDATE, or DELETE.  The
992 ** pEList corresponds to the result set of a SELECT and is NULL for
993 ** other statements.
994 **
995 ** NameContexts can be nested.  When resolving names, the inner-most
996 ** context is searched first.  If no match is found, the next outer
997 ** context is checked.  If there is still no match, the next context
998 ** is checked.  This process continues until either a match is found
999 ** or all contexts are check.  When a match is found, the nRef member of
1000 ** the context containing the match is incremented.
1001 **
1002 ** Each subquery gets a new NameContext.  The pNext field points to the
1003 ** NameContext in the parent query.  Thus the process of scanning the
1004 ** NameContext list corresponds to searching through successively outer
1005 ** subqueries looking for a match.
1006 */
1007 struct NameContext {
1008   Parse *pParse;       /* The parser */
1009   SrcList *pSrcList;   /* One or more tables used to resolve names */
1010   ExprList *pEList;    /* Optional list of named expressions */
1011   int nRef;            /* Number of names resolved by this context */
1012   int nErr;            /* Number of errors encountered while resolving names */
1013   u8 allowAgg;         /* Aggregate functions allowed here */
1014   u8 hasAgg;
1015   int nDepth;          /* Depth of subquery recursion. 1 for no recursion */
1016   NameContext *pNext;  /* Next outer name context.  NULL for outermost */
1017 };
1018 
1019 /*
1020 ** An instance of the following structure contains all information
1021 ** needed to generate code for a single SELECT statement.
1022 **
1023 ** nLimit is set to -1 if there is no LIMIT clause.  nOffset is set to 0.
1024 ** If there is a LIMIT clause, the parser sets nLimit to the value of the
1025 ** limit and nOffset to the value of the offset (or 0 if there is not
1026 ** offset).  But later on, nLimit and nOffset become the memory locations
1027 ** in the VDBE that record the limit and offset counters.
1028 */
1029 struct Select {
1030   ExprList *pEList;      /* The fields of the result */
1031   u8 op;                 /* One of: TK_UNION TK_ALL TK_INTERSECT TK_EXCEPT */
1032   u8 isDistinct;         /* True if the DISTINCT keyword is present */
1033   SrcList *pSrc;         /* The FROM clause */
1034   Expr *pWhere;          /* The WHERE clause */
1035   ExprList *pGroupBy;    /* The GROUP BY clause */
1036   Expr *pHaving;         /* The HAVING clause */
1037   ExprList *pOrderBy;    /* The ORDER BY clause */
1038   Select *pPrior;        /* Prior select in a compound select statement */
1039   Expr *pLimit;          /* LIMIT expression. NULL means not used. */
1040   Expr *pOffset;         /* OFFSET expression. NULL means not used. */
1041   int iLimit, iOffset;   /* Memory registers holding LIMIT & OFFSET counters */
1042   IdList **ppOpenVirtual;/* OP_OpenVirtual addresses used by multi-selects */
1043   u8 isResolved;         /* True once sqlite3SelectResolve() has run. */
1044   u8 isAgg;              /* True if this is an aggregate query */
1045 };
1046 
1047 /*
1048 ** The results of a select can be distributed in several ways.
1049 */
1050 #define SRT_Callback     1  /* Invoke a callback with each row of result */
1051 #define SRT_Mem          2  /* Store result in a memory cell */
1052 #define SRT_Set          3  /* Store result as unique keys in a table */
1053 #define SRT_Union        5  /* Store result as keys in a table */
1054 #define SRT_Except       6  /* Remove result from a UNION table */
1055 #define SRT_Table        7  /* Store result as data with a unique key */
1056 #define SRT_TempTable    8  /* Store result in a trasient table */
1057 #define SRT_Discard      9  /* Do not save the results anywhere */
1058 #define SRT_Sorter      10  /* Store results in the sorter */
1059 #define SRT_Subroutine  11  /* Call a subroutine to handle results */
1060 #define SRT_Exists      12  /* Put 0 or 1 in a memory cell */
1061 
1062 /*
1063 ** When a SELECT uses aggregate functions (like "count(*)" or "avg(f1)")
1064 ** we have to do some additional analysis of expressions.  An instance
1065 ** of the following structure holds information about a single subexpression
1066 ** somewhere in the SELECT statement.  An array of these structures holds
1067 ** all the information we need to generate code for aggregate
1068 ** expressions.
1069 **
1070 ** Note that when analyzing a SELECT containing aggregates, both
1071 ** non-aggregate field variables and aggregate functions are stored
1072 ** in the AggExpr array of the Parser structure.
1073 **
1074 ** The pExpr field points to an expression that is part of either the
1075 ** field list, the GROUP BY clause, the HAVING clause or the ORDER BY
1076 ** clause.  The expression will be freed when those clauses are cleaned
1077 ** up.  Do not try to delete the expression attached to AggExpr.pExpr.
1078 **
1079 ** If AggExpr.pExpr==0, that means the expression is "count(*)".
1080 */
1081 struct AggExpr {
1082   int isAgg;        /* if TRUE contains an aggregate function */
1083   Expr *pExpr;      /* The expression */
1084   FuncDef *pFunc;   /* Information about the aggregate function */
1085 };
1086 
1087 /*
1088 ** An SQL parser context.  A copy of this structure is passed through
1089 ** the parser and down into all the parser action routine in order to
1090 ** carry around information that is global to the entire parse.
1091 **
1092 ** The structure is divided into two parts.  When the parser and code
1093 ** generate call themselves recursively, the first part of the structure
1094 ** is constant but the second part is reset at the beginning and end of
1095 ** each recursion.
1096 */
1097 struct Parse {
1098   sqlite3 *db;         /* The main database structure */
1099   int rc;              /* Return code from execution */
1100   char *zErrMsg;       /* An error message */
1101   Vdbe *pVdbe;         /* An engine for executing database bytecode */
1102   u8 colNamesSet;      /* TRUE after OP_ColumnName has been issued to pVdbe */
1103   u8 nameClash;        /* A permanent table name clashes with temp table name */
1104   u8 checkSchema;      /* Causes schema cookie check after an error */
1105   u8 nested;           /* Number of nested calls to the parser/code generator */
1106   u8 fillAgg;          /* If true, ignore the Expr.iAgg field. Normally false */
1107   int nErr;            /* Number of errors seen */
1108   int nTab;            /* Number of previously allocated VDBE cursors */
1109   int nMem;            /* Number of memory cells used so far */
1110   int nSet;            /* Number of sets used so far */
1111   u32 writeMask;       /* Start a write transaction on these databases */
1112   u32 cookieMask;      /* Bitmask of schema verified databases */
1113   int cookieGoto;      /* Address of OP_Goto to cookie verifier subroutine */
1114   int cookieValue[MAX_ATTACHED+2];  /* Values of cookies to verify */
1115 
1116   /* Above is constant between recursions.  Below is reset before and after
1117   ** each recursion */
1118 
1119   int nVar;            /* Number of '?' variables seen in the SQL so far */
1120   int nVarExpr;        /* Number of used slots in apVarExpr[] */
1121   int nVarExprAlloc;   /* Number of allocated slots in apVarExpr[] */
1122   Expr **apVarExpr;    /* Pointers to :aaa and $aaaa wildcard expressions */
1123   u8 explain;          /* True if the EXPLAIN flag is found on the query */
1124   Token sErrToken;     /* The token at which the error occurred */
1125   Token sNameToken;    /* Token with unqualified schema object name */
1126   Token sLastToken;    /* The last token parsed */
1127   const char *zSql;    /* All SQL text */
1128   const char *zTail;   /* All SQL text past the last semicolon parsed */
1129   Table *pNewTable;    /* A table being constructed by CREATE TABLE */
1130   Trigger *pNewTrigger;     /* Trigger under construct by a CREATE TRIGGER */
1131   TriggerStack *trigStack;  /* Trigger actions being coded */
1132   const char *zAuthContext; /* The 6th parameter to db->xAuth callbacks */
1133   int nAgg;            /* Number of aggregate expressions */
1134   AggExpr *aAgg;       /* An array of aggregate expressions */
1135   int nMaxDepth;       /* Maximum depth of subquery recursion */
1136 };
1137 
1138 /*
1139 ** An instance of the following structure can be declared on a stack and used
1140 ** to save the Parse.zAuthContext value so that it can be restored later.
1141 */
1142 struct AuthContext {
1143   const char *zAuthContext;   /* Put saved Parse.zAuthContext here */
1144   Parse *pParse;              /* The Parse structure */
1145 };
1146 
1147 /*
1148 ** Bitfield flags for P2 value in OP_Insert and OP_Delete
1149 */
1150 #define OPFLAG_NCHANGE   1    /* Set to update db->nChange */
1151 #define OPFLAG_LASTROWID 2    /* Set to update db->lastRowid */
1152 
1153 /*
1154  * Each trigger present in the database schema is stored as an instance of
1155  * struct Trigger.
1156  *
1157  * Pointers to instances of struct Trigger are stored in two ways.
1158  * 1. In the "trigHash" hash table (part of the sqlite3* that represents the
1159  *    database). This allows Trigger structures to be retrieved by name.
1160  * 2. All triggers associated with a single table form a linked list, using the
1161  *    pNext member of struct Trigger. A pointer to the first element of the
1162  *    linked list is stored as the "pTrigger" member of the associated
1163  *    struct Table.
1164  *
1165  * The "step_list" member points to the first element of a linked list
1166  * containing the SQL statements specified as the trigger program.
1167  */
1168 struct Trigger {
1169   char *name;             /* The name of the trigger                        */
1170   char *table;            /* The table or view to which the trigger applies */
1171   u8 iDb;                 /* Database containing this trigger               */
1172   u8 iTabDb;              /* Database containing Trigger.table              */
1173   u8 op;                  /* One of TK_DELETE, TK_UPDATE, TK_INSERT         */
1174   u8 tr_tm;               /* One of TRIGGER_BEFORE, TRIGGER_AFTER */
1175   Expr *pWhen;            /* The WHEN clause of the expresion (may be NULL) */
1176   IdList *pColumns;       /* If this is an UPDATE OF <column-list> trigger,
1177                              the <column-list> is stored here */
1178   int foreach;            /* One of TK_ROW or TK_STATEMENT */
1179   Token nameToken;        /* Token containing zName. Use during parsing only */
1180 
1181   TriggerStep *step_list; /* Link list of trigger program steps             */
1182   Trigger *pNext;         /* Next trigger associated with the table */
1183 };
1184 
1185 /*
1186 ** A trigger is either a BEFORE or an AFTER trigger.  The following constants
1187 ** determine which.
1188 **
1189 ** If there are multiple triggers, you might of some BEFORE and some AFTER.
1190 ** In that cases, the constants below can be ORed together.
1191 */
1192 #define TRIGGER_BEFORE  1
1193 #define TRIGGER_AFTER   2
1194 
1195 /*
1196  * An instance of struct TriggerStep is used to store a single SQL statement
1197  * that is a part of a trigger-program.
1198  *
1199  * Instances of struct TriggerStep are stored in a singly linked list (linked
1200  * using the "pNext" member) referenced by the "step_list" member of the
1201  * associated struct Trigger instance. The first element of the linked list is
1202  * the first step of the trigger-program.
1203  *
1204  * The "op" member indicates whether this is a "DELETE", "INSERT", "UPDATE" or
1205  * "SELECT" statement. The meanings of the other members is determined by the
1206  * value of "op" as follows:
1207  *
1208  * (op == TK_INSERT)
1209  * orconf    -> stores the ON CONFLICT algorithm
1210  * pSelect   -> If this is an INSERT INTO ... SELECT ... statement, then
1211  *              this stores a pointer to the SELECT statement. Otherwise NULL.
1212  * target    -> A token holding the name of the table to insert into.
1213  * pExprList -> If this is an INSERT INTO ... VALUES ... statement, then
1214  *              this stores values to be inserted. Otherwise NULL.
1215  * pIdList   -> If this is an INSERT INTO ... (<column-names>) VALUES ...
1216  *              statement, then this stores the column-names to be
1217  *              inserted into.
1218  *
1219  * (op == TK_DELETE)
1220  * target    -> A token holding the name of the table to delete from.
1221  * pWhere    -> The WHERE clause of the DELETE statement if one is specified.
1222  *              Otherwise NULL.
1223  *
1224  * (op == TK_UPDATE)
1225  * target    -> A token holding the name of the table to update rows of.
1226  * pWhere    -> The WHERE clause of the UPDATE statement if one is specified.
1227  *              Otherwise NULL.
1228  * pExprList -> A list of the columns to update and the expressions to update
1229  *              them to. See sqlite3Update() documentation of "pChanges"
1230  *              argument.
1231  *
1232  */
1233 struct TriggerStep {
1234   int op;              /* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT */
1235   int orconf;          /* OE_Rollback etc. */
1236   Trigger *pTrig;      /* The trigger that this step is a part of */
1237 
1238   Select *pSelect;     /* Valid for SELECT and sometimes
1239 			  INSERT steps (when pExprList == 0) */
1240   Token target;        /* Valid for DELETE, UPDATE, INSERT steps */
1241   Expr *pWhere;        /* Valid for DELETE, UPDATE steps */
1242   ExprList *pExprList; /* Valid for UPDATE statements and sometimes
1243 			   INSERT steps (when pSelect == 0)         */
1244   IdList *pIdList;     /* Valid for INSERT statements only */
1245 
1246   TriggerStep * pNext; /* Next in the link-list */
1247 };
1248 
1249 /*
1250  * An instance of struct TriggerStack stores information required during code
1251  * generation of a single trigger program. While the trigger program is being
1252  * coded, its associated TriggerStack instance is pointed to by the
1253  * "pTriggerStack" member of the Parse structure.
1254  *
1255  * The pTab member points to the table that triggers are being coded on. The
1256  * newIdx member contains the index of the vdbe cursor that points at the temp
1257  * table that stores the new.* references. If new.* references are not valid
1258  * for the trigger being coded (for example an ON DELETE trigger), then newIdx
1259  * is set to -1. The oldIdx member is analogous to newIdx, for old.* references.
1260  *
1261  * The ON CONFLICT policy to be used for the trigger program steps is stored
1262  * as the orconf member. If this is OE_Default, then the ON CONFLICT clause
1263  * specified for individual triggers steps is used.
1264  *
1265  * struct TriggerStack has a "pNext" member, to allow linked lists to be
1266  * constructed. When coding nested triggers (triggers fired by other triggers)
1267  * each nested trigger stores its parent trigger's TriggerStack as the "pNext"
1268  * pointer. Once the nested trigger has been coded, the pNext value is restored
1269  * to the pTriggerStack member of the Parse stucture and coding of the parent
1270  * trigger continues.
1271  *
1272  * Before a nested trigger is coded, the linked list pointed to by the
1273  * pTriggerStack is scanned to ensure that the trigger is not about to be coded
1274  * recursively. If this condition is detected, the nested trigger is not coded.
1275  */
1276 struct TriggerStack {
1277   Table *pTab;         /* Table that triggers are currently being coded on */
1278   int newIdx;          /* Index of vdbe cursor to "new" temp table */
1279   int oldIdx;          /* Index of vdbe cursor to "old" temp table */
1280   int orconf;          /* Current orconf policy */
1281   int ignoreJump;      /* where to jump to for a RAISE(IGNORE) */
1282   Trigger *pTrigger;   /* The trigger currently being coded */
1283   TriggerStack *pNext; /* Next trigger down on the trigger stack */
1284 };
1285 
1286 /*
1287 ** The following structure contains information used by the sqliteFix...
1288 ** routines as they walk the parse tree to make database references
1289 ** explicit.
1290 */
1291 typedef struct DbFixer DbFixer;
1292 struct DbFixer {
1293   Parse *pParse;      /* The parsing context.  Error messages written here */
1294   const char *zDb;    /* Make sure all objects are contained in this database */
1295   const char *zType;  /* Type of the container - used for error messages */
1296   const Token *pName; /* Name of the container - used for error messages */
1297 };
1298 
1299 /*
1300 ** A pointer to this structure is used to communicate information
1301 ** from sqlite3Init and OP_ParseSchema into the sqlite3InitCallback.
1302 */
1303 typedef struct {
1304   sqlite3 *db;        /* The database being initialized */
1305   char **pzErrMsg;    /* Error message stored here */
1306 } InitData;
1307 
1308 /*
1309  * This global flag is set for performance testing of triggers. When it is set
1310  * SQLite will perform the overhead of building new and old trigger references
1311  * even when no triggers exist
1312  */
1313 extern int sqlite3_always_code_trigger_setup;
1314 
1315 /*
1316 ** Internal function prototypes
1317 */
1318 int sqlite3StrICmp(const char *, const char *);
1319 int sqlite3StrNICmp(const char *, const char *, int);
1320 int sqlite3HashNoCase(const char *, int);
1321 int sqlite3IsNumber(const char*, int*, u8);
1322 int sqlite3Compare(const char *, const char *);
1323 int sqlite3SortCompare(const char *, const char *);
1324 void sqlite3RealToSortable(double r, char *);
1325 #ifdef SQLITE_MEMDEBUG
1326   void *sqlite3Malloc_(int,int,char*,int);
1327   void sqlite3Free_(void*,char*,int);
1328   void *sqlite3Realloc_(void*,int,char*,int);
1329   char *sqlite3StrDup_(const char*,char*,int);
1330   char *sqlite3StrNDup_(const char*, int,char*,int);
1331   void sqlite3CheckMemory(void*,int);
1332 #else
1333   void *sqlite3Malloc(int);
1334   void *sqlite3MallocRaw(int);
1335   void sqlite3Free(void*);
1336   void *sqlite3Realloc(void*,int);
1337   char *sqlite3StrDup(const char*);
1338   char *sqlite3StrNDup(const char*, int);
1339 # define sqlite3CheckMemory(a,b)
1340 # define sqlite3MallocX sqlite3Malloc
1341 #endif
1342 void sqlite3FreeX(void*);
1343 void *sqlite3MallocX(int);
1344 char *sqlite3MPrintf(const char*, ...);
1345 char *sqlite3VMPrintf(const char*, va_list);
1346 void sqlite3DebugPrintf(const char*, ...);
1347 void *sqlite3TextToPtr(const char*);
1348 void sqlite3SetString(char **, ...);
1349 void sqlite3ErrorMsg(Parse*, const char*, ...);
1350 void sqlite3Dequote(char*);
1351 int sqlite3KeywordCode(const char*, int);
1352 int sqlite3RunParser(Parse*, const char*, char **);
1353 void sqlite3FinishCoding(Parse*);
1354 Expr *sqlite3Expr(int, Expr*, Expr*, const Token*);
1355 Expr *sqlite3RegisterExpr(Parse*,Token*);
1356 Expr *sqlite3ExprAnd(Expr*, Expr*);
1357 void sqlite3ExprSpan(Expr*,Token*,Token*);
1358 Expr *sqlite3ExprFunction(ExprList*, Token*);
1359 void sqlite3ExprAssignVarNumber(Parse*, Expr*);
1360 void sqlite3ExprDelete(Expr*);
1361 ExprList *sqlite3ExprListAppend(ExprList*,Expr*,Token*);
1362 void sqlite3ExprListDelete(ExprList*);
1363 int sqlite3Init(sqlite3*, char**);
1364 int sqlite3InitCallback(void*, int, char**, char**);
1365 void sqlite3Pragma(Parse*,Token*,Token*,Token*,int);
1366 void sqlite3ResetInternalSchema(sqlite3*, int);
1367 void sqlite3BeginParse(Parse*,int);
1368 void sqlite3RollbackInternalChanges(sqlite3*);
1369 void sqlite3CommitInternalChanges(sqlite3*);
1370 Table *sqlite3ResultSetOfSelect(Parse*,char*,Select*);
1371 void sqlite3OpenMasterTable(Vdbe *v, int);
1372 void sqlite3StartTable(Parse*,Token*,Token*,Token*,int,int);
1373 void sqlite3AddColumn(Parse*,Token*);
1374 void sqlite3AddNotNull(Parse*, int);
1375 void sqlite3AddPrimaryKey(Parse*, ExprList*, int, int);
1376 void sqlite3AddColumnType(Parse*,Token*);
1377 void sqlite3AddDefaultValue(Parse*,Expr*);
1378 void sqlite3AddCollateType(Parse*, const char*, int);
1379 void sqlite3EndTable(Parse*,Token*,Token*,Select*);
1380 
1381 #ifndef SQLITE_OMIT_VIEW
1382   void sqlite3CreateView(Parse*,Token*,Token*,Token*,Select*,int);
1383   int sqlite3ViewGetColumnNames(Parse*,Table*);
1384 #else
1385 # define sqlite3ViewGetColumnNames(A,B) 0
1386 #endif
1387 
1388 void sqlite3DropTable(Parse*, SrcList*, int);
1389 void sqlite3DeleteTable(sqlite3*, Table*);
1390 void sqlite3Insert(Parse*, SrcList*, ExprList*, Select*, IdList*, int);
1391 IdList *sqlite3IdListAppend(IdList*, Token*);
1392 int sqlite3IdListIndex(IdList*,const char*);
1393 SrcList *sqlite3SrcListAppend(SrcList*, Token*, Token*);
1394 void sqlite3SrcListAddAlias(SrcList*, Token*);
1395 void sqlite3SrcListAssignCursors(Parse*, SrcList*);
1396 void sqlite3IdListDelete(IdList*);
1397 void sqlite3SrcListDelete(SrcList*);
1398 void sqlite3CreateIndex(Parse*,Token*,Token*,SrcList*,ExprList*,int,Token*,
1399                         Token*);
1400 void sqlite3DropIndex(Parse*, SrcList*);
1401 void sqlite3AddKeyType(Vdbe*, ExprList*);
1402 void sqlite3AddIdxKeyType(Vdbe*, Index*);
1403 int sqlite3Select(Parse*, Select*, int, int, Select*, int, int*, char *aff);
1404 Select *sqlite3SelectNew(ExprList*,SrcList*,Expr*,ExprList*,Expr*,ExprList*,
1405                         int,Expr*,Expr*);
1406 void sqlite3SelectDelete(Select*);
1407 void sqlite3SelectUnbind(Select*);
1408 Table *sqlite3SrcListLookup(Parse*, SrcList*);
1409 int sqlite3IsReadOnly(Parse*, Table*, int);
1410 void sqlite3OpenTableForReading(Vdbe*, int iCur, Table*);
1411 void sqlite3OpenTable(Vdbe*, int iCur, Table*, int);
1412 void sqlite3DeleteFrom(Parse*, SrcList*, Expr*);
1413 void sqlite3Update(Parse*, SrcList*, ExprList*, Expr*, int);
1414 WhereInfo *sqlite3WhereBegin(Parse*, SrcList*, Expr*, ExprList**);
1415 void sqlite3WhereEnd(WhereInfo*);
1416 void sqlite3ExprCode(Parse*, Expr*);
1417 void sqlite3ExprCodeAndCache(Parse*, Expr*);
1418 int sqlite3ExprCodeExprList(Parse*, ExprList*);
1419 void sqlite3ExprIfTrue(Parse*, Expr*, int, int);
1420 void sqlite3ExprIfFalse(Parse*, Expr*, int, int);
1421 void sqlite3NextedParse(Parse*, const char*, ...);
1422 Table *sqlite3FindTable(sqlite3*,const char*, const char*);
1423 Table *sqlite3LocateTable(Parse*,const char*, const char*);
1424 Index *sqlite3FindIndex(sqlite3*,const char*, const char*);
1425 void sqlite3UnlinkAndDeleteTable(sqlite3*,int,const char*);
1426 void sqlite3UnlinkAndDeleteIndex(sqlite3*,int,const char*);
1427 void sqlite3Vacuum(Parse*, Token*);
1428 int sqlite3RunVacuum(char**, sqlite3*);
1429 char *sqlite3NameFromToken(Token*);
1430 int sqlite3ExprCheck(Parse*, Expr*, int, int*);
1431 int sqlite3ExprCompare(Expr*, Expr*);
1432 int sqliteFuncId(Token*);
1433 int sqlite3ExprResolveNames(NameContext *, Expr *);
1434 int sqlite3ExprAnalyzeAggregates(NameContext*, Expr*);
1435 Vdbe *sqlite3GetVdbe(Parse*);
1436 void sqlite3Randomness(int, void*);
1437 void sqlite3RollbackAll(sqlite3*);
1438 void sqlite3CodeVerifySchema(Parse*, int);
1439 void sqlite3BeginTransaction(Parse*, int);
1440 void sqlite3CommitTransaction(Parse*);
1441 void sqlite3RollbackTransaction(Parse*);
1442 int sqlite3ExprIsConstant(Expr*);
1443 int sqlite3ExprIsConstantOrFunction(Expr*);
1444 int sqlite3ExprIsInteger(Expr*, int*);
1445 int sqlite3IsRowid(const char*);
1446 void sqlite3GenerateRowDelete(sqlite3*, Vdbe*, Table*, int, int);
1447 void sqlite3GenerateRowIndexDelete(sqlite3*, Vdbe*, Table*, int, char*);
1448 void sqlite3GenerateIndexKey(Vdbe*, Index*, int);
1449 void sqlite3GenerateConstraintChecks(Parse*,Table*,int,char*,int,int,int,int);
1450 void sqlite3CompleteInsertion(Parse*, Table*, int, char*, int, int, int);
1451 void sqlite3OpenTableAndIndices(Parse*, Table*, int, int);
1452 void sqlite3BeginWriteOperation(Parse*, int, int);
1453 Expr *sqlite3ExprDup(Expr*);
1454 void sqlite3TokenCopy(Token*, Token*);
1455 ExprList *sqlite3ExprListDup(ExprList*);
1456 SrcList *sqlite3SrcListDup(SrcList*);
1457 IdList *sqlite3IdListDup(IdList*);
1458 Select *sqlite3SelectDup(Select*);
1459 FuncDef *sqlite3FindFunction(sqlite3*,const char*,int,int,u8,int);
1460 void sqlite3RegisterBuiltinFunctions(sqlite3*);
1461 void sqlite3RegisterDateTimeFunctions(sqlite3*);
1462 int sqlite3SafetyOn(sqlite3*);
1463 int sqlite3SafetyOff(sqlite3*);
1464 int sqlite3SafetyCheck(sqlite3*);
1465 void sqlite3ChangeCookie(sqlite3*, Vdbe*, int);
1466 
1467 #ifndef SQLITE_OMIT_TRIGGER
1468   void sqlite3BeginTrigger(Parse*, Token*,Token*,int,int,IdList*,SrcList*,
1469                            int,Expr*,int);
1470   void sqlite3FinishTrigger(Parse*, TriggerStep*, Token*);
1471   void sqlite3DropTrigger(Parse*, SrcList*);
1472   void sqlite3DropTriggerPtr(Parse*, Trigger*, int);
1473   int sqlite3TriggersExist(Parse*, Table*, int, ExprList*);
1474   int sqlite3CodeRowTrigger(Parse*, int, ExprList*, int, Table *, int, int,
1475                            int, int);
1476   void sqliteViewTriggers(Parse*, Table*, Expr*, int, ExprList*);
1477   void sqlite3DeleteTriggerStep(TriggerStep*);
1478   TriggerStep *sqlite3TriggerSelectStep(Select*);
1479   TriggerStep *sqlite3TriggerInsertStep(Token*, IdList*, ExprList*,Select*,int);
1480   TriggerStep *sqlite3TriggerUpdateStep(Token*, ExprList*, Expr*, int);
1481   TriggerStep *sqlite3TriggerDeleteStep(Token*, Expr*);
1482   void sqlite3DeleteTrigger(Trigger*);
1483   void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*);
1484 #else
1485 # define sqlite3TriggersExist(A,B,C,D,E,F) 0
1486 # define sqlite3DeleteTrigger(A)
1487 # define sqlite3DropTriggerPtr(A,B,C)
1488 # define sqlite3UnlinkAndDeleteTrigger(A,B,C)
1489 # define sqlite3CodeRowTrigger(A,B,C,D,E,F,G,H,I) 0
1490 #endif
1491 
1492 int sqlite3JoinType(Parse*, Token*, Token*, Token*);
1493 void sqlite3CreateForeignKey(Parse*, ExprList*, Token*, ExprList*, int);
1494 void sqlite3DeferForeignKey(Parse*, int);
1495 #ifndef SQLITE_OMIT_AUTHORIZATION
1496   void sqlite3AuthRead(Parse*,Expr*,SrcList*);
1497   int sqlite3AuthCheck(Parse*,int, const char*, const char*, const char*);
1498   void sqlite3AuthContextPush(Parse*, AuthContext*, const char*);
1499   void sqlite3AuthContextPop(AuthContext*);
1500 #else
1501 # define sqlite3AuthRead(a,b,c)
1502 # define sqlite3AuthCheck(a,b,c,d,e)    SQLITE_OK
1503 # define sqlite3AuthContextPush(a,b,c)
1504 # define sqlite3AuthContextPop(a)  ((void)(a))
1505 #endif
1506 void sqlite3Attach(Parse*, Token*, Token*, int, Token*);
1507 void sqlite3Detach(Parse*, Token*);
1508 int sqlite3BtreeFactory(const sqlite3 *db, const char *zFilename,
1509                        int omitJournal, int nCache, Btree **ppBtree);
1510 int sqlite3FixInit(DbFixer*, Parse*, int, const char*, const Token*);
1511 int sqlite3FixSrcList(DbFixer*, SrcList*);
1512 int sqlite3FixSelect(DbFixer*, Select*);
1513 int sqlite3FixExpr(DbFixer*, Expr*);
1514 int sqlite3FixExprList(DbFixer*, ExprList*);
1515 int sqlite3FixTriggerStep(DbFixer*, TriggerStep*);
1516 int sqlite3AtoF(const char *z, double*);
1517 char *sqlite3_snprintf(int,char*,const char*,...);
1518 int sqlite3GetInt32(const char *, int*);
1519 int sqlite3FitsIn64Bits(const char *);
1520 int sqlite3utf16ByteLen(const void *pData, int nChar);
1521 int sqlite3utf8CharLen(const char *pData, int nByte);
1522 int sqlite3ReadUtf8(const unsigned char *);
1523 int sqlite3PutVarint(unsigned char *, u64);
1524 int sqlite3GetVarint(const unsigned char *, u64 *);
1525 int sqlite3GetVarint32(const unsigned char *, u32 *);
1526 int sqlite3VarintLen(u64 v);
1527 void sqlite3IndexAffinityStr(Vdbe *, Index *);
1528 void sqlite3TableAffinityStr(Vdbe *, Table *);
1529 char sqlite3CompareAffinity(Expr *pExpr, char aff2);
1530 int sqlite3IndexAffinityOk(Expr *pExpr, char idx_affinity);
1531 char sqlite3ExprAffinity(Expr *pExpr);
1532 int sqlite3atoi64(const char*, i64*);
1533 void sqlite3Error(sqlite3*, int, const char*,...);
1534 void *sqlite3HexToBlob(const char *z);
1535 int sqlite3TwoPartName(Parse *, Token *, Token *, Token **);
1536 const char *sqlite3ErrStr(int);
1537 int sqlite3ReadUniChar(const char *zStr, int *pOffset, u8 *pEnc, int fold);
1538 int sqlite3ReadSchema(Parse *pParse);
1539 CollSeq *sqlite3FindCollSeq(sqlite3*,u8 enc, const char *,int,int);
1540 CollSeq *sqlite3LocateCollSeq(Parse *pParse, const char *zName, int nName);
1541 CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr);
1542 int sqlite3CheckCollSeq(Parse *, CollSeq *);
1543 int sqlite3CheckIndexCollSeq(Parse *, Index *);
1544 int sqlite3CheckObjectName(Parse *, const char *);
1545 void sqlite3VdbeSetChanges(sqlite3 *, int);
1546 void sqlite3utf16Substr(sqlite3_context *,int,sqlite3_value **);
1547 
1548 const void *sqlite3ValueText(sqlite3_value*, u8);
1549 int sqlite3ValueBytes(sqlite3_value*, u8);
1550 void sqlite3ValueSetStr(sqlite3_value*, int, const void *,u8, void(*)(void*));
1551 void sqlite3ValueFree(sqlite3_value*);
1552 sqlite3_value *sqlite3ValueNew();
1553 sqlite3_value *sqlite3GetTransientValue(sqlite3*db);
1554 int sqlite3ValueFromExpr(Expr *, u8, u8, sqlite3_value **);
1555 void sqlite3ValueApplyAffinity(sqlite3_value *, u8, u8);
1556 extern const unsigned char sqlite3UpperToLower[];
1557 void sqlite3RootPageMoved(Db*, int, int);
1558 void sqlite3Reindex(Parse*, Token*, Token*);
1559 void sqlite3AlterFunctions(sqlite3*);
1560 void sqlite3AlterRenameTable(Parse*, SrcList*, Token*);
1561 int sqlite3GetToken(const unsigned char *, int *);
1562 void sqlite3NestedParse(Parse*, const char*, ...);
1563 void sqlite3ExpirePreparedStatements(sqlite3*);
1564 void sqlite3CodeSubselect(Parse *, Expr *);
1565 int sqlite3SelectResolve(Parse *, Select *, NameContext *);
1566 void sqlite3ColumnDefault(Vdbe *, Table *, int);
1567 void sqlite3AlterFinishAddColumn(Parse *, Token *);
1568 void sqlite3AlterBeginAddColumn(Parse *, SrcList *);
1569 const char *sqlite3TestErrorName(int);
1570 CollSeq *sqlite3GetCollSeq(sqlite3*, CollSeq *, const char *, int);
1571 char sqlite3AffinityType(const Token*);
1572 void sqlite3Analyze(Parse*, Token*, Token*);
1573 int sqlite3InvokeBusyHandler(BusyHandler*);
1574 int sqlite3FindDb(sqlite3*, Token*);
1575 void sqlite3AnalysisLoad(sqlite3*,int iDB);
1576 void sqlite3DefaultRowEst(Index*);
1577 
1578 #ifdef SQLITE_SSE
1579 #include "sseInt.h"
1580 #endif
1581 
1582 #endif
1583