source: trunk/src/3rdparty/sqlite/sqliteInt.h@ 205

Last change on this file since 205 was 205, checked in by rudi, 14 years ago

Added SQLite 2.8.17 sources. This allows to build at least one of the sql drivers / plugins.

File size: 56.1 KB
Line 
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.220.2.2 2005/06/06 15:07:03 drh Exp $
15*/
16#include "config.h"
17#include "sqlite.h"
18#include "hash.h"
19#include "parse.h"
20#include "btree.h"
21#include <stdio.h>
22#include <stdlib.h>
23#include <string.h>
24#include <assert.h>
25
26/*
27** The maximum number of in-memory pages to use for the main database
28** table and for temporary tables.
29*/
30#define MAX_PAGES 2000
31#define TEMP_PAGES 500
32
33/*
34** If the following macro is set to 1, then NULL values are considered
35** distinct for the SELECT DISTINCT statement and for UNION or EXCEPT
36** compound queries. No other SQL database engine (among those tested)
37** works this way except for OCELOT. But the SQL92 spec implies that
38** this is how things should work.
39**
40** If the following macro is set to 0, then NULLs are indistinct for
41** SELECT DISTINCT and for UNION.
42*/
43#define NULL_ALWAYS_DISTINCT 0
44
45/*
46** If the following macro is set to 1, then NULL values are considered
47** distinct when determining whether or not two entries are the same
48** in a UNIQUE index. This is the way PostgreSQL, Oracle, DB2, MySQL,
49** OCELOT, and Firebird all work. The SQL92 spec explicitly says this
50** is the way things are suppose to work.
51**
52** If the following macro is set to 0, the NULLs are indistinct for
53** a UNIQUE index. In this mode, you can only have a single NULL entry
54** for a column declared UNIQUE. This is the way Informix and SQL Server
55** work.
56*/
57#define NULL_DISTINCT_FOR_UNIQUE 1
58
59/*
60** The maximum number of attached databases. This must be at least 2
61** in order to support the main database file (0) and the file used to
62** hold temporary tables (1). And it must be less than 256 because
63** an unsigned character is used to stored the database index.
64*/
65#define MAX_ATTACHED 10
66
67/*
68** The next macro is used to determine where TEMP tables and indices
69** are stored. Possible values:
70**
71** 0 Always use a temporary files
72** 1 Use a file unless overridden by "PRAGMA temp_store"
73** 2 Use memory unless overridden by "PRAGMA temp_store"
74** 3 Always use memory
75*/
76#ifndef TEMP_STORE
77# define TEMP_STORE 1
78#endif
79
80/*
81** When building SQLite for embedded systems where memory is scarce,
82** you can define one or more of the following macros to omit extra
83** features of the library and thus keep the size of the library to
84** a minimum.
85*/
86/* #define SQLITE_OMIT_AUTHORIZATION 1 */
87/* #define SQLITE_OMIT_INMEMORYDB 1 */
88/* #define SQLITE_OMIT_VACUUM 1 */
89/* #define SQLITE_OMIT_DATETIME_FUNCS 1 */
90/* #define SQLITE_OMIT_PROGRESS_CALLBACK 1 */
91
92/*
93** Integers of known sizes. These typedefs might change for architectures
94** where the sizes very. Preprocessor macros are available so that the
95** types can be conveniently redefined at compile-type. Like this:
96**
97** cc '-DUINTPTR_TYPE=long long int' ...
98*/
99#ifndef UINT32_TYPE
100# define UINT32_TYPE unsigned int
101#endif
102#ifndef UINT16_TYPE
103# define UINT16_TYPE unsigned short int
104#endif
105#ifndef INT16_TYPE
106# define INT16_TYPE short int
107#endif
108#ifndef UINT8_TYPE
109# define UINT8_TYPE unsigned char
110#endif
111#ifndef INT8_TYPE
112# define INT8_TYPE signed char
113#endif
114#ifndef INTPTR_TYPE
115# if SQLITE_PTR_SZ==4
116# define INTPTR_TYPE int
117# else
118# define INTPTR_TYPE long long
119# endif
120#endif
121typedef UINT32_TYPE u32; /* 4-byte unsigned integer */
122typedef UINT16_TYPE u16; /* 2-byte unsigned integer */
123typedef INT16_TYPE i16; /* 2-byte signed integer */
124typedef UINT8_TYPE u8; /* 1-byte unsigned integer */
125typedef UINT8_TYPE i8; /* 1-byte signed integer */
126typedef INTPTR_TYPE ptr; /* Big enough to hold a pointer */
127typedef unsigned INTPTR_TYPE uptr; /* Big enough to hold a pointer */
128
129/*
130** Defer sourcing vdbe.h until after the "u8" typedef is defined.
131*/
132#include "vdbe.h"
133
134/*
135** Most C compilers these days recognize "long double", don't they?
136** Just in case we encounter one that does not, we will create a macro
137** for long double so that it can be easily changed to just "double".
138*/
139#ifndef LONGDOUBLE_TYPE
140# define LONGDOUBLE_TYPE long double
141#endif
142
143/*
144** This macro casts a pointer to an integer. Useful for doing
145** pointer arithmetic.
146*/
147#define Addr(X) ((uptr)X)
148
149/*
150** The maximum number of bytes of data that can be put into a single
151** row of a single table. The upper bound on this limit is 16777215
152** bytes (or 16MB-1). We have arbitrarily set the limit to just 1MB
153** here because the overflow page chain is inefficient for really big
154** records and we want to discourage people from thinking that
155** multi-megabyte records are OK. If your needs are different, you can
156** change this define and recompile to increase or decrease the record
157** size.
158**
159** The 16777198 is computed as follows: 238 bytes of payload on the
160** original pages plus 16448 overflow pages each holding 1020 bytes of
161** data.
162*/
163#define MAX_BYTES_PER_ROW 1048576
164/* #define MAX_BYTES_PER_ROW 16777198 */
165
166/*
167** If memory allocation problems are found, recompile with
168**
169** -DMEMORY_DEBUG=1
170**
171** to enable some sanity checking on malloc() and free(). To
172** check for memory leaks, recompile with
173**
174** -DMEMORY_DEBUG=2
175**
176** and a line of text will be written to standard error for
177** each malloc() and free(). This output can be analyzed
178** by an AWK script to determine if there are any leaks.
179*/
180#ifdef MEMORY_DEBUG
181# define sqliteMalloc(X) sqliteMalloc_(X,1,__FILE__,__LINE__)
182# define sqliteMallocRaw(X) sqliteMalloc_(X,0,__FILE__,__LINE__)
183# define sqliteFree(X) sqliteFree_(X,__FILE__,__LINE__)
184# define sqliteRealloc(X,Y) sqliteRealloc_(X,Y,__FILE__,__LINE__)
185# define sqliteStrDup(X) sqliteStrDup_(X,__FILE__,__LINE__)
186# define sqliteStrNDup(X,Y) sqliteStrNDup_(X,Y,__FILE__,__LINE__)
187 void sqliteStrRealloc(char**);
188#else
189# define sqliteRealloc_(X,Y) sqliteRealloc(X,Y)
190# define sqliteStrRealloc(X)
191#endif
192
193/*
194** This variable gets set if malloc() ever fails. After it gets set,
195** the SQLite library shuts down permanently.
196*/
197extern int sqlite_malloc_failed;
198
199/*
200** The following global variables are used for testing and debugging
201** only. They only work if MEMORY_DEBUG is defined.
202*/
203#ifdef MEMORY_DEBUG
204extern int sqlite_nMalloc; /* Number of sqliteMalloc() calls */
205extern int sqlite_nFree; /* Number of sqliteFree() calls */
206extern int sqlite_iMallocFail; /* Fail sqliteMalloc() after this many calls */
207#endif
208
209/*
210** Name of the master database table. The master database table
211** is a special table that holds the names and attributes of all
212** user tables and indices.
213*/
214#define MASTER_NAME "sqlite_master"
215#define TEMP_MASTER_NAME "sqlite_temp_master"
216
217/*
218** The name of the schema table.
219*/
220#define SCHEMA_TABLE(x) (x?TEMP_MASTER_NAME:MASTER_NAME)
221
222/*
223** A convenience macro that returns the number of elements in
224** an array.
225*/
226#define ArraySize(X) (sizeof(X)/sizeof(X[0]))
227
228/*
229** Forward references to structures
230*/
231typedef struct Column Column;
232typedef struct Table Table;
233typedef struct Index Index;
234typedef struct Instruction Instruction;
235typedef struct Expr Expr;
236typedef struct ExprList ExprList;
237typedef struct Parse Parse;
238typedef struct Token Token;
239typedef struct IdList IdList;
240typedef struct SrcList SrcList;
241typedef struct WhereInfo WhereInfo;
242typedef struct WhereLevel WhereLevel;
243typedef struct Select Select;
244typedef struct AggExpr AggExpr;
245typedef struct FuncDef FuncDef;
246typedef struct Trigger Trigger;
247typedef struct TriggerStep TriggerStep;
248typedef struct TriggerStack TriggerStack;
249typedef struct FKey FKey;
250typedef struct Db Db;
251typedef struct AuthContext AuthContext;
252
253/*
254** Each database file to be accessed by the system is an instance
255** of the following structure. There are normally two of these structures
256** in the sqlite.aDb[] array. aDb[0] is the main database file and
257** aDb[1] is the database file used to hold temporary tables. Additional
258** databases may be attached.
259*/
260struct Db {
261 char *zName; /* Name of this database */
262 Btree *pBt; /* The B*Tree structure for this database file */
263 int schema_cookie; /* Database schema version number for this file */
264 Hash tblHash; /* All tables indexed by name */
265 Hash idxHash; /* All (named) indices indexed by name */
266 Hash trigHash; /* All triggers indexed by name */
267 Hash aFKey; /* Foreign keys indexed by to-table */
268 u8 inTrans; /* 0: not writable. 1: Transaction. 2: Checkpoint */
269 u16 flags; /* Flags associated with this database */
270 void *pAux; /* Auxiliary data. Usually NULL */
271 void (*xFreeAux)(void*); /* Routine to free pAux */
272};
273
274/*
275** These macros can be used to test, set, or clear bits in the
276** Db.flags field.
277*/
278#define DbHasProperty(D,I,P) (((D)->aDb[I].flags&(P))==(P))
279#define DbHasAnyProperty(D,I,P) (((D)->aDb[I].flags&(P))!=0)
280#define DbSetProperty(D,I,P) (D)->aDb[I].flags|=(P)
281#define DbClearProperty(D,I,P) (D)->aDb[I].flags&=~(P)
282
283/*
284** Allowed values for the DB.flags field.
285**
286** The DB_Locked flag is set when the first OP_Transaction or OP_Checkpoint
287** opcode is emitted for a database. This prevents multiple occurances
288** of those opcodes for the same database in the same program. Similarly,
289** the DB_Cookie flag is set when the OP_VerifyCookie opcode is emitted,
290** and prevents duplicate OP_VerifyCookies from taking up space and slowing
291** down execution.
292**
293** The DB_SchemaLoaded flag is set after the database schema has been
294** read into internal hash tables.
295**
296** DB_UnresetViews means that one or more views have column names that
297** have been filled out. If the schema changes, these column names might
298** changes and so the view will need to be reset.
299*/
300#define DB_Locked 0x0001 /* OP_Transaction opcode has been emitted */
301#define DB_Cookie 0x0002 /* OP_VerifyCookie opcode has been emiited */
302#define DB_SchemaLoaded 0x0004 /* The schema has been loaded */
303#define DB_UnresetViews 0x0008 /* Some views have defined column names */
304
305
306/*
307** Each database is an instance of the following structure.
308**
309** The sqlite.file_format is initialized by the database file
310** and helps determines how the data in the database file is
311** represented. This field allows newer versions of the library
312** to read and write older databases. The various file formats
313** are as follows:
314**
315** file_format==1 Version 2.1.0.
316** file_format==2 Version 2.2.0. Add support for INTEGER PRIMARY KEY.
317** file_format==3 Version 2.6.0. Fix empty-string index bug.
318** file_format==4 Version 2.7.0. Add support for separate numeric and
319** text datatypes.
320**
321** The sqlite.temp_store determines where temporary database files
322** are stored. If 1, then a file is created to hold those tables. If
323** 2, then they are held in memory. 0 means use the default value in
324** the TEMP_STORE macro.
325**
326** The sqlite.lastRowid records the last insert rowid generated by an
327** insert statement. Inserts on views do not affect its value. Each
328** trigger has its own context, so that lastRowid can be updated inside
329** triggers as usual. The previous value will be restored once the trigger
330** exits. Upon entering a before or instead of trigger, lastRowid is no
331** longer (since after version 2.8.12) reset to -1.
332**
333** The sqlite.nChange does not count changes within triggers and keeps no
334** context. It is reset at start of sqlite_exec.
335** The sqlite.lsChange represents the number of changes made by the last
336** insert, update, or delete statement. It remains constant throughout the
337** length of a statement and is then updated by OP_SetCounts. It keeps a
338** context stack just like lastRowid so that the count of changes
339** within a trigger is not seen outside the trigger. Changes to views do not
340** affect the value of lsChange.
341** The sqlite.csChange keeps track of the number of current changes (since
342** the last statement) and is used to update sqlite_lsChange.
343*/
344struct sqlite {
345 int nDb; /* Number of backends currently in use */
346 Db *aDb; /* All backends */
347 Db aDbStatic[2]; /* Static space for the 2 default backends */
348 int flags; /* Miscellanous flags. See below */
349 u8 file_format; /* What file format version is this database? */
350 u8 safety_level; /* How aggressive at synching data to disk */
351 u8 want_to_close; /* Close after all VDBEs are deallocated */
352 u8 temp_store; /* 1=file, 2=memory, 0=compile-time default */
353 u8 onError; /* Default conflict algorithm */
354 int next_cookie; /* Next value of aDb[0].schema_cookie */
355 int cache_size; /* Number of pages to use in the cache */
356 int nTable; /* Number of tables in the database */
357 void *pBusyArg; /* 1st Argument to the busy callback */
358 int (*xBusyCallback)(void *,const char*,int); /* The busy callback */
359 void *pCommitArg; /* Argument to xCommitCallback() */
360 int (*xCommitCallback)(void*);/* Invoked at every commit. */
361 Hash aFunc; /* All functions that can be in SQL exprs */
362 int lastRowid; /* ROWID of most recent insert (see above) */
363 int priorNewRowid; /* Last randomly generated ROWID */
364 int magic; /* Magic number for detect library misuse */
365 int nChange; /* Number of rows changed (see above) */
366 int lsChange; /* Last statement change count (see above) */
367 int csChange; /* Current statement change count (see above) */
368 struct sqliteInitInfo { /* Information used during initialization */
369 int iDb; /* When back is being initialized */
370 int newTnum; /* Rootpage of table being initialized */
371 u8 busy; /* TRUE if currently initializing */
372 } init;
373 struct Vdbe *pVdbe; /* List of active virtual machines */
374 void (*xTrace)(void*,const char*); /* Trace function */
375 void *pTraceArg; /* Argument to the trace function */
376#ifndef SQLITE_OMIT_AUTHORIZATION
377 int (*xAuth)(void*,int,const char*,const char*,const char*,const char*);
378 /* Access authorization function */
379 void *pAuthArg; /* 1st argument to the access auth function */
380#endif
381#ifndef SQLITE_OMIT_PROGRESS_CALLBACK
382 int (*xProgress)(void *); /* The progress callback */
383 void *pProgressArg; /* Argument to the progress callback */
384 int nProgressOps; /* Number of opcodes for progress callback */
385#endif
386};
387
388/*
389** Possible values for the sqlite.flags and or Db.flags fields.
390**
391** On sqlite.flags, the SQLITE_InTrans value means that we have
392** executed a BEGIN. On Db.flags, SQLITE_InTrans means a statement
393** transaction is active on that particular database file.
394*/
395#define SQLITE_VdbeTrace 0x00000001 /* True to trace VDBE execution */
396#define SQLITE_Initialized 0x00000002 /* True after initialization */
397#define SQLITE_Interrupt 0x00000004 /* Cancel current operation */
398#define SQLITE_InTrans 0x00000008 /* True if in a transaction */
399#define SQLITE_InternChanges 0x00000010 /* Uncommitted Hash table changes */
400#define SQLITE_FullColNames 0x00000020 /* Show full column names on SELECT */
401#define SQLITE_ShortColNames 0x00000040 /* Show short columns names */
402#define SQLITE_CountRows 0x00000080 /* Count rows changed by INSERT, */
403 /* DELETE, or UPDATE and return */
404 /* the count using a callback. */
405#define SQLITE_NullCallback 0x00000100 /* Invoke the callback once if the */
406 /* result set is empty */
407#define SQLITE_ReportTypes 0x00000200 /* Include information on datatypes */
408 /* in 4th argument of callback */
409
410/*
411** Possible values for the sqlite.magic field.
412** The numbers are obtained at random and have no special meaning, other
413** than being distinct from one another.
414*/
415#define SQLITE_MAGIC_OPEN 0xa029a697 /* Database is open */
416#define SQLITE_MAGIC_CLOSED 0x9f3c2d33 /* Database is closed */
417#define SQLITE_MAGIC_BUSY 0xf03b7906 /* Database currently in use */
418#define SQLITE_MAGIC_ERROR 0xb5357930 /* An SQLITE_MISUSE error occurred */
419
420/*
421** Each SQL function is defined by an instance of the following
422** structure. A pointer to this structure is stored in the sqlite.aFunc
423** hash table. When multiple functions have the same name, the hash table
424** points to a linked list of these structures.
425*/
426struct FuncDef {
427 void (*xFunc)(sqlite_func*,int,const char**); /* Regular function */
428 void (*xStep)(sqlite_func*,int,const char**); /* Aggregate function step */
429 void (*xFinalize)(sqlite_func*); /* Aggregate function finializer */
430 signed char nArg; /* Number of arguments. -1 means unlimited */
431 signed char dataType; /* Arg that determines datatype. -1=NUMERIC, */
432 /* -2=TEXT. -3=SQLITE_ARGS */
433 u8 includeTypes; /* Add datatypes to args of xFunc and xStep */
434 void *pUserData; /* User data parameter */
435 FuncDef *pNext; /* Next function with same name */
436};
437
438/*
439** information about each column of an SQL table is held in an instance
440** of this structure.
441*/
442struct Column {
443 char *zName; /* Name of this column */
444 char *zDflt; /* Default value of this column */
445 char *zType; /* Data type for this column */
446 u8 notNull; /* True if there is a NOT NULL constraint */
447 u8 isPrimKey; /* True if this column is part of the PRIMARY KEY */
448 u8 sortOrder; /* Some combination of SQLITE_SO_... values */
449 u8 dottedName; /* True if zName contains a "." character */
450};
451
452/*
453** The allowed sort orders.
454**
455** The TEXT and NUM values use bits that do not overlap with DESC and ASC.
456** That way the two can be combined into a single number.
457*/
458#define SQLITE_SO_UNK 0 /* Use the default collating type. (SCT_NUM) */
459#define SQLITE_SO_TEXT 2 /* Sort using memcmp() */
460#define SQLITE_SO_NUM 4 /* Sort using sqliteCompare() */
461#define SQLITE_SO_TYPEMASK 6 /* Mask to extract the collating sequence */
462#define SQLITE_SO_ASC 0 /* Sort in ascending order */
463#define SQLITE_SO_DESC 1 /* Sort in descending order */
464#define SQLITE_SO_DIRMASK 1 /* Mask to extract the sort direction */
465
466/*
467** Each SQL table is represented in memory by an instance of the
468** following structure.
469**
470** Table.zName is the name of the table. The case of the original
471** CREATE TABLE statement is stored, but case is not significant for
472** comparisons.
473**
474** Table.nCol is the number of columns in this table. Table.aCol is a
475** pointer to an array of Column structures, one for each column.
476**
477** If the table has an INTEGER PRIMARY KEY, then Table.iPKey is the index of
478** the column that is that key. Otherwise Table.iPKey is negative. Note
479** that the datatype of the PRIMARY KEY must be INTEGER for this field to
480** be set. An INTEGER PRIMARY KEY is used as the rowid for each row of
481** the table. If a table has no INTEGER PRIMARY KEY, then a random rowid
482** is generated for each row of the table. Table.hasPrimKey is true if
483** the table has any PRIMARY KEY, INTEGER or otherwise.
484**
485** Table.tnum is the page number for the root BTree page of the table in the
486** database file. If Table.iDb is the index of the database table backend
487** in sqlite.aDb[]. 0 is for the main database and 1 is for the file that
488** holds temporary tables and indices. If Table.isTransient
489** is true, then the table is stored in a file that is automatically deleted
490** when the VDBE cursor to the table is closed. In this case Table.tnum
491** refers VDBE cursor number that holds the table open, not to the root
492** page number. Transient tables are used to hold the results of a
493** sub-query that appears instead of a real table name in the FROM clause
494** of a SELECT statement.
495*/
496struct Table {
497 char *zName; /* Name of the table */
498 int nCol; /* Number of columns in this table */
499 Column *aCol; /* Information about each column */
500 int iPKey; /* If not less then 0, use aCol[iPKey] as the primary key */
501 Index *pIndex; /* List of SQL indexes on this table. */
502 int tnum; /* Root BTree node for this table (see note above) */
503 Select *pSelect; /* NULL for tables. Points to definition if a view. */
504 u8 readOnly; /* True if this table should not be written by the user */
505 u8 iDb; /* Index into sqlite.aDb[] of the backend for this table */
506 u8 isTransient; /* True if automatically deleted when VDBE finishes */
507 u8 hasPrimKey; /* True if there exists a primary key */
508 u8 keyConf; /* What to do in case of uniqueness conflict on iPKey */
509 Trigger *pTrigger; /* List of SQL triggers on this table */
510 FKey *pFKey; /* Linked list of all foreign keys in this table */
511};
512
513/*
514** Each foreign key constraint is an instance of the following structure.
515**
516** A foreign key is associated with two tables. The "from" table is
517** the table that contains the REFERENCES clause that creates the foreign
518** key. The "to" table is the table that is named in the REFERENCES clause.
519** Consider this example:
520**
521** CREATE TABLE ex1(
522** a INTEGER PRIMARY KEY,
523** b INTEGER CONSTRAINT fk1 REFERENCES ex2(x)
524** );
525**
526** For foreign key "fk1", the from-table is "ex1" and the to-table is "ex2".
527**
528** Each REFERENCES clause generates an instance of the following structure
529** which is attached to the from-table. The to-table need not exist when
530** the from-table is created. The existance of the to-table is not checked
531** until an attempt is made to insert data into the from-table.
532**
533** The sqlite.aFKey hash table stores pointers to this structure
534** given the name of a to-table. For each to-table, all foreign keys
535** associated with that table are on a linked list using the FKey.pNextTo
536** field.
537*/
538struct FKey {
539 Table *pFrom; /* The table that constains the REFERENCES clause */
540 FKey *pNextFrom; /* Next foreign key in pFrom */
541 char *zTo; /* Name of table that the key points to */
542 FKey *pNextTo; /* Next foreign key that points to zTo */
543 int nCol; /* Number of columns in this key */
544 struct sColMap { /* Mapping of columns in pFrom to columns in zTo */
545 int iFrom; /* Index of column in pFrom */
546 char *zCol; /* Name of column in zTo. If 0 use PRIMARY KEY */
547 } *aCol; /* One entry for each of nCol column s */
548 u8 isDeferred; /* True if constraint checking is deferred till COMMIT */
549 u8 updateConf; /* How to resolve conflicts that occur on UPDATE */
550 u8 deleteConf; /* How to resolve conflicts that occur on DELETE */
551 u8 insertConf; /* How to resolve conflicts that occur on INSERT */
552};
553
554/*
555** SQLite supports many different ways to resolve a contraint
556** error. ROLLBACK processing means that a constraint violation
557** causes the operation in process to fail and for the current transaction
558** to be rolled back. ABORT processing means the operation in process
559** fails and any prior changes from that one operation are backed out,
560** but the transaction is not rolled back. FAIL processing means that
561** the operation in progress stops and returns an error code. But prior
562** changes due to the same operation are not backed out and no rollback
563** occurs. IGNORE means that the particular row that caused the constraint
564** error is not inserted or updated. Processing continues and no error
565** is returned. REPLACE means that preexisting database rows that caused
566** a UNIQUE constraint violation are removed so that the new insert or
567** update can proceed. Processing continues and no error is reported.
568**
569** RESTRICT, SETNULL, and CASCADE actions apply only to foreign keys.
570** RESTRICT is the same as ABORT for IMMEDIATE foreign keys and the
571** same as ROLLBACK for DEFERRED keys. SETNULL means that the foreign
572** key is set to NULL. CASCADE means that a DELETE or UPDATE of the
573** referenced table row is propagated into the row that holds the
574** foreign key.
575**
576** The following symbolic values are used to record which type
577** of action to take.
578*/
579#define OE_None 0 /* There is no constraint to check */
580#define OE_Rollback 1 /* Fail the operation and rollback the transaction */
581#define OE_Abort 2 /* Back out changes but do no rollback transaction */
582#define OE_Fail 3 /* Stop the operation but leave all prior changes */
583#define OE_Ignore 4 /* Ignore the error. Do not do the INSERT or UPDATE */
584#define OE_Replace 5 /* Delete existing record, then do INSERT or UPDATE */
585
586#define OE_Restrict 6 /* OE_Abort for IMMEDIATE, OE_Rollback for DEFERRED */
587#define OE_SetNull 7 /* Set the foreign key value to NULL */
588#define OE_SetDflt 8 /* Set the foreign key value to its default */
589#define OE_Cascade 9 /* Cascade the changes */
590
591#define OE_Default 99 /* Do whatever the default action is */
592
593/*
594** Each SQL index is represented in memory by an
595** instance of the following structure.
596**
597** The columns of the table that are to be indexed are described
598** by the aiColumn[] field of this structure. For example, suppose
599** we have the following table and index:
600**
601** CREATE TABLE Ex1(c1 int, c2 int, c3 text);
602** CREATE INDEX Ex2 ON Ex1(c3,c1);
603**
604** In the Table structure describing Ex1, nCol==3 because there are
605** three columns in the table. In the Index structure describing
606** Ex2, nColumn==2 since 2 of the 3 columns of Ex1 are indexed.
607** The value of aiColumn is {2, 0}. aiColumn[0]==2 because the
608** first column to be indexed (c3) has an index of 2 in Ex1.aCol[].
609** The second column to be indexed (c1) has an index of 0 in
610** Ex1.aCol[], hence Ex2.aiColumn[1]==0.
611**
612** The Index.onError field determines whether or not the indexed columns
613** must be unique and what to do if they are not. When Index.onError=OE_None,
614** it means this is not a unique index. Otherwise it is a unique index
615** and the value of Index.onError indicate the which conflict resolution
616** algorithm to employ whenever an attempt is made to insert a non-unique
617** element.
618*/
619struct Index {
620 char *zName; /* Name of this index */
621 int nColumn; /* Number of columns in the table used by this index */
622 int *aiColumn; /* Which columns are used by this index. 1st is 0 */
623 Table *pTable; /* The SQL table being indexed */
624 int tnum; /* Page containing root of this index in database file */
625 u8 onError; /* OE_Abort, OE_Ignore, OE_Replace, or OE_None */
626 u8 autoIndex; /* True if is automatically created (ex: by UNIQUE) */
627 u8 iDb; /* Index in sqlite.aDb[] of where this index is stored */
628 Index *pNext; /* The next index associated with the same table */
629};
630
631/*
632** Each token coming out of the lexer is an instance of
633** this structure. Tokens are also used as part of an expression.
634**
635** Note if Token.z==0 then Token.dyn and Token.n are undefined and
636** may contain random values. Do not make any assuptions about Token.dyn
637** and Token.n when Token.z==0.
638*/
639struct Token {
640 const char *z; /* Text of the token. Not NULL-terminated! */
641 unsigned dyn : 1; /* True for malloced memory, false for static */
642 unsigned n : 31; /* Number of characters in this token */
643};
644
645/*
646** Each node of an expression in the parse tree is an instance
647** of this structure.
648**
649** Expr.op is the opcode. The integer parser token codes are reused
650** as opcodes here. For example, the parser defines TK_GE to be an integer
651** code representing the ">=" operator. This same integer code is reused
652** to represent the greater-than-or-equal-to operator in the expression
653** tree.
654**
655** Expr.pRight and Expr.pLeft are subexpressions. Expr.pList is a list
656** of argument if the expression is a function.
657**
658** Expr.token is the operator token for this node. For some expressions
659** that have subexpressions, Expr.token can be the complete text that gave
660** rise to the Expr. In the latter case, the token is marked as being
661** a compound token.
662**
663** An expression of the form ID or ID.ID refers to a column in a table.
664** For such expressions, Expr.op is set to TK_COLUMN and Expr.iTable is
665** the integer cursor number of a VDBE cursor pointing to that table and
666** Expr.iColumn is the column number for the specific column. If the
667** expression is used as a result in an aggregate SELECT, then the
668** value is also stored in the Expr.iAgg column in the aggregate so that
669** it can be accessed after all aggregates are computed.
670**
671** If the expression is a function, the Expr.iTable is an integer code
672** representing which function. If the expression is an unbound variable
673** marker (a question mark character '?' in the original SQL) then the
674** Expr.iTable holds the index number for that variable.
675**
676** The Expr.pSelect field points to a SELECT statement. The SELECT might
677** be the right operand of an IN operator. Or, if a scalar SELECT appears
678** in an expression the opcode is TK_SELECT and Expr.pSelect is the only
679** operand.
680*/
681struct Expr {
682 u8 op; /* Operation performed by this node */
683 u8 dataType; /* Either SQLITE_SO_TEXT or SQLITE_SO_NUM */
684 u8 iDb; /* Database referenced by this expression */
685 u8 flags; /* Various flags. See below */
686 Expr *pLeft, *pRight; /* Left and right subnodes */
687 ExprList *pList; /* A list of expressions used as function arguments
688 ** or in "<expr> IN (<expr-list)" */
689 Token token; /* An operand token */
690 Token span; /* Complete text of the expression */
691 int iTable, iColumn; /* When op==TK_COLUMN, then this expr node means the
692 ** iColumn-th field of the iTable-th table. */
693 int iAgg; /* When op==TK_COLUMN and pParse->useAgg==TRUE, pull
694 ** result from the iAgg-th element of the aggregator */
695 Select *pSelect; /* When the expression is a sub-select. Also the
696 ** right side of "<expr> IN (<select>)" */
697};
698
699/*
700** The following are the meanings of bits in the Expr.flags field.
701*/
702#define EP_FromJoin 0x0001 /* Originated in ON or USING clause of a join */
703
704/*
705** These macros can be used to test, set, or clear bits in the
706** Expr.flags field.
707*/
708#define ExprHasProperty(E,P) (((E)->flags&(P))==(P))
709#define ExprHasAnyProperty(E,P) (((E)->flags&(P))!=0)
710#define ExprSetProperty(E,P) (E)->flags|=(P)
711#define ExprClearProperty(E,P) (E)->flags&=~(P)
712
713/*
714** A list of expressions. Each expression may optionally have a
715** name. An expr/name combination can be used in several ways, such
716** as the list of "expr AS ID" fields following a "SELECT" or in the
717** list of "ID = expr" items in an UPDATE. A list of expressions can
718** also be used as the argument to a function, in which case the a.zName
719** field is not used.
720*/
721struct ExprList {
722 int nExpr; /* Number of expressions on the list */
723 int nAlloc; /* Number of entries allocated below */
724 struct ExprList_item {
725 Expr *pExpr; /* The list of expressions */
726 char *zName; /* Token associated with this expression */
727 u8 sortOrder; /* 1 for DESC or 0 for ASC */
728 u8 isAgg; /* True if this is an aggregate like count(*) */
729 u8 done; /* A flag to indicate when processing is finished */
730 } *a; /* One entry for each expression */
731};
732
733/*
734** An instance of this structure can hold a simple list of identifiers,
735** such as the list "a,b,c" in the following statements:
736**
737** INSERT INTO t(a,b,c) VALUES ...;
738** CREATE INDEX idx ON t(a,b,c);
739** CREATE TRIGGER trig BEFORE UPDATE ON t(a,b,c) ...;
740**
741** The IdList.a.idx field is used when the IdList represents the list of
742** column names after a table name in an INSERT statement. In the statement
743**
744** INSERT INTO t(a,b,c) ...
745**
746** If "a" is the k-th column of table "t", then IdList.a[0].idx==k.
747*/
748struct IdList {
749 int nId; /* Number of identifiers on the list */
750 int nAlloc; /* Number of entries allocated for a[] below */
751 struct IdList_item {
752 char *zName; /* Name of the identifier */
753 int idx; /* Index in some Table.aCol[] of a column named zName */
754 } *a;
755};
756
757/*
758** The following structure describes the FROM clause of a SELECT statement.
759** Each table or subquery in the FROM clause is a separate element of
760** the SrcList.a[] array.
761**
762** With the addition of multiple database support, the following structure
763** can also be used to describe a particular table such as the table that
764** is modified by an INSERT, DELETE, or UPDATE statement. In standard SQL,
765** such a table must be a simple name: ID. But in SQLite, the table can
766** now be identified by a database name, a dot, then the table name: ID.ID.
767*/
768struct SrcList {
769 i16 nSrc; /* Number of tables or subqueries in the FROM clause */
770 i16 nAlloc; /* Number of entries allocated in a[] below */
771 struct SrcList_item {
772 char *zDatabase; /* Name of database holding this table */
773 char *zName; /* Name of the table */
774 char *zAlias; /* The "B" part of a "A AS B" phrase. zName is the "A" */
775 Table *pTab; /* An SQL table corresponding to zName */
776 Select *pSelect; /* A SELECT statement used in place of a table name */
777 int jointype; /* Type of join between this table and the next */
778 int iCursor; /* The VDBE cursor number used to access this table */
779 Expr *pOn; /* The ON clause of a join */
780 IdList *pUsing; /* The USING clause of a join */
781 } a[1]; /* One entry for each identifier on the list */
782};
783
784/*
785** Permitted values of the SrcList.a.jointype field
786*/
787#define JT_INNER 0x0001 /* Any kind of inner or cross join */
788#define JT_NATURAL 0x0002 /* True for a "natural" join */
789#define JT_LEFT 0x0004 /* Left outer join */
790#define JT_RIGHT 0x0008 /* Right outer join */
791#define JT_OUTER 0x0010 /* The "OUTER" keyword is present */
792#define JT_ERROR 0x0020 /* unknown or unsupported join type */
793
794/*
795** For each nested loop in a WHERE clause implementation, the WhereInfo
796** structure contains a single instance of this structure. This structure
797** is intended to be private the the where.c module and should not be
798** access or modified by other modules.
799*/
800struct WhereLevel {
801 int iMem; /* Memory cell used by this level */
802 Index *pIdx; /* Index used */
803 int iCur; /* Cursor number used for this index */
804 int score; /* How well this indexed scored */
805 int brk; /* Jump here to break out of the loop */
806 int cont; /* Jump here to continue with the next loop cycle */
807 int op, p1, p2; /* Opcode used to terminate the loop */
808 int iLeftJoin; /* Memory cell used to implement LEFT OUTER JOIN */
809 int top; /* First instruction of interior of the loop */
810 int inOp, inP1, inP2;/* Opcode used to implement an IN operator */
811 int bRev; /* Do the scan in the reverse direction */
812};
813
814/*
815** The WHERE clause processing routine has two halves. The
816** first part does the start of the WHERE loop and the second
817** half does the tail of the WHERE loop. An instance of
818** this structure is returned by the first half and passed
819** into the second half to give some continuity.
820*/
821struct WhereInfo {
822 Parse *pParse;
823 SrcList *pTabList; /* List of tables in the join */
824 int iContinue; /* Jump here to continue with next record */
825 int iBreak; /* Jump here to break out of the loop */
826 int nLevel; /* Number of nested loop */
827 int savedNTab; /* Value of pParse->nTab before WhereBegin() */
828 int peakNTab; /* Value of pParse->nTab after WhereBegin() */
829 WhereLevel a[1]; /* Information about each nest loop in the WHERE */
830};
831
832/*
833** An instance of the following structure contains all information
834** needed to generate code for a single SELECT statement.
835**
836** The zSelect field is used when the Select structure must be persistent.
837** Normally, the expression tree points to tokens in the original input
838** string that encodes the select. But if the Select structure must live
839** longer than its input string (for example when it is used to describe
840** a VIEW) we have to make a copy of the input string so that the nodes
841** of the expression tree will have something to point to. zSelect is used
842** to hold that copy.
843**
844** nLimit is set to -1 if there is no LIMIT clause. nOffset is set to 0.
845** If there is a LIMIT clause, the parser sets nLimit to the value of the
846** limit and nOffset to the value of the offset (or 0 if there is not
847** offset). But later on, nLimit and nOffset become the memory locations
848** in the VDBE that record the limit and offset counters.
849*/
850struct Select {
851 ExprList *pEList; /* The fields of the result */
852 u8 op; /* One of: TK_UNION TK_ALL TK_INTERSECT TK_EXCEPT */
853 u8 isDistinct; /* True if the DISTINCT keyword is present */
854 SrcList *pSrc; /* The FROM clause */
855 Expr *pWhere; /* The WHERE clause */
856 ExprList *pGroupBy; /* The GROUP BY clause */
857 Expr *pHaving; /* The HAVING clause */
858 ExprList *pOrderBy; /* The ORDER BY clause */
859 Select *pPrior; /* Prior select in a compound select statement */
860 int nLimit, nOffset; /* LIMIT and OFFSET values. -1 means not used */
861 int iLimit, iOffset; /* Memory registers holding LIMIT & OFFSET counters */
862 char *zSelect; /* Complete text of the SELECT command */
863};
864
865/*
866** The results of a select can be distributed in several ways.
867*/
868#define SRT_Callback 1 /* Invoke a callback with each row of result */
869#define SRT_Mem 2 /* Store result in a memory cell */
870#define SRT_Set 3 /* Store result as unique keys in a table */
871#define SRT_Union 5 /* Store result as keys in a table */
872#define SRT_Except 6 /* Remove result from a UNION table */
873#define SRT_Table 7 /* Store result as data with a unique key */
874#define SRT_TempTable 8 /* Store result in a trasient table */
875#define SRT_Discard 9 /* Do not save the results anywhere */
876#define SRT_Sorter 10 /* Store results in the sorter */
877#define SRT_Subroutine 11 /* Call a subroutine to handle results */
878
879/*
880** When a SELECT uses aggregate functions (like "count(*)" or "avg(f1)")
881** we have to do some additional analysis of expressions. An instance
882** of the following structure holds information about a single subexpression
883** somewhere in the SELECT statement. An array of these structures holds
884** all the information we need to generate code for aggregate
885** expressions.
886**
887** Note that when analyzing a SELECT containing aggregates, both
888** non-aggregate field variables and aggregate functions are stored
889** in the AggExpr array of the Parser structure.
890**
891** The pExpr field points to an expression that is part of either the
892** field list, the GROUP BY clause, the HAVING clause or the ORDER BY
893** clause. The expression will be freed when those clauses are cleaned
894** up. Do not try to delete the expression attached to AggExpr.pExpr.
895**
896** If AggExpr.pExpr==0, that means the expression is "count(*)".
897*/
898struct AggExpr {
899 int isAgg; /* if TRUE contains an aggregate function */
900 Expr *pExpr; /* The expression */
901 FuncDef *pFunc; /* Information about the aggregate function */
902};
903
904/*
905** An SQL parser context. A copy of this structure is passed through
906** the parser and down into all the parser action routine in order to
907** carry around information that is global to the entire parse.
908*/
909struct Parse {
910 sqlite *db; /* The main database structure */
911 int rc; /* Return code from execution */
912 char *zErrMsg; /* An error message */
913 Token sErrToken; /* The token at which the error occurred */
914 Token sFirstToken; /* The first token parsed */
915 Token sLastToken; /* The last token parsed */
916 const char *zTail; /* All SQL text past the last semicolon parsed */
917 Table *pNewTable; /* A table being constructed by CREATE TABLE */
918 Vdbe *pVdbe; /* An engine for executing database bytecode */
919 u8 colNamesSet; /* TRUE after OP_ColumnName has been issued to pVdbe */
920 u8 explain; /* True if the EXPLAIN flag is found on the query */
921 u8 nameClash; /* A permanent table name clashes with temp table name */
922 u8 useAgg; /* If true, extract field values from the aggregator
923 ** while generating expressions. Normally false */
924 int nErr; /* Number of errors seen */
925 int nTab; /* Number of previously allocated VDBE cursors */
926 int nMem; /* Number of memory cells used so far */
927 int nSet; /* Number of sets used so far */
928 int nAgg; /* Number of aggregate expressions */
929 int nVar; /* Number of '?' variables seen in the SQL so far */
930 AggExpr *aAgg; /* An array of aggregate expressions */
931 const char *zAuthContext; /* The 6th parameter to db->xAuth callbacks */
932 Trigger *pNewTrigger; /* Trigger under construct by a CREATE TRIGGER */
933 TriggerStack *trigStack; /* Trigger actions being coded */
934};
935
936/*
937** An instance of the following structure can be declared on a stack and used
938** to save the Parse.zAuthContext value so that it can be restored later.
939*/
940struct AuthContext {
941 const char *zAuthContext; /* Put saved Parse.zAuthContext here */
942 Parse *pParse; /* The Parse structure */
943};
944
945/*
946** Bitfield flags for P2 value in OP_PutIntKey and OP_Delete
947*/
948#define OPFLAG_NCHANGE 1 /* Set to update db->nChange */
949#define OPFLAG_LASTROWID 2 /* Set to update db->lastRowid */
950#define OPFLAG_CSCHANGE 4 /* Set to update db->csChange */
951
952/*
953 * Each trigger present in the database schema is stored as an instance of
954 * struct Trigger.
955 *
956 * Pointers to instances of struct Trigger are stored in two ways.
957 * 1. In the "trigHash" hash table (part of the sqlite* that represents the
958 * database). This allows Trigger structures to be retrieved by name.
959 * 2. All triggers associated with a single table form a linked list, using the
960 * pNext member of struct Trigger. A pointer to the first element of the
961 * linked list is stored as the "pTrigger" member of the associated
962 * struct Table.
963 *
964 * The "step_list" member points to the first element of a linked list
965 * containing the SQL statements specified as the trigger program.
966 */
967struct Trigger {
968 char *name; /* The name of the trigger */
969 char *table; /* The table or view to which the trigger applies */
970 u8 iDb; /* Database containing this trigger */
971 u8 iTabDb; /* Database containing Trigger.table */
972 u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT */
973 u8 tr_tm; /* One of TK_BEFORE, TK_AFTER */
974 Expr *pWhen; /* The WHEN clause of the expresion (may be NULL) */
975 IdList *pColumns; /* If this is an UPDATE OF <column-list> trigger,
976 the <column-list> is stored here */
977 int foreach; /* One of TK_ROW or TK_STATEMENT */
978 Token nameToken; /* Token containing zName. Use during parsing only */
979
980 TriggerStep *step_list; /* Link list of trigger program steps */
981 Trigger *pNext; /* Next trigger associated with the table */
982};
983
984/*
985 * An instance of struct TriggerStep is used to store a single SQL statement
986 * that is a part of a trigger-program.
987 *
988 * Instances of struct TriggerStep are stored in a singly linked list (linked
989 * using the "pNext" member) referenced by the "step_list" member of the
990 * associated struct Trigger instance. The first element of the linked list is
991 * the first step of the trigger-program.
992 *
993 * The "op" member indicates whether this is a "DELETE", "INSERT", "UPDATE" or
994 * "SELECT" statement. The meanings of the other members is determined by the
995 * value of "op" as follows:
996 *
997 * (op == TK_INSERT)
998 * orconf -> stores the ON CONFLICT algorithm
999 * pSelect -> If this is an INSERT INTO ... SELECT ... statement, then
1000 * this stores a pointer to the SELECT statement. Otherwise NULL.
1001 * target -> A token holding the name of the table to insert into.
1002 * pExprList -> If this is an INSERT INTO ... VALUES ... statement, then
1003 * this stores values to be inserted. Otherwise NULL.
1004 * pIdList -> If this is an INSERT INTO ... (<column-names>) VALUES ...
1005 * statement, then this stores the column-names to be
1006 * inserted into.
1007 *
1008 * (op == TK_DELETE)
1009 * target -> A token holding the name of the table to delete from.
1010 * pWhere -> The WHERE clause of the DELETE statement if one is specified.
1011 * Otherwise NULL.
1012 *
1013 * (op == TK_UPDATE)
1014 * target -> A token holding the name of the table to update rows of.
1015 * pWhere -> The WHERE clause of the UPDATE statement if one is specified.
1016 * Otherwise NULL.
1017 * pExprList -> A list of the columns to update and the expressions to update
1018 * them to. See sqliteUpdate() documentation of "pChanges"
1019 * argument.
1020 *
1021 */
1022struct TriggerStep {
1023 int op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT */
1024 int orconf; /* OE_Rollback etc. */
1025 Trigger *pTrig; /* The trigger that this step is a part of */
1026
1027 Select *pSelect; /* Valid for SELECT and sometimes
1028 INSERT steps (when pExprList == 0) */
1029 Token target; /* Valid for DELETE, UPDATE, INSERT steps */
1030 Expr *pWhere; /* Valid for DELETE, UPDATE steps */
1031 ExprList *pExprList; /* Valid for UPDATE statements and sometimes
1032 INSERT steps (when pSelect == 0) */
1033 IdList *pIdList; /* Valid for INSERT statements only */
1034
1035 TriggerStep * pNext; /* Next in the link-list */
1036};
1037
1038/*
1039 * An instance of struct TriggerStack stores information required during code
1040 * generation of a single trigger program. While the trigger program is being
1041 * coded, its associated TriggerStack instance is pointed to by the
1042 * "pTriggerStack" member of the Parse structure.
1043 *
1044 * The pTab member points to the table that triggers are being coded on. The
1045 * newIdx member contains the index of the vdbe cursor that points at the temp
1046 * table that stores the new.* references. If new.* references are not valid
1047 * for the trigger being coded (for example an ON DELETE trigger), then newIdx
1048 * is set to -1. The oldIdx member is analogous to newIdx, for old.* references.
1049 *
1050 * The ON CONFLICT policy to be used for the trigger program steps is stored
1051 * as the orconf member. If this is OE_Default, then the ON CONFLICT clause
1052 * specified for individual triggers steps is used.
1053 *
1054 * struct TriggerStack has a "pNext" member, to allow linked lists to be
1055 * constructed. When coding nested triggers (triggers fired by other triggers)
1056 * each nested trigger stores its parent trigger's TriggerStack as the "pNext"
1057 * pointer. Once the nested trigger has been coded, the pNext value is restored
1058 * to the pTriggerStack member of the Parse stucture and coding of the parent
1059 * trigger continues.
1060 *
1061 * Before a nested trigger is coded, the linked list pointed to by the
1062 * pTriggerStack is scanned to ensure that the trigger is not about to be coded
1063 * recursively. If this condition is detected, the nested trigger is not coded.
1064 */
1065struct TriggerStack {
1066 Table *pTab; /* Table that triggers are currently being coded on */
1067 int newIdx; /* Index of vdbe cursor to "new" temp table */
1068 int oldIdx; /* Index of vdbe cursor to "old" temp table */
1069 int orconf; /* Current orconf policy */
1070 int ignoreJump; /* where to jump to for a RAISE(IGNORE) */
1071 Trigger *pTrigger; /* The trigger currently being coded */
1072 TriggerStack *pNext; /* Next trigger down on the trigger stack */
1073};
1074
1075/*
1076** The following structure contains information used by the sqliteFix...
1077** routines as they walk the parse tree to make database references
1078** explicit.
1079*/
1080typedef struct DbFixer DbFixer;
1081struct DbFixer {
1082 Parse *pParse; /* The parsing context. Error messages written here */
1083 const char *zDb; /* Make sure all objects are contained in this database */
1084 const char *zType; /* Type of the container - used for error messages */
1085 const Token *pName; /* Name of the container - used for error messages */
1086};
1087
1088/*
1089 * This global flag is set for performance testing of triggers. When it is set
1090 * SQLite will perform the overhead of building new and old trigger references
1091 * even when no triggers exist
1092 */
1093extern int always_code_trigger_setup;
1094
1095/*
1096** Internal function prototypes
1097*/
1098int sqliteStrICmp(const char *, const char *);
1099int sqliteStrNICmp(const char *, const char *, int);
1100int sqliteHashNoCase(const char *, int);
1101int sqliteIsNumber(const char*);
1102int sqliteCompare(const char *, const char *);
1103int sqliteSortCompare(const char *, const char *);
1104void sqliteRealToSortable(double r, char *);
1105#ifdef MEMORY_DEBUG
1106 void *sqliteMalloc_(int,int,char*,int);
1107 void sqliteFree_(void*,char*,int);
1108 void *sqliteRealloc_(void*,int,char*,int);
1109 char *sqliteStrDup_(const char*,char*,int);
1110 char *sqliteStrNDup_(const char*, int,char*,int);
1111 void sqliteCheckMemory(void*,int);
1112#else
1113 void *sqliteMalloc(int);
1114 void *sqliteMallocRaw(int);
1115 void sqliteFree(void*);
1116 void *sqliteRealloc(void*,int);
1117 char *sqliteStrDup(const char*);
1118 char *sqliteStrNDup(const char*, int);
1119# define sqliteCheckMemory(a,b)
1120#endif
1121char *sqliteMPrintf(const char*, ...);
1122char *sqliteVMPrintf(const char*, va_list);
1123void sqliteSetString(char **, ...);
1124void sqliteSetNString(char **, ...);
1125void sqliteErrorMsg(Parse*, const char*, ...);
1126void sqliteDequote(char*);
1127int sqliteKeywordCode(const char*, int);
1128int sqliteRunParser(Parse*, const char*, char **);
1129void sqliteExec(Parse*);
1130Expr *sqliteExpr(int, Expr*, Expr*, Token*);
1131void sqliteExprSpan(Expr*,Token*,Token*);
1132Expr *sqliteExprFunction(ExprList*, Token*);
1133void sqliteExprDelete(Expr*);
1134ExprList *sqliteExprListAppend(ExprList*,Expr*,Token*);
1135void sqliteExprListDelete(ExprList*);
1136int sqliteInit(sqlite*, char**);
1137void sqlitePragma(Parse*,Token*,Token*,int);
1138void sqliteResetInternalSchema(sqlite*, int);
1139void sqliteBeginParse(Parse*,int);
1140void sqliteRollbackInternalChanges(sqlite*);
1141void sqliteCommitInternalChanges(sqlite*);
1142Table *sqliteResultSetOfSelect(Parse*,char*,Select*);
1143void sqliteOpenMasterTable(Vdbe *v, int);
1144void sqliteStartTable(Parse*,Token*,Token*,int,int);
1145void sqliteAddColumn(Parse*,Token*);
1146void sqliteAddNotNull(Parse*, int);
1147void sqliteAddPrimaryKey(Parse*, IdList*, int);
1148void sqliteAddColumnType(Parse*,Token*,Token*);
1149void sqliteAddDefaultValue(Parse*,Token*,int);
1150int sqliteCollateType(const char*, int);
1151void sqliteAddCollateType(Parse*, int);
1152void sqliteEndTable(Parse*,Token*,Select*);
1153void sqliteCreateView(Parse*,Token*,Token*,Select*,int);
1154int sqliteViewGetColumnNames(Parse*,Table*);
1155void sqliteDropTable(Parse*, Token*, int);
1156void sqliteDeleteTable(sqlite*, Table*);
1157void sqliteInsert(Parse*, SrcList*, ExprList*, Select*, IdList*, int);
1158IdList *sqliteIdListAppend(IdList*, Token*);
1159int sqliteIdListIndex(IdList*,const char*);
1160SrcList *sqliteSrcListAppend(SrcList*, Token*, Token*);
1161void sqliteSrcListAddAlias(SrcList*, Token*);
1162void sqliteSrcListAssignCursors(Parse*, SrcList*);
1163void sqliteIdListDelete(IdList*);
1164void sqliteSrcListDelete(SrcList*);
1165void sqliteCreateIndex(Parse*,Token*,SrcList*,IdList*,int,Token*,Token*);
1166void sqliteDropIndex(Parse*, SrcList*);
1167void sqliteAddKeyType(Vdbe*, ExprList*);
1168void sqliteAddIdxKeyType(Vdbe*, Index*);
1169int sqliteSelect(Parse*, Select*, int, int, Select*, int, int*);
1170Select *sqliteSelectNew(ExprList*,SrcList*,Expr*,ExprList*,Expr*,ExprList*,
1171 int,int,int);
1172void sqliteSelectDelete(Select*);
1173void sqliteSelectUnbind(Select*);
1174Table *sqliteSrcListLookup(Parse*, SrcList*);
1175int sqliteIsReadOnly(Parse*, Table*, int);
1176void sqliteDeleteFrom(Parse*, SrcList*, Expr*);
1177void sqliteUpdate(Parse*, SrcList*, ExprList*, Expr*, int);
1178WhereInfo *sqliteWhereBegin(Parse*, SrcList*, Expr*, int, ExprList**);
1179void sqliteWhereEnd(WhereInfo*);
1180void sqliteExprCode(Parse*, Expr*);
1181int sqliteExprCodeExprList(Parse*, ExprList*, int);
1182void sqliteExprIfTrue(Parse*, Expr*, int, int);
1183void sqliteExprIfFalse(Parse*, Expr*, int, int);
1184Table *sqliteFindTable(sqlite*,const char*, const char*);
1185Table *sqliteLocateTable(Parse*,const char*, const char*);
1186Index *sqliteFindIndex(sqlite*,const char*, const char*);
1187void sqliteUnlinkAndDeleteIndex(sqlite*,Index*);
1188void sqliteCopy(Parse*, SrcList*, Token*, Token*, int);
1189void sqliteVacuum(Parse*, Token*);
1190int sqliteRunVacuum(char**, sqlite*);
1191int sqliteGlobCompare(const unsigned char*,const unsigned char*);
1192int sqliteLikeCompare(const unsigned char*,const unsigned char*);
1193char *sqliteTableNameFromToken(Token*);
1194int sqliteExprCheck(Parse*, Expr*, int, int*);
1195int sqliteExprType(Expr*);
1196int sqliteExprCompare(Expr*, Expr*);
1197int sqliteFuncId(Token*);
1198int sqliteExprResolveIds(Parse*, SrcList*, ExprList*, Expr*);
1199int sqliteExprAnalyzeAggregates(Parse*, Expr*);
1200Vdbe *sqliteGetVdbe(Parse*);
1201void sqliteRandomness(int, void*);
1202void sqliteRollbackAll(sqlite*);
1203void sqliteCodeVerifySchema(Parse*, int);
1204void sqliteBeginTransaction(Parse*, int);
1205void sqliteCommitTransaction(Parse*);
1206void sqliteRollbackTransaction(Parse*);
1207int sqliteExprIsConstant(Expr*);
1208int sqliteExprIsInteger(Expr*, int*);
1209int sqliteIsRowid(const char*);
1210void sqliteGenerateRowDelete(sqlite*, Vdbe*, Table*, int, int);
1211void sqliteGenerateRowIndexDelete(sqlite*, Vdbe*, Table*, int, char*);
1212void sqliteGenerateConstraintChecks(Parse*,Table*,int,char*,int,int,int,int);
1213void sqliteCompleteInsertion(Parse*, Table*, int, char*, int, int, int);
1214int sqliteOpenTableAndIndices(Parse*, Table*, int);
1215void sqliteBeginWriteOperation(Parse*, int, int);
1216void sqliteEndWriteOperation(Parse*);
1217Expr *sqliteExprDup(Expr*);
1218void sqliteTokenCopy(Token*, Token*);
1219ExprList *sqliteExprListDup(ExprList*);
1220SrcList *sqliteSrcListDup(SrcList*);
1221IdList *sqliteIdListDup(IdList*);
1222Select *sqliteSelectDup(Select*);
1223FuncDef *sqliteFindFunction(sqlite*,const char*,int,int,int);
1224void sqliteRegisterBuiltinFunctions(sqlite*);
1225void sqliteRegisterDateTimeFunctions(sqlite*);
1226int sqliteSafetyOn(sqlite*);
1227int sqliteSafetyOff(sqlite*);
1228int sqliteSafetyCheck(sqlite*);
1229void sqliteChangeCookie(sqlite*, Vdbe*);
1230void sqliteBeginTrigger(Parse*, Token*,int,int,IdList*,SrcList*,int,Expr*,int);
1231void sqliteFinishTrigger(Parse*, TriggerStep*, Token*);
1232void sqliteDropTrigger(Parse*, SrcList*);
1233void sqliteDropTriggerPtr(Parse*, Trigger*, int);
1234int sqliteTriggersExist(Parse* , Trigger* , int , int , int, ExprList*);
1235int sqliteCodeRowTrigger(Parse*, int, ExprList*, int, Table *, int, int,
1236 int, int);
1237void sqliteViewTriggers(Parse*, Table*, Expr*, int, ExprList*);
1238void sqliteDeleteTriggerStep(TriggerStep*);
1239TriggerStep *sqliteTriggerSelectStep(Select*);
1240TriggerStep *sqliteTriggerInsertStep(Token*, IdList*, ExprList*, Select*, int);
1241TriggerStep *sqliteTriggerUpdateStep(Token*, ExprList*, Expr*, int);
1242TriggerStep *sqliteTriggerDeleteStep(Token*, Expr*);
1243void sqliteDeleteTrigger(Trigger*);
1244int sqliteJoinType(Parse*, Token*, Token*, Token*);
1245void sqliteCreateForeignKey(Parse*, IdList*, Token*, IdList*, int);
1246void sqliteDeferForeignKey(Parse*, int);
1247#ifndef SQLITE_OMIT_AUTHORIZATION
1248 void sqliteAuthRead(Parse*,Expr*,SrcList*);
1249 int sqliteAuthCheck(Parse*,int, const char*, const char*, const char*);
1250 void sqliteAuthContextPush(Parse*, AuthContext*, const char*);
1251 void sqliteAuthContextPop(AuthContext*);
1252#else
1253# define sqliteAuthRead(a,b,c)
1254# define sqliteAuthCheck(a,b,c,d,e) SQLITE_OK
1255# define sqliteAuthContextPush(a,b,c)
1256# define sqliteAuthContextPop(a) ((void)(a))
1257#endif
1258void sqliteAttach(Parse*, Token*, Token*, Token*);
1259void sqliteDetach(Parse*, Token*);
1260int sqliteBtreeFactory(const sqlite *db, const char *zFilename,
1261 int mode, int nPg, Btree **ppBtree);
1262int sqliteFixInit(DbFixer*, Parse*, int, const char*, const Token*);
1263int sqliteFixSrcList(DbFixer*, SrcList*);
1264int sqliteFixSelect(DbFixer*, Select*);
1265int sqliteFixExpr(DbFixer*, Expr*);
1266int sqliteFixExprList(DbFixer*, ExprList*);
1267int sqliteFixTriggerStep(DbFixer*, TriggerStep*);
1268double sqliteAtoF(const char *z, const char **);
1269char *sqlite_snprintf(int,char*,const char*,...);
1270int sqliteFitsIn32Bits(const char *);
Note: See TracBrowser for help on using the repository browser.