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