# # # patch "ChangeLog" # from [063b28c6d8f218ce0af9d5a563fa45926275a619] # to [ce11cd3ab433ce9fe8c1645321267dc93865514e] # # patch "sqlite/btree.c" # from [6837dcc4da8677e695a49fcc4505418ff1e0fc54] # to [51aef6a4b18df165b83b332befd1447c011b4389] # # patch "sqlite/btree.h" # from [061c50e37de7f50b58528e352d400cf33ead7418] # to [066444ee25bd6e6accb997bfd2cf5ace14dbcd00] # # patch "sqlite/loadext.c" # from [d7f0903ba15d7a713fc42943e72178cae8ad922b] # to [bbfdbf452c71b6f2723375478a365788498ec3cd] # # patch "sqlite/os_win.c" # from [8999403beb4b442393b59723b3d54da0ee7d343b] # to [8736cf3a49fd651a6538857480f302807d57814c] # # patch "sqlite/parse.c" # from [ce2f4b581ae27ae7b5469855cb3497935f9a3984] # to [53d5ca8f9ac031afc639aab84b2a1178423b3992] # # patch "sqlite/pragma.c" # from [fd4df6cf0857dd78a7cb5be5f9805419b53ae7a0] # to [5091300911670ddaa552bfa12c45cbca1bb7e7d6] # # patch "sqlite/printf.c" # from [b179b6ed12f793e028dd169e2e2e2b2a37eedc63] # to [aade23a789d7cc88b397ec0d33a0a01a33a7a9c1] # # patch "sqlite/select.c" # from [52f09127b53697b1a95835a9b0db9309cca8079f] # to [628f49827d5a94ed9b6246efb8dc9f5c24e413f1] # # patch "sqlite/sqlite3.h" # from [bda6b4bcb2d58bd9485bae930c5e692fe9bf4098] # to [f6d447ccc3b195fcf1048058cfb5f6632fd5d577] # # patch "sqlite/sqliteInt.h" # from [90dad3c0ba7a5151c48361748ccdada9ff2eff78] # to [f15bb7b1bcf750a3202bfae85d6d3beb4e5f64e1] # # patch "sqlite/tokenize.c" # from [dfdff21768fbedd40e8d3ca84fc5d0d7af2b46dd] # to [bb1732ef2b6fc2143f93ff28a45d3dcb04c1d396] # # patch "sqlite/vdbe.c" # from [074cda811466f8f752c2dd71b1dcaea001f4be64] # to [b5a2ad31c177b6c2d5fedb2ed180b9b57058398b] # # patch "sqlite/vdbeInt.h" # from [1ca07f2d7446c90230346aed7fbf990c032460bc] # to [13ba07121cf534d5b80130d2f5eb0a4937a36bba] # # patch "sqlite/where.c" # from [f55d4459a122457a135cf9ec859bf28777d9156f] # to [23dc1c7535c96770d214762ed0bc3c655de5061c] # ============================================================ --- ChangeLog 063b28c6d8f218ce0af9d5a563fa45926275a619 +++ ChangeLog ce11cd3ab433ce9fe8c1645321267dc93865514e @@ -1,3 +1,7 @@ +2007-02-01 Matthew Gregan + + * sqlite/*: Import SQLite 3.3.12. + 2007-01-30 Nathaniel Smith * po/es.po: Fix a format string that was breaking the build. ============================================================ --- sqlite/btree.c 6837dcc4da8677e695a49fcc4505418ff1e0fc54 +++ sqlite/btree.c 51aef6a4b18df165b83b332befd1447c011b4389 @@ -9,7 +9,7 @@ ** May you share freely, never taking more than you give. ** ************************************************************************* -** $Id: btree.c,v 1.333 2007/01/05 02:00:47 drh Exp $ +** $Id: btree.c,v 1.334 2007/01/27 02:24:55 drh Exp $ ** ** This file implements a external (disk-based) database using BTrees. ** For a detailed discussion of BTrees, refer to @@ -5958,10 +5958,12 @@ struct IntegrityCk { typedef struct IntegrityCk IntegrityCk; struct IntegrityCk { BtShared *pBt; /* The tree being checked out */ - Pager *pPager; /* The associated pager. Also accessible by pBt->pPager */ - int nPage; /* Number of pages in the database */ - int *anRef; /* Number of times each page is referenced */ - char *zErrMsg; /* An error message. NULL of no errors seen. */ + Pager *pPager; /* The associated pager. Also accessible by pBt->pPager */ + int nPage; /* Number of pages in the database */ + int *anRef; /* Number of times each page is referenced */ + int mxErr; /* Stop accumulating errors when this reaches zero */ + char *zErrMsg; /* An error message. NULL if no errors seen. */ + int nErr; /* Number of messages written to zErrMsg so far */ }; #ifndef SQLITE_OMIT_INTEGRITY_CHECK @@ -5976,6 +5978,9 @@ static void checkAppendMsg( ){ va_list ap; char *zMsg2; + if( !pCheck->mxErr ) return; + pCheck->mxErr--; + pCheck->nErr++; va_start(ap, zFormat); zMsg2 = sqlite3VMPrintf(zFormat, ap); va_end(ap); @@ -6059,7 +6064,7 @@ static void checkList( int i; int expected = N; int iFirst = iPage; - while( N-- > 0 ){ + while( N-- > 0 && pCheck->mxErr ){ unsigned char *pOvfl; if( iPage<1 ){ checkAppendMsg(pCheck, zContext, @@ -6171,7 +6176,7 @@ static int checkTreePage( /* Check out all the cells. */ depth = 0; - for(i=0; inCell; i++){ + for(i=0; inCell && pCheck->mxErr; i++){ u8 *pCell; int sz; CellInfo info; @@ -6286,7 +6291,13 @@ static int checkTreePage( ** and a pointer to that error message is returned. The calling function ** is responsible for freeing the error message when it is done. */ -char *sqlite3BtreeIntegrityCheck(Btree *p, int *aRoot, int nRoot){ +char *sqlite3BtreeIntegrityCheck( + Btree *p, /* The btree to be checked */ + int *aRoot, /* An array of root pages numbers for individual trees */ + int nRoot, /* Number of entries in aRoot[] */ + int mxErr, /* Stop reporting errors after this many */ + int *pnErr /* Write number of errors seen to this variable */ +){ int i; int nRef; IntegrityCk sCheck; @@ -6299,6 +6310,9 @@ char *sqlite3BtreeIntegrityCheck(Btree * sCheck.pBt = pBt; sCheck.pPager = pBt->pPager; sCheck.nPage = sqlite3pager_pagecount(sCheck.pPager); + sCheck.mxErr = mxErr; + sCheck.nErr = 0; + *pnErr = 0; if( sCheck.nPage==0 ){ unlockBtreeIfUnused(pBt); return 0; @@ -6306,6 +6320,7 @@ char *sqlite3BtreeIntegrityCheck(Btree * sCheck.anRef = sqliteMallocRaw( (sCheck.nPage+1)*sizeof(sCheck.anRef[0]) ); if( !sCheck.anRef ){ unlockBtreeIfUnused(pBt); + *pnErr = 1; return sqlite3MPrintf("Unable to malloc %d bytes", (sCheck.nPage+1)*sizeof(sCheck.anRef[0])); } @@ -6323,7 +6338,7 @@ char *sqlite3BtreeIntegrityCheck(Btree * /* Check all the tables. */ - for(i=0; iautoVacuum && aRoot[i]>1 ){ @@ -6335,7 +6350,7 @@ char *sqlite3BtreeIntegrityCheck(Btree * /* Make sure every page in the file is referenced */ - for(i=1; i<=sCheck.nPage; i++){ + for(i=1; i<=sCheck.nPage && sCheck.mxErr; i++){ #ifdef SQLITE_OMIT_AUTOVACUUM if( sCheck.anRef[i]==0 ){ checkAppendMsg(&sCheck, 0, "Page %d is never used", i); @@ -6368,6 +6383,7 @@ char *sqlite3BtreeIntegrityCheck(Btree * /* Clean up and report errors. */ sqliteFree(sCheck.anRef); + *pnErr = sCheck.nErr; return sCheck.zErrMsg; } #endif /* SQLITE_OMIT_INTEGRITY_CHECK */ ============================================================ --- sqlite/btree.h 061c50e37de7f50b58528e352d400cf33ead7418 +++ sqlite/btree.h 066444ee25bd6e6accb997bfd2cf5ace14dbcd00 @@ -13,7 +13,7 @@ ** subsystem. See comments in the source code for a detailed description ** of what each interface routine does. ** -** @(#) $Id: btree.h,v 1.71 2006/06/27 16:34:57 danielk1977 Exp $ +** @(#) $Id: btree.h,v 1.72 2007/01/27 02:24:55 drh Exp $ */ #ifndef _BTREE_H_ #define _BTREE_H_ @@ -131,7 +131,7 @@ int sqlite3BtreeData(BtCursor*, u32 offs int sqlite3BtreeDataSize(BtCursor*, u32 *pSize); int sqlite3BtreeData(BtCursor*, u32 offset, u32 amt, void*); -char *sqlite3BtreeIntegrityCheck(Btree*, int *aRoot, int nRoot); +char *sqlite3BtreeIntegrityCheck(Btree*, int *aRoot, int nRoot, int, int*); struct Pager *sqlite3BtreePager(Btree*); ============================================================ --- sqlite/loadext.c d7f0903ba15d7a713fc42943e72178cae8ad922b +++ sqlite/loadext.c bbfdbf452c71b6f2723375478a365788498ec3cd @@ -75,6 +75,20 @@ # define sqlite3_declare_vtab 0 #endif +#ifdef SQLITE_OMIT_SHARED_CACHE +# define sqlite3_enable_shared_cache 0 +#endif + +#ifdef SQLITE_OMIT_TRACE +# define sqlite3_profile 0 +# define sqlite3_trace 0 +#endif + +#ifdef SQLITE_OMIT_GET_TABLE +# define sqlite3_free_table 0 +# define sqlite3_get_table 0 +#endif + /* ** The following structure contains pointers to all SQLite API routines. ** A pointer to this structure is passed into extensions when they are @@ -154,7 +168,7 @@ const sqlite3_api_routines sqlite3_apis sqlite3_get_autocommit, sqlite3_get_auxdata, sqlite3_get_table, - sqlite3_global_recover, + 0, /* Was sqlite3_global_recover(), but that function is deprecated */ sqlite3_interrupt, sqlite3_last_insert_rowid, sqlite3_libversion, ============================================================ --- sqlite/os_win.c 8999403beb4b442393b59723b3d54da0ee7d343b +++ sqlite/os_win.c 8736cf3a49fd651a6538857480f302807d57814c @@ -40,6 +40,7 @@ */ #if defined(_WIN32_WCE) # define OS_WINCE 1 +# define AreFileApisANSI() 1 #else # define OS_WINCE 0 #endif ============================================================ --- sqlite/parse.c ce2f4b581ae27ae7b5469855cb3497935f9a3984 +++ sqlite/parse.c 53d5ca8f9ac031afc639aab84b2a1178423b3992 @@ -93,36 +93,36 @@ struct AttachKey { int type; Token key; ** defined, then do no error processing. */ #define YYCODETYPE unsigned char -#define YYNOCODE 248 +#define YYNOCODE 249 #define YYACTIONTYPE unsigned short int #define YYWILDCARD 60 #define sqlite3ParserTOKENTYPE Token typedef union { sqlite3ParserTOKENTYPE yy0; - int yy46; - struct LikeOp yy72; - Expr* yy172; - ExprList* yy174; - Select* yy219; - struct LimitVal yy234; - TriggerStep* yy243; - struct TrigEvent yy370; - SrcList* yy373; - Expr * yy386; - struct {int value; int mask;} yy405; - Token yy410; - IdList* yy432; - int yy495; + Select* yy43; + TriggerStep* yy75; + struct LimitVal yy84; + struct LikeOp yy86; + Expr * yy158; + Token yy178; + struct {int value; int mask;} yy207; + ExprList* yy242; + int yy316; + IdList* yy352; + struct TrigEvent yy354; + SrcList* yy419; + Expr* yy450; + int yy497; } YYMINORTYPE; #define YYSTACKDEPTH 100 #define sqlite3ParserARG_SDECL Parse *pParse; #define sqlite3ParserARG_PDECL ,Parse *pParse #define sqlite3ParserARG_FETCH Parse *pParse = yypParser->pParse #define sqlite3ParserARG_STORE yypParser->pParse = pParse -#define YYNSTATE 586 -#define YYNRULE 310 +#define YYNSTATE 587 +#define YYNRULE 311 #define YYERRORSYMBOL 139 -#define YYERRSYMDT yy495 +#define YYERRSYMDT yy497 #define YYFALLBACK 1 #define YY_NO_ACTION (YYNSTATE+YYNRULE+2) #define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) @@ -176,409 +176,411 @@ static const YYACTIONTYPE yy_action[] = ** yy_default[] Default action for each state. */ static const YYACTIONTYPE yy_action[] = { - /* 0 */ 290, 67, 300, 69, 150, 168, 205, 420, 61, 61, - /* 10 */ 61, 61, 66, 63, 63, 63, 63, 64, 64, 65, - /* 20 */ 65, 65, 66, 430, 322, 164, 433, 439, 68, 63, - /* 30 */ 63, 63, 63, 64, 64, 65, 65, 65, 66, 64, - /* 40 */ 64, 65, 65, 65, 66, 60, 58, 296, 443, 444, - /* 50 */ 440, 440, 62, 62, 61, 61, 61, 61, 487, 63, - /* 60 */ 63, 63, 63, 64, 64, 65, 65, 65, 66, 290, - /* 70 */ 318, 67, 420, 69, 150, 79, 160, 114, 240, 341, - /* 80 */ 245, 342, 172, 249, 897, 120, 585, 190, 522, 2, - /* 90 */ 250, 571, 411, 35, 223, 433, 439, 532, 20, 57, - /* 100 */ 388, 385, 63, 63, 63, 63, 64, 64, 65, 65, - /* 110 */ 65, 66, 290, 489, 60, 58, 296, 443, 444, 440, - /* 120 */ 440, 62, 62, 61, 61, 61, 61, 393, 63, 63, - /* 130 */ 63, 63, 64, 64, 65, 65, 65, 66, 433, 439, - /* 140 */ 91, 314, 389, 473, 230, 529, 504, 204, 168, 55, - /* 150 */ 420, 197, 528, 407, 196, 428, 208, 60, 58, 296, - /* 160 */ 443, 444, 440, 440, 62, 62, 61, 61, 61, 61, - /* 170 */ 170, 63, 63, 63, 63, 64, 64, 65, 65, 65, - /* 180 */ 66, 290, 479, 428, 208, 412, 109, 81, 412, 432, - /* 190 */ 406, 284, 394, 395, 430, 521, 164, 318, 517, 67, - /* 200 */ 530, 69, 150, 567, 412, 492, 493, 433, 439, 145, - /* 210 */ 146, 583, 888, 376, 888, 420, 171, 156, 488, 411, - /* 220 */ 40, 337, 415, 19, 290, 140, 60, 58, 296, 443, - /* 230 */ 444, 440, 440, 62, 62, 61, 61, 61, 61, 384, - /* 240 */ 63, 63, 63, 63, 64, 64, 65, 65, 65, 66, - /* 250 */ 433, 439, 580, 546, 493, 417, 417, 417, 549, 332, - /* 260 */ 234, 67, 460, 69, 150, 583, 887, 290, 887, 60, - /* 270 */ 58, 296, 443, 444, 440, 440, 62, 62, 61, 61, - /* 280 */ 61, 61, 318, 63, 63, 63, 63, 64, 64, 65, - /* 290 */ 65, 65, 66, 433, 439, 177, 548, 393, 343, 346, - /* 300 */ 347, 515, 490, 271, 411, 40, 580, 473, 432, 224, - /* 310 */ 348, 408, 60, 58, 296, 443, 444, 440, 440, 62, - /* 320 */ 62, 61, 61, 61, 61, 523, 63, 63, 63, 63, - /* 330 */ 64, 64, 65, 65, 65, 66, 303, 488, 300, 290, - /* 340 */ 75, 415, 274, 483, 272, 232, 236, 370, 267, 266, - /* 350 */ 318, 65, 65, 65, 66, 173, 393, 148, 205, 434, - /* 360 */ 435, 231, 394, 395, 177, 433, 439, 343, 346, 347, - /* 370 */ 293, 515, 411, 34, 417, 417, 417, 378, 477, 348, - /* 380 */ 248, 437, 438, 78, 60, 58, 296, 443, 444, 440, - /* 390 */ 440, 62, 62, 61, 61, 61, 61, 205, 63, 63, - /* 400 */ 63, 63, 64, 64, 65, 65, 65, 66, 290, 436, - /* 410 */ 377, 292, 486, 114, 240, 341, 245, 342, 172, 249, - /* 420 */ 318, 394, 395, 273, 318, 177, 250, 456, 343, 346, - /* 430 */ 347, 329, 151, 566, 433, 439, 295, 423, 424, 298, - /* 440 */ 348, 387, 411, 34, 2, 360, 411, 34, 469, 363, - /* 450 */ 247, 568, 569, 60, 58, 296, 443, 444, 440, 440, - /* 460 */ 62, 62, 61, 61, 61, 61, 412, 63, 63, 63, - /* 470 */ 63, 64, 64, 65, 65, 65, 66, 290, 522, 155, - /* 480 */ 515, 503, 21, 452, 318, 299, 420, 404, 20, 297, - /* 490 */ 321, 423, 424, 482, 318, 453, 318, 457, 1, 207, - /* 500 */ 335, 457, 393, 433, 439, 9, 411, 34, 454, 393, - /* 510 */ 494, 147, 531, 207, 543, 216, 411, 48, 411, 48, - /* 520 */ 495, 393, 60, 58, 296, 443, 444, 440, 440, 62, - /* 530 */ 62, 61, 61, 61, 61, 351, 63, 63, 63, 63, - /* 540 */ 64, 64, 65, 65, 65, 66, 290, 318, 447, 334, - /* 550 */ 253, 420, 371, 207, 452, 149, 448, 579, 289, 248, - /* 560 */ 393, 457, 173, 309, 235, 310, 453, 394, 395, 411, - /* 570 */ 27, 420, 433, 439, 394, 395, 405, 520, 367, 454, - /* 580 */ 324, 328, 446, 446, 509, 517, 394, 395, 473, 412, - /* 590 */ 545, 60, 58, 296, 443, 444, 440, 440, 62, 62, - /* 600 */ 61, 61, 61, 61, 510, 63, 63, 63, 63, 64, - /* 610 */ 64, 65, 65, 65, 66, 290, 192, 338, 292, 324, - /* 620 */ 90, 446, 446, 250, 522, 394, 395, 238, 319, 393, - /* 630 */ 822, 477, 318, 576, 20, 324, 420, 446, 446, 411, - /* 640 */ 3, 433, 439, 324, 217, 446, 446, 586, 388, 385, - /* 650 */ 412, 515, 470, 515, 411, 28, 515, 302, 290, 581, - /* 660 */ 60, 58, 296, 443, 444, 440, 440, 62, 62, 61, - /* 670 */ 61, 61, 61, 219, 63, 63, 63, 63, 64, 64, - /* 680 */ 65, 65, 65, 66, 433, 439, 304, 481, 305, 167, - /* 690 */ 156, 307, 358, 392, 394, 395, 396, 397, 398, 582, - /* 700 */ 188, 290, 339, 60, 58, 296, 443, 444, 440, 440, - /* 710 */ 62, 62, 61, 61, 61, 61, 318, 63, 63, 63, - /* 720 */ 63, 64, 64, 65, 65, 65, 66, 433, 439, 410, - /* 730 */ 248, 261, 248, 409, 412, 248, 367, 255, 411, 23, - /* 740 */ 539, 357, 539, 261, 290, 261, 60, 70, 296, 443, - /* 750 */ 444, 440, 440, 62, 62, 61, 61, 61, 61, 368, - /* 760 */ 63, 63, 63, 63, 64, 64, 65, 65, 65, 66, - /* 770 */ 433, 439, 381, 541, 115, 261, 259, 540, 257, 261, - /* 780 */ 364, 174, 175, 176, 262, 261, 556, 290, 5, 359, - /* 790 */ 58, 296, 443, 444, 440, 440, 62, 62, 61, 61, - /* 800 */ 61, 61, 218, 63, 63, 63, 63, 64, 64, 65, - /* 810 */ 65, 65, 66, 433, 439, 477, 558, 205, 466, 468, - /* 820 */ 559, 206, 383, 261, 261, 261, 560, 152, 54, 467, - /* 830 */ 369, 312, 119, 124, 296, 443, 444, 440, 440, 62, - /* 840 */ 62, 61, 61, 61, 61, 416, 63, 63, 63, 63, - /* 850 */ 64, 64, 65, 65, 65, 66, 71, 325, 318, 4, - /* 860 */ 318, 412, 318, 294, 275, 375, 277, 318, 74, 318, - /* 870 */ 76, 320, 71, 325, 318, 4, 308, 498, 499, 294, - /* 880 */ 411, 32, 411, 53, 411, 24, 154, 320, 327, 411, - /* 890 */ 51, 411, 96, 161, 410, 318, 411, 93, 409, 432, - /* 900 */ 318, 421, 318, 22, 327, 426, 426, 179, 318, 501, - /* 910 */ 143, 318, 468, 508, 507, 432, 318, 411, 98, 73, - /* 920 */ 72, 182, 411, 99, 411, 110, 323, 71, 316, 317, - /* 930 */ 411, 111, 415, 411, 16, 73, 72, 480, 411, 97, - /* 940 */ 318, 412, 330, 71, 316, 317, 71, 325, 415, 4, - /* 950 */ 318, 205, 318, 294, 318, 412, 455, 318, 12, 537, - /* 960 */ 538, 320, 411, 33, 462, 417, 417, 417, 418, 419, - /* 970 */ 11, 463, 411, 94, 411, 52, 411, 112, 327, 411, - /* 980 */ 113, 417, 417, 417, 418, 419, 11, 620, 241, 432, - /* 990 */ 158, 475, 318, 169, 429, 220, 221, 222, 101, 458, - /* 1000 */ 242, 318, 441, 318, 484, 318, 12, 318, 472, 73, - /* 1010 */ 72, 202, 476, 279, 411, 25, 246, 71, 316, 317, - /* 1020 */ 280, 318, 415, 411, 36, 411, 37, 411, 26, 411, - /* 1030 */ 38, 318, 199, 505, 548, 513, 252, 124, 124, 198, - /* 1040 */ 318, 506, 201, 411, 39, 318, 511, 350, 318, 124, - /* 1050 */ 544, 318, 124, 411, 41, 417, 417, 417, 418, 419, - /* 1060 */ 11, 512, 411, 42, 524, 254, 318, 411, 43, 200, - /* 1070 */ 411, 29, 318, 411, 30, 552, 318, 169, 553, 318, - /* 1080 */ 88, 318, 256, 318, 185, 374, 276, 266, 411, 44, - /* 1090 */ 258, 291, 318, 260, 411, 45, 205, 265, 411, 46, - /* 1100 */ 318, 411, 47, 411, 31, 411, 10, 563, 578, 88, - /* 1110 */ 288, 355, 362, 365, 411, 49, 366, 268, 269, 18, - /* 1120 */ 380, 270, 411, 50, 555, 565, 278, 379, 281, 282, - /* 1130 */ 575, 142, 225, 402, 425, 427, 326, 504, 551, 461, - /* 1140 */ 465, 562, 159, 391, 399, 243, 400, 514, 516, 401, - /* 1150 */ 8, 413, 226, 315, 81, 333, 227, 80, 331, 228, - /* 1160 */ 345, 229, 77, 56, 209, 166, 459, 233, 210, 407, - /* 1170 */ 464, 121, 82, 336, 340, 491, 496, 301, 244, 501, - /* 1180 */ 497, 500, 502, 102, 518, 519, 414, 285, 352, 525, - /* 1190 */ 180, 526, 527, 533, 237, 181, 474, 239, 354, 478, - /* 1200 */ 211, 286, 184, 214, 535, 183, 215, 356, 85, 361, - /* 1210 */ 117, 186, 128, 547, 189, 372, 554, 373, 311, 561, - /* 1220 */ 572, 129, 130, 131, 138, 573, 95, 132, 577, 263, - /* 1230 */ 137, 134, 574, 390, 403, 621, 536, 213, 622, 100, - /* 1240 */ 162, 59, 163, 422, 431, 442, 445, 139, 89, 449, - /* 1250 */ 153, 165, 6, 450, 451, 122, 471, 13, 7, 92, - /* 1260 */ 123, 12, 485, 157, 212, 108, 83, 103, 104, 116, - /* 1270 */ 344, 251, 84, 105, 349, 17, 178, 353, 242, 534, - /* 1280 */ 141, 125, 306, 187, 106, 169, 126, 287, 542, 264, - /* 1290 */ 118, 550, 127, 191, 313, 14, 86, 193, 194, 135, - /* 1300 */ 557, 195, 133, 564, 136, 15, 107, 570, 382, 283, - /* 1310 */ 144, 203, 386, 87, 584, + /* 0 */ 290, 68, 300, 70, 151, 169, 570, 420, 62, 62, + /* 10 */ 62, 62, 205, 64, 64, 64, 64, 65, 65, 66, + /* 20 */ 66, 66, 67, 477, 569, 568, 433, 439, 69, 64, + /* 30 */ 64, 64, 64, 65, 65, 66, 66, 66, 67, 65, + /* 40 */ 65, 66, 66, 66, 67, 61, 59, 296, 443, 444, + /* 50 */ 440, 440, 63, 63, 62, 62, 62, 62, 582, 64, + /* 60 */ 64, 64, 64, 65, 65, 66, 66, 66, 67, 290, + /* 70 */ 570, 387, 420, 149, 2, 80, 161, 115, 240, 341, + /* 80 */ 245, 342, 173, 249, 298, 1, 566, 207, 569, 393, + /* 90 */ 250, 522, 899, 121, 586, 433, 439, 2, 583, 58, + /* 100 */ 577, 21, 64, 64, 64, 64, 65, 65, 66, 66, + /* 110 */ 66, 67, 290, 473, 61, 59, 296, 443, 444, 440, + /* 120 */ 440, 63, 63, 62, 62, 62, 62, 393, 64, 64, + /* 130 */ 64, 64, 65, 65, 66, 66, 66, 67, 433, 439, + /* 140 */ 92, 178, 67, 473, 343, 346, 347, 388, 385, 56, + /* 150 */ 379, 207, 236, 407, 394, 395, 348, 61, 59, 296, + /* 160 */ 443, 444, 440, 440, 63, 63, 62, 62, 62, 62, + /* 170 */ 171, 64, 64, 64, 64, 65, 65, 66, 66, 66, + /* 180 */ 67, 290, 479, 428, 208, 522, 110, 490, 452, 432, + /* 190 */ 406, 223, 394, 395, 532, 21, 408, 318, 517, 68, + /* 200 */ 453, 70, 151, 567, 412, 150, 487, 433, 439, 146, + /* 210 */ 147, 584, 890, 454, 890, 494, 172, 157, 488, 411, + /* 220 */ 28, 337, 415, 261, 290, 495, 61, 59, 296, 443, + /* 230 */ 444, 440, 440, 63, 63, 62, 62, 62, 62, 412, + /* 240 */ 64, 64, 64, 64, 65, 65, 66, 66, 66, 67, + /* 250 */ 433, 439, 581, 314, 389, 417, 417, 417, 549, 204, + /* 260 */ 68, 460, 70, 151, 262, 261, 197, 290, 339, 61, + /* 270 */ 59, 296, 443, 444, 440, 440, 63, 63, 62, 62, + /* 280 */ 62, 62, 318, 64, 64, 64, 64, 65, 65, 66, + /* 290 */ 66, 66, 67, 433, 439, 410, 548, 393, 284, 409, + /* 300 */ 412, 430, 521, 165, 411, 41, 381, 473, 432, 295, + /* 310 */ 423, 424, 61, 59, 296, 443, 444, 440, 440, 63, + /* 320 */ 63, 62, 62, 62, 62, 376, 64, 64, 64, 64, + /* 330 */ 65, 65, 66, 66, 66, 67, 477, 488, 300, 290, + /* 340 */ 76, 415, 205, 483, 332, 234, 238, 370, 267, 266, + /* 350 */ 489, 68, 384, 70, 151, 369, 393, 383, 205, 434, + /* 360 */ 435, 367, 394, 395, 178, 433, 439, 343, 346, 347, + /* 370 */ 529, 504, 572, 207, 417, 417, 417, 528, 169, 348, + /* 380 */ 420, 437, 438, 79, 61, 59, 296, 443, 444, 440, + /* 390 */ 440, 63, 63, 62, 62, 62, 62, 358, 64, 64, + /* 400 */ 64, 64, 65, 65, 66, 66, 66, 67, 290, 436, + /* 410 */ 428, 208, 486, 115, 240, 341, 245, 342, 173, 249, + /* 420 */ 318, 394, 395, 530, 318, 393, 250, 217, 318, 509, + /* 430 */ 405, 520, 152, 224, 433, 439, 321, 423, 424, 517, + /* 440 */ 492, 493, 411, 35, 231, 420, 411, 35, 469, 510, + /* 450 */ 411, 35, 477, 61, 59, 296, 443, 444, 440, 440, + /* 460 */ 63, 63, 62, 62, 62, 62, 412, 64, 64, 64, + /* 470 */ 64, 65, 65, 66, 66, 66, 67, 290, 522, 178, + /* 480 */ 351, 503, 343, 346, 347, 299, 318, 404, 21, 297, + /* 490 */ 394, 395, 318, 334, 348, 482, 318, 457, 318, 393, + /* 500 */ 207, 457, 302, 433, 439, 457, 22, 174, 411, 36, + /* 510 */ 420, 148, 531, 308, 411, 35, 523, 470, 411, 41, + /* 520 */ 411, 49, 61, 59, 296, 443, 444, 440, 440, 63, + /* 530 */ 63, 62, 62, 62, 62, 318, 64, 64, 64, 64, + /* 540 */ 65, 65, 66, 66, 66, 67, 290, 447, 338, 452, + /* 550 */ 253, 66, 66, 66, 67, 428, 448, 411, 49, 232, + /* 560 */ 230, 453, 10, 292, 394, 395, 393, 309, 250, 456, + /* 570 */ 411, 3, 433, 439, 454, 420, 328, 20, 543, 141, + /* 580 */ 584, 889, 324, 889, 446, 446, 393, 430, 322, 165, + /* 590 */ 393, 61, 59, 296, 443, 444, 440, 440, 63, 63, + /* 600 */ 62, 62, 62, 62, 310, 64, 64, 64, 64, 65, + /* 610 */ 65, 66, 66, 66, 67, 290, 371, 318, 271, 541, + /* 620 */ 91, 581, 293, 540, 466, 318, 206, 318, 587, 388, + /* 630 */ 385, 394, 395, 55, 324, 359, 446, 446, 329, 411, + /* 640 */ 29, 433, 439, 324, 481, 446, 446, 411, 24, 411, + /* 650 */ 33, 394, 395, 515, 545, 394, 395, 274, 290, 272, + /* 660 */ 61, 59, 296, 443, 444, 440, 440, 63, 63, 62, + /* 670 */ 62, 62, 62, 318, 64, 64, 64, 64, 65, 65, + /* 680 */ 66, 66, 66, 67, 433, 439, 546, 493, 303, 396, + /* 690 */ 397, 398, 580, 289, 823, 411, 54, 360, 515, 515, + /* 700 */ 189, 290, 363, 61, 59, 296, 443, 444, 440, 440, + /* 710 */ 63, 63, 62, 62, 62, 62, 144, 64, 64, 64, + /* 720 */ 64, 65, 65, 66, 66, 66, 67, 433, 439, 539, + /* 730 */ 357, 539, 248, 216, 412, 468, 168, 157, 273, 515, + /* 740 */ 515, 515, 312, 120, 290, 198, 61, 71, 296, 443, + /* 750 */ 444, 440, 440, 63, 63, 62, 62, 62, 62, 368, + /* 760 */ 64, 64, 64, 64, 65, 65, 66, 66, 66, 67, + /* 770 */ 433, 439, 426, 426, 304, 305, 307, 248, 247, 412, + /* 780 */ 324, 364, 446, 446, 175, 176, 177, 290, 261, 261, + /* 790 */ 59, 296, 443, 444, 440, 440, 63, 63, 62, 62, + /* 800 */ 62, 62, 155, 64, 64, 64, 64, 65, 65, 66, + /* 810 */ 66, 66, 67, 433, 439, 462, 156, 125, 248, 248, + /* 820 */ 248, 420, 463, 367, 261, 255, 335, 193, 468, 556, + /* 830 */ 558, 75, 162, 77, 296, 443, 444, 440, 440, 63, + /* 840 */ 63, 62, 62, 62, 62, 318, 64, 64, 64, 64, + /* 850 */ 65, 65, 66, 66, 66, 67, 72, 325, 318, 4, + /* 860 */ 318, 412, 318, 294, 259, 559, 257, 411, 25, 318, + /* 870 */ 219, 320, 72, 325, 318, 4, 153, 235, 180, 294, + /* 880 */ 411, 52, 411, 97, 411, 94, 420, 320, 327, 218, + /* 890 */ 410, 411, 99, 501, 409, 318, 411, 100, 319, 432, + /* 900 */ 318, 261, 318, 174, 327, 392, 191, 183, 318, 116, + /* 910 */ 412, 318, 412, 416, 261, 432, 318, 411, 111, 74, + /* 920 */ 73, 429, 411, 112, 411, 17, 621, 72, 316, 317, + /* 930 */ 411, 98, 415, 411, 34, 74, 73, 480, 411, 95, + /* 940 */ 318, 412, 560, 72, 316, 317, 72, 325, 415, 4, + /* 950 */ 318, 205, 318, 294, 318, 275, 5, 318, 261, 292, + /* 960 */ 323, 320, 411, 53, 330, 417, 417, 417, 418, 419, + /* 970 */ 12, 378, 411, 113, 411, 114, 411, 26, 327, 411, + /* 980 */ 37, 417, 417, 417, 418, 419, 12, 508, 507, 432, + /* 990 */ 159, 205, 318, 458, 261, 220, 221, 222, 102, 375, + /* 1000 */ 421, 318, 23, 318, 377, 318, 82, 318, 506, 74, + /* 1010 */ 73, 202, 467, 279, 411, 38, 472, 72, 316, 317, + /* 1020 */ 280, 318, 415, 411, 27, 411, 39, 411, 40, 411, + /* 1030 */ 42, 318, 200, 476, 548, 277, 441, 246, 505, 199, + /* 1040 */ 318, 511, 201, 411, 43, 318, 512, 455, 318, 13, + /* 1050 */ 475, 318, 170, 411, 44, 417, 417, 417, 418, 419, + /* 1060 */ 12, 524, 411, 30, 498, 499, 318, 411, 31, 19, + /* 1070 */ 411, 45, 318, 411, 46, 484, 318, 13, 241, 318, + /* 1080 */ 513, 318, 125, 318, 254, 374, 276, 266, 411, 47, + /* 1090 */ 242, 291, 537, 538, 411, 48, 205, 256, 411, 32, + /* 1100 */ 258, 411, 11, 411, 50, 411, 51, 252, 350, 125, + /* 1110 */ 125, 544, 552, 125, 170, 553, 563, 89, 89, 9, + /* 1120 */ 380, 260, 579, 265, 288, 355, 186, 362, 402, 365, + /* 1130 */ 366, 268, 269, 143, 225, 270, 555, 565, 278, 281, + /* 1140 */ 282, 576, 425, 326, 427, 461, 504, 465, 551, 243, + /* 1150 */ 514, 562, 160, 391, 399, 400, 401, 8, 315, 413, + /* 1160 */ 82, 226, 333, 227, 81, 331, 57, 516, 228, 345, + /* 1170 */ 78, 209, 167, 459, 233, 210, 407, 464, 122, 83, + /* 1180 */ 336, 340, 211, 491, 496, 301, 244, 501, 103, 500, + /* 1190 */ 497, 502, 285, 518, 229, 525, 414, 286, 519, 352, + /* 1200 */ 526, 527, 533, 237, 181, 474, 239, 354, 478, 185, + /* 1210 */ 182, 356, 214, 184, 86, 535, 215, 187, 118, 361, + /* 1220 */ 547, 190, 129, 372, 373, 130, 554, 311, 131, 561, + /* 1230 */ 132, 573, 135, 96, 133, 578, 390, 139, 574, 575, + /* 1240 */ 263, 403, 138, 213, 101, 622, 623, 163, 60, 536, + /* 1250 */ 164, 422, 431, 442, 449, 445, 140, 154, 166, 450, + /* 1260 */ 451, 6, 90, 14, 13, 471, 7, 123, 158, 124, + /* 1270 */ 485, 93, 212, 84, 344, 104, 117, 251, 105, 85, + /* 1280 */ 106, 179, 242, 353, 142, 18, 534, 126, 306, 349, + /* 1290 */ 170, 127, 109, 264, 188, 107, 542, 287, 550, 128, + /* 1300 */ 192, 15, 87, 88, 194, 195, 557, 119, 196, 136, + /* 1310 */ 137, 134, 16, 564, 571, 108, 313, 203, 145, 283, + /* 1320 */ 382, 386, 900, 585, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 16, 218, 16, 220, 221, 21, 111, 23, 70, 71, - /* 10 */ 72, 73, 84, 75, 76, 77, 78, 79, 80, 81, - /* 20 */ 82, 83, 84, 162, 163, 164, 42, 43, 74, 75, + /* 0 */ 16, 218, 16, 220, 221, 21, 148, 23, 70, 71, + /* 10 */ 72, 73, 111, 75, 76, 77, 78, 79, 80, 81, + /* 20 */ 82, 83, 84, 148, 166, 167, 42, 43, 74, 75, /* 30 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 79, /* 40 */ 80, 81, 82, 83, 84, 61, 62, 63, 64, 65, - /* 50 */ 66, 67, 68, 69, 70, 71, 72, 73, 170, 75, + /* 50 */ 66, 67, 68, 69, 70, 71, 72, 73, 20, 75, /* 60 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 16, - /* 70 */ 148, 218, 88, 220, 221, 22, 90, 91, 92, 93, - /* 80 */ 94, 95, 96, 97, 140, 141, 142, 22, 148, 145, - /* 90 */ 104, 238, 170, 171, 154, 42, 43, 157, 158, 46, - /* 100 */ 1, 2, 75, 76, 77, 78, 79, 80, 81, 82, - /* 110 */ 83, 84, 16, 170, 61, 62, 63, 64, 65, 66, + /* 70 */ 148, 142, 88, 22, 145, 22, 90, 91, 92, 93, + /* 80 */ 94, 95, 96, 97, 209, 19, 228, 229, 166, 23, + /* 90 */ 104, 148, 140, 141, 142, 42, 43, 145, 60, 46, + /* 100 */ 157, 158, 75, 76, 77, 78, 79, 80, 81, 82, + /* 110 */ 83, 84, 16, 162, 61, 62, 63, 64, 65, 66, /* 120 */ 67, 68, 69, 70, 71, 72, 73, 23, 75, 76, /* 130 */ 77, 78, 79, 80, 81, 82, 83, 84, 42, 43, - /* 140 */ 44, 143, 144, 162, 222, 177, 178, 149, 21, 19, - /* 150 */ 23, 156, 184, 23, 156, 79, 80, 61, 62, 63, + /* 140 */ 44, 90, 84, 162, 93, 94, 95, 1, 2, 19, + /* 150 */ 228, 229, 201, 23, 88, 89, 105, 61, 62, 63, /* 160 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, /* 170 */ 156, 75, 76, 77, 78, 79, 80, 81, 82, 83, - /* 180 */ 84, 16, 201, 79, 80, 190, 21, 122, 190, 59, - /* 190 */ 169, 159, 88, 89, 162, 163, 164, 148, 177, 218, - /* 200 */ 182, 220, 221, 99, 190, 186, 187, 42, 43, 79, - /* 210 */ 80, 19, 20, 215, 22, 88, 202, 203, 88, 170, - /* 220 */ 171, 207, 92, 19, 16, 21, 61, 62, 63, 64, - /* 230 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 241, + /* 180 */ 84, 16, 201, 79, 80, 148, 21, 161, 12, 59, + /* 190 */ 169, 154, 88, 89, 157, 158, 170, 148, 177, 218, + /* 200 */ 24, 220, 221, 99, 190, 156, 170, 42, 43, 79, + /* 210 */ 80, 19, 20, 37, 22, 39, 202, 203, 88, 170, + /* 220 */ 171, 207, 92, 148, 16, 49, 61, 62, 63, 64, + /* 230 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 190, /* 240 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - /* 250 */ 42, 43, 60, 186, 187, 125, 126, 127, 11, 210, - /* 260 */ 211, 218, 219, 220, 221, 19, 20, 16, 22, 61, + /* 250 */ 42, 43, 60, 143, 144, 125, 126, 127, 11, 149, + /* 260 */ 218, 219, 220, 221, 189, 148, 156, 16, 81, 61, /* 270 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, /* 280 */ 72, 73, 148, 75, 76, 77, 78, 79, 80, 81, - /* 290 */ 82, 83, 84, 42, 43, 90, 49, 23, 93, 94, - /* 300 */ 95, 148, 161, 14, 170, 171, 60, 162, 59, 191, - /* 310 */ 105, 170, 61, 62, 63, 64, 65, 66, 67, 68, - /* 320 */ 69, 70, 71, 72, 73, 182, 75, 76, 77, 78, - /* 330 */ 79, 80, 81, 82, 83, 84, 183, 88, 16, 16, - /* 340 */ 132, 92, 53, 20, 55, 211, 201, 100, 101, 102, - /* 350 */ 148, 81, 82, 83, 84, 43, 23, 22, 111, 42, + /* 290 */ 82, 83, 84, 42, 43, 108, 49, 23, 159, 112, + /* 300 */ 190, 162, 163, 164, 170, 171, 189, 162, 59, 165, + /* 310 */ 166, 167, 61, 62, 63, 64, 65, 66, 67, 68, + /* 320 */ 69, 70, 71, 72, 73, 215, 75, 76, 77, 78, + /* 330 */ 79, 80, 81, 82, 83, 84, 148, 88, 16, 16, + /* 340 */ 132, 92, 111, 20, 210, 211, 201, 100, 101, 102, + /* 350 */ 170, 218, 242, 220, 221, 124, 23, 240, 111, 42, /* 360 */ 43, 148, 88, 89, 90, 42, 43, 93, 94, 95, - /* 370 */ 151, 148, 170, 171, 125, 126, 127, 91, 148, 105, - /* 380 */ 227, 64, 65, 132, 61, 62, 63, 64, 65, 66, - /* 390 */ 67, 68, 69, 70, 71, 72, 73, 111, 75, 76, + /* 370 */ 177, 178, 239, 229, 125, 126, 127, 184, 21, 105, + /* 380 */ 23, 64, 65, 132, 61, 62, 63, 64, 65, 66, + /* 390 */ 67, 68, 69, 70, 71, 72, 73, 209, 75, 76, /* 400 */ 77, 78, 79, 80, 81, 82, 83, 84, 16, 92, - /* 410 */ 124, 99, 20, 91, 92, 93, 94, 95, 96, 97, - /* 420 */ 148, 88, 89, 134, 148, 90, 104, 225, 93, 94, - /* 430 */ 95, 187, 156, 148, 42, 43, 165, 166, 167, 209, - /* 440 */ 105, 142, 170, 171, 145, 226, 170, 171, 115, 230, - /* 450 */ 227, 166, 167, 61, 62, 63, 64, 65, 66, 67, + /* 410 */ 79, 80, 20, 91, 92, 93, 94, 95, 96, 97, + /* 420 */ 148, 88, 89, 182, 148, 23, 104, 214, 148, 30, + /* 430 */ 168, 169, 156, 191, 42, 43, 165, 166, 167, 177, + /* 440 */ 186, 187, 170, 171, 148, 88, 170, 171, 115, 50, + /* 450 */ 170, 171, 148, 61, 62, 63, 64, 65, 66, 67, /* 460 */ 68, 69, 70, 71, 72, 73, 190, 75, 76, 77, - /* 470 */ 78, 79, 80, 81, 82, 83, 84, 16, 148, 148, - /* 480 */ 148, 20, 19, 12, 148, 213, 23, 157, 158, 213, - /* 490 */ 165, 166, 167, 20, 148, 24, 148, 225, 19, 228, - /* 500 */ 148, 225, 23, 42, 43, 19, 170, 171, 37, 23, - /* 510 */ 39, 181, 182, 228, 18, 183, 170, 171, 170, 171, - /* 520 */ 49, 23, 61, 62, 63, 64, 65, 66, 67, 68, - /* 530 */ 69, 70, 71, 72, 73, 16, 75, 76, 77, 78, - /* 540 */ 79, 80, 81, 82, 83, 84, 16, 148, 20, 213, - /* 550 */ 20, 88, 56, 228, 12, 156, 20, 244, 245, 227, - /* 560 */ 23, 225, 43, 217, 148, 217, 24, 88, 89, 170, - /* 570 */ 171, 23, 42, 43, 88, 89, 168, 169, 148, 37, - /* 580 */ 107, 39, 109, 110, 30, 177, 88, 89, 162, 190, - /* 590 */ 94, 61, 62, 63, 64, 65, 66, 67, 68, 69, - /* 600 */ 70, 71, 72, 73, 50, 75, 76, 77, 78, 79, - /* 610 */ 80, 81, 82, 83, 84, 16, 156, 148, 99, 107, - /* 620 */ 21, 109, 110, 104, 148, 88, 89, 201, 148, 23, - /* 630 */ 134, 148, 148, 157, 158, 107, 88, 109, 110, 170, - /* 640 */ 171, 42, 43, 107, 214, 109, 110, 0, 1, 2, - /* 650 */ 190, 148, 115, 148, 170, 171, 148, 103, 16, 20, + /* 470 */ 78, 79, 80, 81, 82, 83, 84, 16, 148, 90, + /* 480 */ 16, 20, 93, 94, 95, 213, 148, 157, 158, 213, + /* 490 */ 88, 89, 148, 213, 105, 20, 148, 225, 148, 23, + /* 500 */ 229, 225, 103, 42, 43, 225, 19, 43, 170, 171, + /* 510 */ 23, 181, 182, 209, 170, 171, 182, 115, 170, 171, + /* 520 */ 170, 171, 61, 62, 63, 64, 65, 66, 67, 68, + /* 530 */ 69, 70, 71, 72, 73, 148, 75, 76, 77, 78, + /* 540 */ 79, 80, 81, 82, 83, 84, 16, 20, 148, 12, + /* 550 */ 20, 81, 82, 83, 84, 79, 20, 170, 171, 211, + /* 560 */ 222, 24, 19, 99, 88, 89, 23, 217, 104, 225, + /* 570 */ 170, 171, 42, 43, 37, 88, 39, 19, 18, 21, + /* 580 */ 19, 20, 107, 22, 109, 110, 23, 162, 163, 164, + /* 590 */ 23, 61, 62, 63, 64, 65, 66, 67, 68, 69, + /* 600 */ 70, 71, 72, 73, 217, 75, 76, 77, 78, 79, + /* 610 */ 80, 81, 82, 83, 84, 16, 56, 148, 14, 25, + /* 620 */ 21, 60, 151, 29, 22, 148, 193, 148, 0, 1, + /* 630 */ 2, 88, 89, 200, 107, 41, 109, 110, 187, 170, + /* 640 */ 171, 42, 43, 107, 81, 109, 110, 170, 171, 170, + /* 650 */ 171, 88, 89, 148, 94, 88, 89, 53, 16, 55, /* 660 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - /* 670 */ 71, 72, 73, 146, 75, 76, 77, 78, 79, 80, - /* 680 */ 81, 82, 83, 84, 42, 43, 183, 81, 183, 202, - /* 690 */ 203, 183, 209, 148, 88, 89, 7, 8, 9, 60, - /* 700 */ 156, 16, 81, 61, 62, 63, 64, 65, 66, 67, - /* 710 */ 68, 69, 70, 71, 72, 73, 148, 75, 76, 77, - /* 720 */ 78, 79, 80, 81, 82, 83, 84, 42, 43, 108, - /* 730 */ 227, 148, 227, 112, 190, 227, 148, 14, 170, 171, - /* 740 */ 100, 101, 102, 148, 16, 148, 61, 62, 63, 64, + /* 670 */ 71, 72, 73, 148, 75, 76, 77, 78, 79, 80, + /* 680 */ 81, 82, 83, 84, 42, 43, 186, 187, 183, 7, + /* 690 */ 8, 9, 245, 246, 134, 170, 171, 226, 148, 148, + /* 700 */ 156, 16, 231, 61, 62, 63, 64, 65, 66, 67, + /* 710 */ 68, 69, 70, 71, 72, 73, 114, 75, 76, 77, + /* 720 */ 78, 79, 80, 81, 82, 83, 84, 42, 43, 100, + /* 730 */ 101, 102, 227, 183, 190, 22, 202, 203, 134, 148, + /* 740 */ 148, 148, 243, 244, 16, 156, 61, 62, 63, 64, /* 750 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 215, /* 760 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - /* 770 */ 42, 43, 189, 25, 148, 148, 53, 29, 55, 148, - /* 780 */ 236, 100, 101, 102, 189, 148, 189, 16, 192, 41, + /* 770 */ 42, 43, 125, 126, 183, 183, 183, 227, 227, 190, + /* 780 */ 107, 237, 109, 110, 100, 101, 102, 16, 148, 148, /* 790 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - /* 800 */ 72, 73, 214, 75, 76, 77, 78, 79, 80, 81, - /* 810 */ 82, 83, 84, 42, 43, 148, 189, 111, 22, 22, - /* 820 */ 189, 193, 239, 148, 148, 148, 189, 156, 200, 204, - /* 830 */ 124, 242, 243, 22, 63, 64, 65, 66, 67, 68, + /* 800 */ 72, 73, 89, 75, 76, 77, 78, 79, 80, 81, + /* 810 */ 82, 83, 84, 42, 43, 27, 148, 22, 227, 227, + /* 820 */ 227, 23, 34, 148, 148, 14, 148, 156, 115, 189, + /* 830 */ 189, 131, 19, 133, 63, 64, 65, 66, 67, 68, /* 840 */ 69, 70, 71, 72, 73, 148, 75, 76, 77, 78, /* 850 */ 79, 80, 81, 82, 83, 84, 16, 17, 148, 19, - /* 860 */ 148, 190, 148, 23, 189, 189, 189, 148, 131, 148, - /* 870 */ 133, 31, 16, 17, 148, 19, 209, 7, 8, 23, - /* 880 */ 170, 171, 170, 171, 170, 171, 89, 31, 48, 170, - /* 890 */ 171, 170, 171, 19, 108, 148, 170, 171, 112, 59, - /* 900 */ 148, 20, 148, 22, 48, 125, 126, 156, 148, 98, - /* 910 */ 114, 148, 115, 91, 92, 59, 148, 170, 171, 79, - /* 920 */ 80, 156, 170, 171, 170, 171, 16, 87, 88, 89, + /* 860 */ 148, 190, 148, 23, 53, 189, 55, 170, 171, 148, + /* 870 */ 146, 31, 16, 17, 148, 19, 156, 148, 156, 23, + /* 880 */ 170, 171, 170, 171, 170, 171, 88, 31, 48, 214, + /* 890 */ 108, 170, 171, 98, 112, 148, 170, 171, 148, 59, + /* 900 */ 148, 148, 148, 43, 48, 148, 22, 156, 148, 148, + /* 910 */ 190, 148, 190, 148, 148, 59, 148, 170, 171, 79, + /* 920 */ 80, 162, 170, 171, 170, 171, 113, 87, 88, 89, /* 930 */ 170, 171, 92, 170, 171, 79, 80, 81, 170, 171, - /* 940 */ 148, 190, 148, 87, 88, 89, 16, 17, 92, 19, - /* 950 */ 148, 111, 148, 23, 148, 190, 20, 148, 22, 51, - /* 960 */ 52, 31, 170, 171, 27, 125, 126, 127, 128, 129, - /* 970 */ 130, 34, 170, 171, 170, 171, 170, 171, 48, 170, - /* 980 */ 171, 125, 126, 127, 128, 129, 130, 113, 92, 59, - /* 990 */ 5, 20, 148, 22, 162, 10, 11, 12, 13, 148, - /* 1000 */ 104, 148, 92, 148, 20, 148, 22, 148, 148, 79, - /* 1010 */ 80, 26, 148, 28, 170, 171, 148, 87, 88, 89, + /* 940 */ 148, 190, 189, 87, 88, 89, 16, 17, 92, 19, + /* 950 */ 148, 111, 148, 23, 148, 189, 192, 148, 148, 99, + /* 960 */ 16, 31, 170, 171, 148, 125, 126, 127, 128, 129, + /* 970 */ 130, 91, 170, 171, 170, 171, 170, 171, 48, 170, + /* 980 */ 171, 125, 126, 127, 128, 129, 130, 91, 92, 59, + /* 990 */ 5, 111, 148, 148, 148, 10, 11, 12, 13, 189, + /* 1000 */ 20, 148, 22, 148, 124, 148, 122, 148, 179, 79, + /* 1010 */ 80, 26, 204, 28, 170, 171, 148, 87, 88, 89, /* 1020 */ 35, 148, 92, 170, 171, 170, 171, 170, 171, 170, - /* 1030 */ 171, 148, 47, 148, 49, 20, 20, 22, 22, 54, + /* 1030 */ 171, 148, 47, 148, 49, 189, 92, 148, 148, 54, /* 1040 */ 148, 179, 57, 170, 171, 148, 179, 20, 148, 22, /* 1050 */ 20, 148, 22, 170, 171, 125, 126, 127, 128, 129, - /* 1060 */ 130, 179, 170, 171, 148, 148, 148, 170, 171, 19, - /* 1070 */ 170, 171, 148, 170, 171, 20, 148, 22, 20, 148, - /* 1080 */ 22, 148, 148, 148, 232, 100, 101, 102, 170, 171, - /* 1090 */ 148, 106, 148, 148, 170, 171, 111, 148, 170, 171, + /* 1060 */ 130, 148, 170, 171, 7, 8, 148, 170, 171, 19, + /* 1070 */ 170, 171, 148, 170, 171, 20, 148, 22, 92, 148, + /* 1080 */ 20, 148, 22, 148, 148, 100, 101, 102, 170, 171, + /* 1090 */ 104, 106, 51, 52, 170, 171, 111, 148, 170, 171, /* 1100 */ 148, 170, 171, 170, 171, 170, 171, 20, 20, 22, - /* 1110 */ 22, 233, 148, 148, 170, 171, 148, 148, 148, 69, - /* 1120 */ 135, 148, 170, 171, 148, 148, 148, 148, 148, 148, - /* 1130 */ 148, 192, 194, 150, 229, 229, 224, 178, 195, 173, - /* 1140 */ 173, 195, 6, 147, 147, 173, 147, 173, 173, 147, - /* 1150 */ 22, 190, 195, 155, 122, 119, 196, 120, 117, 197, - /* 1160 */ 174, 198, 131, 121, 223, 113, 153, 97, 212, 23, - /* 1170 */ 161, 153, 99, 116, 99, 172, 172, 40, 172, 98, - /* 1180 */ 180, 174, 172, 19, 161, 180, 199, 175, 15, 172, - /* 1190 */ 152, 172, 172, 153, 205, 152, 206, 205, 153, 206, - /* 1200 */ 212, 175, 153, 212, 153, 152, 212, 38, 131, 153, - /* 1210 */ 61, 152, 19, 185, 185, 153, 195, 15, 153, 195, - /* 1220 */ 33, 188, 188, 188, 216, 153, 160, 188, 138, 234, - /* 1230 */ 216, 185, 153, 1, 20, 113, 235, 176, 113, 176, - /* 1240 */ 113, 19, 113, 20, 20, 92, 108, 19, 237, 11, - /* 1250 */ 19, 22, 118, 20, 20, 19, 115, 22, 118, 237, - /* 1260 */ 20, 22, 20, 113, 44, 240, 19, 19, 19, 32, - /* 1270 */ 44, 20, 19, 19, 44, 231, 96, 16, 104, 17, - /* 1280 */ 21, 99, 36, 99, 19, 22, 45, 5, 45, 134, - /* 1290 */ 243, 1, 103, 123, 246, 19, 69, 114, 14, 103, - /* 1300 */ 17, 116, 114, 124, 123, 19, 14, 20, 58, 137, - /* 1310 */ 19, 136, 3, 69, 4, + /* 1110 */ 22, 20, 20, 22, 22, 20, 20, 22, 22, 69, + /* 1120 */ 135, 148, 20, 148, 22, 234, 233, 148, 150, 148, + /* 1130 */ 148, 148, 148, 192, 194, 148, 148, 148, 148, 148, + /* 1140 */ 148, 148, 230, 224, 230, 173, 178, 173, 195, 173, + /* 1150 */ 173, 195, 6, 147, 147, 147, 147, 22, 155, 190, + /* 1160 */ 122, 195, 119, 196, 120, 117, 121, 173, 197, 174, + /* 1170 */ 131, 223, 113, 153, 97, 212, 23, 161, 153, 99, + /* 1180 */ 116, 99, 212, 172, 172, 40, 172, 98, 19, 174, + /* 1190 */ 180, 172, 175, 161, 198, 172, 199, 175, 180, 15, + /* 1200 */ 172, 172, 153, 205, 152, 206, 205, 153, 206, 153, + /* 1210 */ 152, 38, 212, 152, 131, 153, 212, 152, 61, 153, + /* 1220 */ 185, 185, 19, 153, 15, 188, 195, 153, 188, 195, + /* 1230 */ 188, 33, 185, 160, 188, 138, 1, 216, 153, 153, + /* 1240 */ 235, 20, 216, 176, 176, 113, 113, 113, 19, 236, + /* 1250 */ 113, 20, 20, 92, 11, 108, 19, 19, 22, 20, + /* 1260 */ 20, 118, 238, 22, 22, 115, 118, 19, 113, 20, + /* 1270 */ 20, 238, 44, 19, 44, 19, 32, 20, 19, 19, + /* 1280 */ 19, 96, 104, 16, 21, 232, 17, 99, 36, 44, + /* 1290 */ 22, 45, 241, 134, 99, 19, 45, 5, 1, 103, + /* 1300 */ 123, 19, 69, 69, 114, 14, 17, 244, 116, 103, + /* 1310 */ 123, 114, 19, 124, 20, 14, 247, 136, 19, 137, + /* 1320 */ 58, 3, 248, 4, }; -#define YY_SHIFT_USE_DFLT (-106) +#define YY_SHIFT_USE_DFLT (-100) #define YY_SHIFT_MAX 386 static const short yy_shift_ofst[] = { - /* 0 */ 99, 840, 985, -16, 840, 930, 930, 930, 274, -105, - /* 10 */ 96, 930, 930, 930, 930, 930, -46, 247, 104, 498, - /* 20 */ 548, 76, 76, 53, 165, 208, 251, 323, 392, 461, - /* 30 */ 530, 599, 642, 685, 642, 642, 642, 642, 642, 642, + /* 0 */ 146, 840, 985, -16, 840, 930, 930, 930, 274, 104, + /* 10 */ -99, 96, 930, 930, 930, 930, 930, -46, 247, 476, + /* 20 */ 567, 798, 331, 331, 53, 165, 208, 251, 323, 392, + /* 30 */ 461, 530, 599, 642, 685, 642, 642, 642, 642, 642, /* 40 */ 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, - /* 50 */ 642, 728, 771, 771, 856, 930, 930, 930, 930, 930, + /* 50 */ 642, 642, 728, 771, 771, 856, 930, 930, 930, 930, /* 60 */ 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, /* 70 */ 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, /* 80 */ 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, - /* 90 */ 930, 930, 930, -62, -62, -14, 27, 27, -40, 270, - /* 100 */ 519, 496, 498, 498, 498, 498, 498, 498, 498, 548, - /* 110 */ -72, -106, -106, -106, 130, 322, 471, 471, 192, 246, - /* 120 */ 647, 127, 498, 127, 498, 498, 498, 498, 498, 498, - /* 130 */ 498, 498, 498, 498, 498, 498, 498, 286, 706, -105, - /* 140 */ -105, -105, -106, -106, -106, 249, 249, 335, 205, 473, - /* 150 */ 479, 528, 536, 542, 333, 537, 486, 606, 689, 498, - /* 160 */ 498, 621, 498, 498, 463, 498, 498, 797, 498, 498, - /* 170 */ 512, 797, 498, 498, 554, 554, 554, 498, 498, 512, - /* 180 */ 498, 498, 512, 498, 748, 640, 498, 498, 512, 498, - /* 190 */ 498, 498, 512, 498, 498, 498, 512, 512, 498, 498, - /* 200 */ 498, 498, 498, 498, 204, 786, 796, 780, 780, 737, - /* 210 */ 937, 937, 937, 312, 937, 937, 811, 65, 65, 1136, - /* 220 */ 1136, 1136, 1136, 1128, -105, 1032, 1036, 1037, 1041, 1042, - /* 230 */ 1031, 1052, 1070, 1146, 1070, 1052, 1073, 1057, 1073, 1057, - /* 240 */ 1075, 1075, 1137, 1075, 1081, 1075, 1164, 1070, 1070, 1146, - /* 250 */ 1137, 1075, 1075, 1075, 1164, 1173, 1052, 1173, 1052, 1173, - /* 260 */ 1052, 1052, 1169, 1077, 1173, 1052, 1149, 1149, 1193, 1032, - /* 270 */ 1052, 1202, 1202, 1202, 1202, 1032, 1149, 1193, 1052, 1187, - /* 280 */ 1187, 1052, 1052, 1090, -106, -106, -106, -106, -106, -106, - /* 290 */ 317, 289, 681, 723, 874, 881, 910, 936, 971, 984, - /* 300 */ 896, 870, 822, 1015, 1016, 1027, 908, 1030, 1055, 1058, - /* 310 */ 1087, 1050, 1088, 639, 1232, 1214, 1122, 1125, 1127, 1129, - /* 320 */ 1222, 1223, 1224, 1153, 1138, 1228, 1238, 1231, 1233, 1229, - /* 330 */ 1234, 1134, 1235, 1140, 1239, 1141, 1236, 1240, 1150, 1242, - /* 340 */ 1237, 1220, 1247, 1226, 1248, 1251, 1249, 1253, 1230, 1254, - /* 350 */ 1180, 1174, 1261, 1262, 1259, 1182, 1246, 1241, 1263, 1243, - /* 360 */ 1155, 1184, 1265, 1282, 1290, 1189, 1227, 1244, 1170, 1276, - /* 370 */ 1183, 1284, 1185, 1283, 1188, 1196, 1181, 1286, 1179, 1287, - /* 380 */ 1292, 1250, 1175, 1172, 1291, 1309, 1310, + /* 90 */ 930, 930, 930, 930, -62, -62, -14, 27, 27, -40, + /* 100 */ 470, 464, 560, 567, 567, 567, 567, 567, 567, 567, + /* 110 */ 798, 58, -100, -100, -100, 130, 322, 176, 176, 192, + /* 120 */ 561, 628, 357, 567, 357, 567, 567, 567, 567, 567, + /* 130 */ 567, 567, 567, 567, 567, 567, 567, 567, 880, 231, + /* 140 */ -99, -99, -99, -100, -100, -100, 249, 249, 51, 389, + /* 150 */ 475, 66, 527, 536, 537, 333, 402, 543, 563, 682, + /* 160 */ 567, 567, 187, 567, 567, 487, 567, 567, 713, 567, + /* 170 */ 567, 673, 713, 567, 567, 399, 399, 399, 567, 567, + /* 180 */ 673, 567, 567, 673, 567, 594, 629, 567, 567, 673, + /* 190 */ 567, 567, 567, 673, 567, 567, 567, 673, 673, 567, + /* 200 */ 567, 567, 567, 567, 558, 782, 602, 647, 647, 700, + /* 210 */ 788, 788, 788, 860, 788, 788, 795, 884, 884, 1146, + /* 220 */ 1146, 1146, 1146, 1135, -99, 1038, 1043, 1044, 1048, 1045, + /* 230 */ 1039, 1059, 1077, 1153, 1077, 1059, 1080, 1064, 1080, 1064, + /* 240 */ 1082, 1082, 1145, 1082, 1089, 1082, 1169, 1077, 1077, 1153, + /* 250 */ 1145, 1082, 1082, 1082, 1169, 1184, 1059, 1184, 1059, 1184, + /* 260 */ 1059, 1059, 1173, 1083, 1184, 1059, 1157, 1157, 1203, 1038, + /* 270 */ 1059, 1209, 1209, 1209, 1209, 1038, 1157, 1203, 1059, 1198, + /* 280 */ 1198, 1059, 1059, 1097, -100, -100, -100, -100, -100, -100, + /* 290 */ 317, 604, 684, 811, 813, 980, 944, 1027, 1030, 1055, + /* 300 */ 986, 1057, 896, 1060, 1087, 1088, 1041, 1091, 1092, 1095, + /* 310 */ 1096, 1050, 1102, 38, 1235, 1221, 1132, 1133, 1134, 1137, + /* 320 */ 1229, 1231, 1232, 1161, 1147, 1237, 1243, 1238, 1239, 1236, + /* 330 */ 1240, 1143, 1241, 1148, 1242, 1150, 1248, 1249, 1155, 1250, + /* 340 */ 1244, 1228, 1254, 1230, 1256, 1257, 1259, 1260, 1245, 1261, + /* 350 */ 1185, 1178, 1267, 1269, 1263, 1188, 1252, 1246, 1268, 1251, + /* 360 */ 1159, 1195, 1276, 1292, 1297, 1196, 1233, 1234, 1177, 1282, + /* 370 */ 1190, 1291, 1192, 1289, 1197, 1206, 1187, 1293, 1189, 1294, + /* 380 */ 1301, 1262, 1181, 1182, 1299, 1318, 1319, }; #define YY_REDUCE_USE_DFLT (-218) #define YY_REDUCE_MAX 289 static const short yy_reduce_ofst[] = { - /* 0 */ -56, 276, -2, -19, 399, 272, 49, 336, 330, 14, - /* 10 */ -147, -78, 202, 134, 346, 348, 43, 544, 285, -60, - /* 20 */ 32, 271, 325, -217, -217, -217, -217, -217, -217, -217, + /* 0 */ -48, 276, 110, -19, 49, 272, 134, 280, 330, -142, + /* 10 */ 14, 133, 338, 344, 348, 350, 387, 42, 544, -78, + /* 20 */ 37, 139, 144, 271, -217, -217, -217, -217, -217, -217, /* 30 */ -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, /* 40 */ -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, - /* 50 */ -217, -217, -217, -217, 469, 484, 568, 710, 712, 714, - /* 60 */ 719, 721, 726, 747, 752, 754, 760, 763, 768, 792, - /* 70 */ 802, 804, 806, 809, 844, 853, 855, 857, 859, 873, - /* 80 */ 883, 892, 897, 900, 903, 918, 924, 928, 931, 933, - /* 90 */ 935, 944, 952, -217, -217, 408, -217, -217, -217, -217, - /* 100 */ -32, 219, 153, 332, 503, 505, 508, 583, 476, -139, - /* 110 */ -217, -217, -217, -217, 141, 21, 19, 67, 313, 313, - /* 120 */ 299, 145, 230, 426, 223, 595, 483, 430, 667, 597, - /* 130 */ 627, 631, 637, 675, 676, 588, 677, -5, 460, 671, - /* 140 */ 751, 765, 628, 487, 589, -112, -57, 18, 143, 118, - /* 150 */ 213, 118, 118, 244, 331, 352, 416, 480, 527, 545, - /* 160 */ 626, 596, 480, 697, 832, 794, 851, 625, 860, 864, - /* 170 */ 118, 625, 868, 885, 862, 867, 882, 916, 917, 118, - /* 180 */ 934, 942, 118, 945, 852, 878, 949, 964, 118, 965, - /* 190 */ 968, 969, 118, 970, 973, 976, 118, 118, 977, 978, - /* 200 */ 979, 980, 981, 982, 983, 939, 938, 905, 906, 912, - /* 210 */ 966, 967, 972, 959, 974, 975, 986, 943, 946, 996, - /* 220 */ 997, 999, 1002, 998, 961, 957, 960, 962, 963, 987, - /* 230 */ 941, 1013, 956, 1009, 988, 1018, 989, 990, 992, 993, - /* 240 */ 1003, 1004, 1000, 1006, 1007, 1010, 1012, 991, 994, 1023, - /* 250 */ 1005, 1017, 1019, 1020, 1026, 1038, 1040, 1043, 1045, 1053, - /* 260 */ 1049, 1051, 995, 1001, 1059, 1056, 1028, 1029, 1008, 1021, - /* 270 */ 1062, 1033, 1034, 1035, 1039, 1024, 1046, 1014, 1065, 1011, - /* 280 */ 1022, 1072, 1079, 1025, 1066, 1061, 1063, 1044, 1047, 1048, + /* 50 */ -217, -217, -217, -217, -217, 400, 469, 477, 479, 525, + /* 60 */ 697, 710, 712, 714, 721, 726, 747, 752, 754, 760, + /* 70 */ 763, 768, 792, 802, 804, 806, 809, 844, 853, 855, + /* 80 */ 857, 859, 873, 883, 892, 897, 900, 903, 918, 924, + /* 90 */ 928, 931, 933, 935, -217, -217, 262, -217, -217, -217, + /* 100 */ -217, 193, 471, 505, 550, 591, 592, 593, 117, -57, + /* 110 */ 425, -217, -217, -217, -217, 26, 21, 254, 500, 447, + /* 120 */ 447, -71, -49, -125, 145, 551, 75, 188, 213, 304, + /* 130 */ 640, 641, 676, 753, 766, 810, 675, 846, 589, 671, + /* 140 */ 720, 722, 751, 433, 534, 499, 36, 180, 241, 334, + /* 150 */ 242, 296, 242, 242, 451, 668, 678, 729, 750, 724, + /* 160 */ 757, 761, 764, 750, 765, 759, 816, 845, 808, 868, + /* 170 */ 885, 242, 808, 889, 890, 829, 862, 867, 913, 936, + /* 180 */ 242, 949, 952, 242, 973, 893, 891, 975, 979, 242, + /* 190 */ 981, 982, 983, 242, 984, 987, 988, 242, 242, 989, + /* 200 */ 990, 991, 992, 993, 978, 941, 940, 912, 914, 919, + /* 210 */ 972, 974, 976, 968, 977, 994, 995, 953, 956, 1006, + /* 220 */ 1007, 1008, 1009, 1003, 969, 966, 967, 971, 996, 997, + /* 230 */ 948, 1020, 963, 1016, 970, 1025, 998, 999, 1001, 1002, + /* 240 */ 1011, 1012, 1010, 1014, 1015, 1019, 1017, 1000, 1004, 1032, + /* 250 */ 1018, 1023, 1028, 1029, 1022, 1052, 1049, 1058, 1054, 1061, + /* 260 */ 1056, 1062, 1005, 1013, 1065, 1066, 1035, 1036, 1021, 1031, + /* 270 */ 1070, 1037, 1040, 1042, 1046, 1034, 1047, 1026, 1074, 1024, + /* 280 */ 1033, 1085, 1086, 1051, 1073, 1067, 1068, 1053, 1063, 1069, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 592, 819, 896, 707, 896, 819, 896, 819, 896, 711, - /* 10 */ 870, 815, 819, 896, 896, 896, 790, 896, 841, 896, - /* 20 */ 623, 841, 841, 742, 896, 896, 896, 896, 896, 896, - /* 30 */ 896, 896, 743, 896, 818, 814, 810, 812, 811, 744, - /* 40 */ 731, 740, 747, 723, 855, 749, 750, 756, 757, 871, - /* 50 */ 874, 778, 796, 777, 896, 896, 896, 896, 896, 896, - /* 60 */ 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, - /* 70 */ 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, - /* 80 */ 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, - /* 90 */ 896, 896, 896, 780, 801, 616, 779, 789, 781, 782, - /* 100 */ 676, 611, 896, 896, 896, 896, 896, 896, 896, 896, - /* 110 */ 783, 784, 797, 798, 896, 896, 896, 896, 896, 896, - /* 120 */ 592, 707, 896, 707, 896, 896, 896, 896, 896, 896, - /* 130 */ 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, - /* 140 */ 896, 896, 701, 711, 889, 896, 896, 667, 896, 896, - /* 150 */ 896, 896, 896, 896, 896, 896, 896, 896, 599, 597, - /* 160 */ 896, 699, 896, 896, 625, 896, 896, 709, 896, 896, - /* 170 */ 714, 715, 896, 896, 896, 896, 896, 896, 896, 613, - /* 180 */ 896, 896, 688, 896, 847, 896, 896, 896, 862, 896, - /* 190 */ 896, 896, 860, 896, 896, 896, 690, 752, 829, 896, - /* 200 */ 896, 875, 877, 896, 896, 699, 708, 896, 896, 813, - /* 210 */ 734, 734, 734, 646, 734, 734, 649, 746, 746, 596, - /* 220 */ 596, 596, 596, 666, 896, 746, 737, 739, 727, 741, - /* 230 */ 896, 716, 735, 896, 735, 716, 724, 726, 724, 726, - /* 240 */ 678, 678, 663, 678, 649, 678, 823, 735, 735, 896, - /* 250 */ 663, 678, 678, 678, 823, 608, 716, 608, 716, 608, - /* 260 */ 716, 716, 851, 854, 608, 716, 680, 680, 758, 746, - /* 270 */ 716, 687, 687, 687, 687, 746, 680, 758, 716, 873, - /* 280 */ 873, 716, 716, 882, 633, 651, 651, 857, 889, 894, - /* 290 */ 896, 896, 896, 896, 765, 896, 896, 896, 896, 896, - /* 300 */ 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, - /* 310 */ 896, 836, 896, 896, 896, 896, 770, 766, 896, 767, - /* 320 */ 896, 896, 896, 896, 693, 896, 896, 896, 896, 896, - /* 330 */ 896, 896, 728, 896, 738, 896, 896, 896, 896, 896, - /* 340 */ 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, - /* 350 */ 896, 896, 896, 896, 896, 896, 896, 849, 850, 896, - /* 360 */ 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, - /* 370 */ 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, - /* 380 */ 896, 881, 896, 896, 884, 593, 896, 587, 590, 589, - /* 390 */ 591, 595, 598, 620, 621, 622, 600, 601, 602, 603, - /* 400 */ 604, 605, 606, 612, 614, 632, 634, 618, 636, 697, - /* 410 */ 698, 762, 691, 692, 696, 764, 768, 769, 771, 772, - /* 420 */ 619, 626, 627, 630, 631, 837, 839, 838, 840, 629, - /* 430 */ 628, 773, 776, 785, 786, 788, 794, 800, 803, 787, - /* 440 */ 792, 793, 795, 799, 802, 694, 695, 806, 808, 809, - /* 450 */ 863, 864, 865, 866, 867, 804, 816, 817, 717, 807, - /* 460 */ 791, 729, 732, 733, 736, 730, 700, 710, 719, 720, - /* 470 */ 721, 722, 705, 706, 712, 725, 760, 761, 713, 702, - /* 480 */ 703, 704, 805, 763, 774, 775, 637, 638, 770, 639, - /* 490 */ 640, 641, 679, 682, 683, 684, 642, 661, 664, 665, - /* 500 */ 643, 650, 644, 645, 652, 653, 654, 657, 658, 659, - /* 510 */ 660, 655, 656, 824, 825, 827, 826, 647, 648, 662, - /* 520 */ 635, 624, 617, 668, 671, 672, 673, 674, 675, 677, - /* 530 */ 669, 670, 615, 607, 609, 718, 843, 852, 853, 848, - /* 540 */ 844, 845, 846, 610, 820, 821, 681, 754, 755, 842, - /* 550 */ 856, 858, 759, 859, 861, 886, 685, 686, 689, 828, - /* 560 */ 868, 745, 748, 751, 753, 830, 831, 832, 833, 834, - /* 570 */ 835, 869, 872, 876, 878, 879, 880, 883, 885, 890, - /* 580 */ 891, 892, 895, 893, 594, 588, + /* 0 */ 593, 820, 898, 708, 898, 820, 898, 820, 898, 843, + /* 10 */ 712, 872, 816, 820, 898, 898, 898, 791, 898, 843, + /* 20 */ 898, 624, 843, 843, 743, 898, 898, 898, 898, 898, + /* 30 */ 898, 898, 898, 744, 898, 819, 815, 811, 813, 812, + /* 40 */ 745, 732, 741, 748, 724, 857, 750, 751, 757, 758, + /* 50 */ 873, 876, 779, 797, 778, 898, 898, 898, 898, 898, + /* 60 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + /* 70 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + /* 80 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + /* 90 */ 898, 898, 898, 898, 781, 802, 617, 780, 790, 782, + /* 100 */ 783, 677, 612, 898, 898, 898, 898, 898, 898, 898, + /* 110 */ 898, 784, 785, 798, 799, 898, 898, 898, 898, 898, + /* 120 */ 898, 593, 708, 898, 708, 898, 898, 898, 898, 898, + /* 130 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + /* 140 */ 898, 898, 898, 702, 712, 891, 898, 898, 668, 898, + /* 150 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 600, + /* 160 */ 598, 898, 700, 898, 898, 626, 898, 898, 710, 898, + /* 170 */ 898, 715, 716, 898, 898, 898, 898, 898, 898, 898, + /* 180 */ 614, 898, 898, 689, 898, 849, 898, 898, 898, 864, + /* 190 */ 898, 898, 898, 862, 898, 898, 898, 691, 753, 830, + /* 200 */ 898, 877, 879, 898, 898, 700, 709, 898, 898, 814, + /* 210 */ 735, 735, 735, 647, 735, 735, 650, 747, 747, 597, + /* 220 */ 597, 597, 597, 667, 898, 747, 738, 740, 728, 742, + /* 230 */ 898, 717, 736, 898, 736, 717, 725, 727, 725, 727, + /* 240 */ 679, 679, 664, 679, 650, 679, 824, 736, 736, 898, + /* 250 */ 664, 679, 679, 679, 824, 609, 717, 609, 717, 609, + /* 260 */ 717, 717, 853, 856, 609, 717, 681, 681, 759, 747, + /* 270 */ 717, 688, 688, 688, 688, 747, 681, 759, 717, 875, + /* 280 */ 875, 717, 717, 884, 634, 652, 652, 859, 891, 896, + /* 290 */ 898, 898, 898, 898, 766, 898, 898, 898, 898, 898, + /* 300 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + /* 310 */ 898, 836, 898, 898, 898, 898, 771, 767, 898, 768, + /* 320 */ 898, 898, 898, 898, 694, 898, 898, 898, 898, 898, + /* 330 */ 898, 898, 729, 898, 739, 898, 898, 898, 898, 898, + /* 340 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + /* 350 */ 898, 898, 898, 898, 898, 898, 898, 851, 852, 898, + /* 360 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + /* 370 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + /* 380 */ 898, 883, 898, 898, 886, 594, 898, 588, 591, 590, + /* 390 */ 592, 596, 599, 621, 622, 623, 601, 602, 603, 604, + /* 400 */ 605, 606, 607, 613, 615, 633, 635, 619, 637, 698, + /* 410 */ 699, 763, 692, 693, 697, 765, 769, 770, 772, 773, + /* 420 */ 620, 627, 628, 631, 632, 839, 841, 840, 842, 630, + /* 430 */ 629, 774, 777, 786, 787, 789, 795, 801, 804, 788, + /* 440 */ 793, 794, 796, 800, 803, 695, 696, 807, 809, 810, + /* 450 */ 865, 866, 867, 868, 869, 805, 817, 818, 718, 808, + /* 460 */ 792, 730, 733, 734, 737, 731, 701, 711, 720, 721, + /* 470 */ 722, 723, 706, 707, 713, 726, 761, 762, 714, 703, + /* 480 */ 704, 705, 806, 764, 775, 776, 638, 639, 771, 640, + /* 490 */ 641, 642, 680, 683, 684, 685, 643, 662, 665, 666, + /* 500 */ 644, 651, 645, 646, 653, 654, 655, 658, 659, 660, + /* 510 */ 661, 656, 657, 825, 826, 828, 827, 648, 649, 663, + /* 520 */ 636, 625, 618, 669, 672, 673, 674, 675, 676, 678, + /* 530 */ 670, 671, 616, 608, 610, 719, 845, 854, 855, 850, + /* 540 */ 846, 847, 848, 611, 821, 822, 682, 755, 756, 844, + /* 550 */ 858, 860, 760, 861, 863, 888, 686, 687, 690, 829, + /* 560 */ 870, 746, 749, 752, 754, 831, 832, 833, 834, 837, + /* 570 */ 838, 835, 871, 874, 878, 880, 881, 882, 885, 887, + /* 580 */ 892, 893, 894, 897, 895, 595, 589, }; #define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) @@ -860,11 +862,11 @@ static const char *const yyTokenName[] = "inscollist_opt", "itemlist", "likeop", "escape", "between_op", "in_op", "case_operand", "case_exprlist", "case_else", "expritem", "uniqueflag", "idxitem", - "plus_opt", "number", "trigger_decl", "trigger_cmd_list", - "trigger_time", "trigger_event", "foreach_clause", "when_clause", - "trigger_cmd", "database_kw_opt", "key_opt", "add_column_fullname", - "kwcolumn_opt", "create_vtab", "vtabarglist", "vtabarg", - "vtabargtoken", "lp", "anylist", + "nmnum", "plus_opt", "number", "trigger_decl", + "trigger_cmd_list", "trigger_time", "trigger_event", "foreach_clause", + "when_clause", "trigger_cmd", "database_kw_opt", "key_opt", + "add_column_fullname", "kwcolumn_opt", "create_vtab", "vtabarglist", + "vtabarg", "vtabargtoken", "lp", "anylist", }; #endif /* NDEBUG */ @@ -1117,71 +1119,72 @@ static const char *const yyRuleName[] = /* 242 */ "cmd ::= DROP INDEX ifexists fullname", /* 243 */ "cmd ::= VACUUM", /* 244 */ "cmd ::= VACUUM nm", - /* 245 */ "cmd ::= PRAGMA nm dbnm EQ nm", + /* 245 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", /* 246 */ "cmd ::= PRAGMA nm dbnm EQ ON", - /* 247 */ "cmd ::= PRAGMA nm dbnm EQ plus_num", - /* 248 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", - /* 249 */ "cmd ::= PRAGMA nm dbnm LP nm RP", - /* 250 */ "cmd ::= PRAGMA nm dbnm", - /* 251 */ "plus_num ::= plus_opt number", - /* 252 */ "minus_num ::= MINUS number", - /* 253 */ "number ::= INTEGER|FLOAT", - /* 254 */ "plus_opt ::= PLUS", - /* 255 */ "plus_opt ::=", - /* 256 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END", - /* 257 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", - /* 258 */ "trigger_time ::= BEFORE", - /* 259 */ "trigger_time ::= AFTER", - /* 260 */ "trigger_time ::= INSTEAD OF", - /* 261 */ "trigger_time ::=", - /* 262 */ "trigger_event ::= DELETE|INSERT", - /* 263 */ "trigger_event ::= UPDATE", - /* 264 */ "trigger_event ::= UPDATE OF inscollist", - /* 265 */ "foreach_clause ::=", - /* 266 */ "foreach_clause ::= FOR EACH ROW", - /* 267 */ "foreach_clause ::= FOR EACH STATEMENT", - /* 268 */ "when_clause ::=", - /* 269 */ "when_clause ::= WHEN expr", - /* 270 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", - /* 271 */ "trigger_cmd_list ::=", - /* 272 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt", - /* 273 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP", - /* 274 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select", - /* 275 */ "trigger_cmd ::= DELETE FROM nm where_opt", - /* 276 */ "trigger_cmd ::= select", - /* 277 */ "expr ::= RAISE LP IGNORE RP", - /* 278 */ "expr ::= RAISE LP raisetype COMMA nm RP", - /* 279 */ "raisetype ::= ROLLBACK", - /* 280 */ "raisetype ::= ABORT", - /* 281 */ "raisetype ::= FAIL", - /* 282 */ "cmd ::= DROP TRIGGER ifexists fullname", - /* 283 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", - /* 284 */ "key_opt ::=", - /* 285 */ "key_opt ::= KEY expr", - /* 286 */ "database_kw_opt ::= DATABASE", - /* 287 */ "database_kw_opt ::=", - /* 288 */ "cmd ::= DETACH database_kw_opt expr", - /* 289 */ "cmd ::= REINDEX", - /* 290 */ "cmd ::= REINDEX nm dbnm", - /* 291 */ "cmd ::= ANALYZE", - /* 292 */ "cmd ::= ANALYZE nm dbnm", - /* 293 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", - /* 294 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column", - /* 295 */ "add_column_fullname ::= fullname", - /* 296 */ "kwcolumn_opt ::=", - /* 297 */ "kwcolumn_opt ::= COLUMNKW", - /* 298 */ "cmd ::= create_vtab", - /* 299 */ "cmd ::= create_vtab LP vtabarglist RP", - /* 300 */ "create_vtab ::= CREATE VIRTUAL TABLE nm dbnm USING nm", - /* 301 */ "vtabarglist ::= vtabarg", - /* 302 */ "vtabarglist ::= vtabarglist COMMA vtabarg", - /* 303 */ "vtabarg ::=", - /* 304 */ "vtabarg ::= vtabarg vtabargtoken", - /* 305 */ "vtabargtoken ::= ANY", - /* 306 */ "vtabargtoken ::= lp anylist RP", - /* 307 */ "lp ::= LP", - /* 308 */ "anylist ::=", - /* 309 */ "anylist ::= anylist ANY", + /* 247 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", + /* 248 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", + /* 249 */ "cmd ::= PRAGMA nm dbnm", + /* 250 */ "nmnum ::= plus_num", + /* 251 */ "nmnum ::= nm", + /* 252 */ "plus_num ::= plus_opt number", + /* 253 */ "minus_num ::= MINUS number", + /* 254 */ "number ::= INTEGER|FLOAT", + /* 255 */ "plus_opt ::= PLUS", + /* 256 */ "plus_opt ::=", + /* 257 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END", + /* 258 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", + /* 259 */ "trigger_time ::= BEFORE", + /* 260 */ "trigger_time ::= AFTER", + /* 261 */ "trigger_time ::= INSTEAD OF", + /* 262 */ "trigger_time ::=", + /* 263 */ "trigger_event ::= DELETE|INSERT", + /* 264 */ "trigger_event ::= UPDATE", + /* 265 */ "trigger_event ::= UPDATE OF inscollist", + /* 266 */ "foreach_clause ::=", + /* 267 */ "foreach_clause ::= FOR EACH ROW", + /* 268 */ "foreach_clause ::= FOR EACH STATEMENT", + /* 269 */ "when_clause ::=", + /* 270 */ "when_clause ::= WHEN expr", + /* 271 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", + /* 272 */ "trigger_cmd_list ::=", + /* 273 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt", + /* 274 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP", + /* 275 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select", + /* 276 */ "trigger_cmd ::= DELETE FROM nm where_opt", + /* 277 */ "trigger_cmd ::= select", + /* 278 */ "expr ::= RAISE LP IGNORE RP", + /* 279 */ "expr ::= RAISE LP raisetype COMMA nm RP", + /* 280 */ "raisetype ::= ROLLBACK", + /* 281 */ "raisetype ::= ABORT", + /* 282 */ "raisetype ::= FAIL", + /* 283 */ "cmd ::= DROP TRIGGER ifexists fullname", + /* 284 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", + /* 285 */ "key_opt ::=", + /* 286 */ "key_opt ::= KEY expr", + /* 287 */ "database_kw_opt ::= DATABASE", + /* 288 */ "database_kw_opt ::=", + /* 289 */ "cmd ::= DETACH database_kw_opt expr", + /* 290 */ "cmd ::= REINDEX", + /* 291 */ "cmd ::= REINDEX nm dbnm", + /* 292 */ "cmd ::= ANALYZE", + /* 293 */ "cmd ::= ANALYZE nm dbnm", + /* 294 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", + /* 295 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column", + /* 296 */ "add_column_fullname ::= fullname", + /* 297 */ "kwcolumn_opt ::=", + /* 298 */ "kwcolumn_opt ::= COLUMNKW", + /* 299 */ "cmd ::= create_vtab", + /* 300 */ "cmd ::= create_vtab LP vtabarglist RP", + /* 301 */ "create_vtab ::= CREATE VIRTUAL TABLE nm dbnm USING nm", + /* 302 */ "vtabarglist ::= vtabarg", + /* 303 */ "vtabarglist ::= vtabarglist COMMA vtabarg", + /* 304 */ "vtabarg ::=", + /* 305 */ "vtabarg ::= vtabarg vtabargtoken", + /* 306 */ "vtabargtoken ::= ANY", + /* 307 */ "vtabargtoken ::= lp anylist RP", + /* 308 */ "lp ::= LP", + /* 309 */ "anylist ::=", + /* 310 */ "anylist ::= anylist ANY", }; #endif /* NDEBUG */ @@ -1243,8 +1246,8 @@ static void yy_destructor(YYCODETYPE yym case 190: case 207: #line 374 "parse.y" -{sqlite3SelectDelete((yypminor->yy219));} -#line 1249 "parse.c" +{sqlite3SelectDelete((yypminor->yy43));} +#line 1252 "parse.c" break; case 170: case 171: @@ -1256,10 +1259,10 @@ static void yy_destructor(YYCODETYPE yym case 222: case 224: case 225: - case 235: + case 236: #line 618 "parse.y" -{sqlite3ExprDelete((yypminor->yy172));} -#line 1264 "parse.c" +{sqlite3ExprDelete((yypminor->yy450));} +#line 1267 "parse.c" break; case 175: case 183: @@ -1273,47 +1276,47 @@ static void yy_destructor(YYCODETYPE yym case 217: case 223: #line 855 "parse.y" -{sqlite3ExprListDelete((yypminor->yy174));} -#line 1279 "parse.c" +{sqlite3ExprListDelete((yypminor->yy242));} +#line 1282 "parse.c" break; case 189: case 194: case 202: case 203: #line 487 "parse.y" -{sqlite3SrcListDelete((yypminor->yy373));} -#line 1287 "parse.c" +{sqlite3SrcListDelete((yypminor->yy419));} +#line 1290 "parse.c" break; case 199: #line 548 "parse.y" { - sqlite3ExprDelete((yypminor->yy234).pLimit); - sqlite3ExprDelete((yypminor->yy234).pOffset); + sqlite3ExprDelete((yypminor->yy84).pLimit); + sqlite3ExprDelete((yypminor->yy84).pOffset); } -#line 1295 "parse.c" +#line 1298 "parse.c" break; case 206: case 209: case 216: #line 504 "parse.y" -{sqlite3IdListDelete((yypminor->yy432));} -#line 1302 "parse.c" +{sqlite3IdListDelete((yypminor->yy352));} +#line 1305 "parse.c" break; - case 231: - case 236: -#line 951 "parse.y" -{sqlite3DeleteTriggerStep((yypminor->yy243));} -#line 1308 "parse.c" + case 232: + case 237: +#line 952 "parse.y" +{sqlite3DeleteTriggerStep((yypminor->yy75));} +#line 1311 "parse.c" break; - case 233: -#line 935 "parse.y" -{sqlite3IdListDelete((yypminor->yy370).b);} -#line 1313 "parse.c" + case 234: +#line 936 "parse.y" +{sqlite3IdListDelete((yypminor->yy354).b);} +#line 1316 "parse.c" break; - case 238: -#line 1019 "parse.y" -{sqlite3ExprDelete((yypminor->yy386));} -#line 1318 "parse.c" + case 239: +#line 1020 "parse.y" +{sqlite3ExprDelete((yypminor->yy158));} +#line 1321 "parse.c" break; default: break; /* If no destructor action specified: do nothing */ } @@ -1481,7 +1484,7 @@ static void yy_shift( sqlite3ErrorMsg(pParse, "parser stack overflow"); pParse->parseError = 1; -#line 1487 "parse.c" +#line 1490 "parse.c" sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument var */ return; } @@ -1756,35 +1759,36 @@ static const struct { { 144, 5 }, { 144, 5 }, { 144, 5 }, - { 144, 5 }, { 144, 6 }, { 144, 3 }, + { 228, 1 }, + { 228, 1 }, { 166, 2 }, { 167, 2 }, + { 230, 1 }, { 229, 1 }, - { 228, 1 }, - { 228, 0 }, + { 229, 0 }, { 144, 5 }, - { 230, 11 }, - { 232, 1 }, - { 232, 1 }, - { 232, 2 }, - { 232, 0 }, + { 231, 11 }, { 233, 1 }, { 233, 1 }, - { 233, 3 }, - { 234, 0 }, + { 233, 2 }, + { 233, 0 }, + { 234, 1 }, + { 234, 1 }, { 234, 3 }, - { 234, 3 }, { 235, 0 }, - { 235, 2 }, - { 231, 3 }, - { 231, 0 }, - { 236, 6 }, - { 236, 8 }, - { 236, 5 }, - { 236, 4 }, - { 236, 1 }, + { 235, 3 }, + { 235, 3 }, + { 236, 0 }, + { 236, 2 }, + { 232, 3 }, + { 232, 0 }, + { 237, 6 }, + { 237, 8 }, + { 237, 5 }, + { 237, 4 }, + { 237, 1 }, { 171, 4 }, { 171, 6 }, { 187, 1 }, @@ -1792,10 +1796,10 @@ static const struct { { 187, 1 }, { 144, 4 }, { 144, 6 }, + { 239, 0 }, + { 239, 2 }, + { 238, 1 }, { 238, 0 }, - { 238, 2 }, - { 237, 1 }, - { 237, 0 }, { 144, 3 }, { 144, 1 }, { 144, 3 }, @@ -1803,21 +1807,21 @@ static const struct { { 144, 3 }, { 144, 6 }, { 144, 6 }, - { 239, 1 }, - { 240, 0 }, { 240, 1 }, + { 241, 0 }, + { 241, 1 }, { 144, 1 }, { 144, 4 }, - { 241, 7 }, - { 242, 1 }, - { 242, 3 }, - { 243, 0 }, - { 243, 2 }, - { 244, 1 }, - { 244, 3 }, + { 242, 7 }, + { 243, 1 }, + { 243, 3 }, + { 244, 0 }, + { 244, 2 }, { 245, 1 }, - { 246, 0 }, - { 246, 2 }, + { 245, 3 }, + { 246, 1 }, + { 247, 0 }, + { 247, 2 }, }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -1845,7 +1849,6 @@ static void yy_reduce( } #endif /* NDEBUG */ -#ifndef NDEBUG /* Silence complaints from purify about yygotominor being uninitialized ** in some cases when it is copied into the stack after the following ** switch. yygotominor is uninitialized when a rule reduces that does @@ -1853,10 +1856,16 @@ static void yy_reduce( ** value of the nonterminal uninitialized is utterly harmless as long ** as the value is never used. So really the only thing this code ** accomplishes is to quieten purify. + ** + ** 2007-01-16: The wireshark project (www.wireshark.org) reports that + ** without this code, their parser segfaults. I'm not sure what there + ** parser is doing to make this happen. This is the second bug report + ** from wireshark this week. Clearly they are stressing Lemon in ways + ** that it has not been previously stressed... (SQLite ticket #2172) */ memset(&yygotominor, 0, sizeof(yygotominor)); -#endif + switch( yyruleno ){ /* Beginning here are the reduction cases. A typical example ** follows: @@ -1869,32 +1878,32 @@ static void yy_reduce( case 3: #line 100 "parse.y" { sqlite3FinishCoding(pParse); } -#line 1875 "parse.c" +#line 1884 "parse.c" break; case 6: #line 103 "parse.y" { sqlite3BeginParse(pParse, 0); } -#line 1880 "parse.c" +#line 1889 "parse.c" break; case 7: #line 105 "parse.y" { sqlite3BeginParse(pParse, 1); } -#line 1885 "parse.c" +#line 1894 "parse.c" break; case 8: #line 106 "parse.y" { sqlite3BeginParse(pParse, 2); } -#line 1890 "parse.c" +#line 1899 "parse.c" break; case 9: #line 112 "parse.y" -{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy46);} -#line 1895 "parse.c" +{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy316);} +#line 1904 "parse.c" break; case 13: #line 117 "parse.y" -{yygotominor.yy46 = TK_DEFERRED;} -#line 1900 "parse.c" +{yygotominor.yy316 = TK_DEFERRED;} +#line 1909 "parse.c" break; case 14: case 15: @@ -1902,26 +1911,26 @@ static void yy_reduce( case 107: case 109: #line 118 "parse.y" -{yygotominor.yy46 = yymsp[0].major;} -#line 1909 "parse.c" +{yygotominor.yy316 = yymsp[0].major;} +#line 1918 "parse.c" break; case 17: case 18: #line 121 "parse.y" {sqlite3CommitTransaction(pParse);} -#line 1915 "parse.c" +#line 1924 "parse.c" break; case 19: #line 123 "parse.y" {sqlite3RollbackTransaction(pParse);} -#line 1920 "parse.c" +#line 1929 "parse.c" break; case 21: #line 128 "parse.y" { - sqlite3StartTable(pParse,&yymsp[-1].minor.yy410,&yymsp[0].minor.yy410,yymsp[-4].minor.yy46,0,0,yymsp[-2].minor.yy46); + sqlite3StartTable(pParse,&yymsp[-1].minor.yy178,&yymsp[0].minor.yy178,yymsp[-4].minor.yy316,0,0,yymsp[-2].minor.yy316); } -#line 1927 "parse.c" +#line 1936 "parse.c" break; case 22: case 25: @@ -1935,8 +1944,8 @@ static void yy_reduce( case 213: case 216: #line 132 "parse.y" -{yygotominor.yy46 = 0;} -#line 1942 "parse.c" +{yygotominor.yy316 = 0;} +#line 1951 "parse.c" break; case 23: case 24: @@ -1947,54 +1956,54 @@ static void yy_reduce( case 214: case 217: #line 133 "parse.y" -{yygotominor.yy46 = 1;} -#line 1954 "parse.c" +{yygotominor.yy316 = 1;} +#line 1963 "parse.c" break; case 26: #line 139 "parse.y" { - sqlite3EndTable(pParse,&yymsp[-1].minor.yy410,&yymsp[0].minor.yy0,0); + sqlite3EndTable(pParse,&yymsp[-1].minor.yy178,&yymsp[0].minor.yy0,0); } -#line 1961 "parse.c" +#line 1970 "parse.c" break; case 27: #line 142 "parse.y" { - sqlite3EndTable(pParse,0,0,yymsp[0].minor.yy219); - sqlite3SelectDelete(yymsp[0].minor.yy219); + sqlite3EndTable(pParse,0,0,yymsp[0].minor.yy43); + sqlite3SelectDelete(yymsp[0].minor.yy43); } -#line 1969 "parse.c" +#line 1978 "parse.c" break; case 30: #line 154 "parse.y" { - yygotominor.yy410.z = yymsp[-2].minor.yy410.z; - yygotominor.yy410.n = (pParse->sLastToken.z-yymsp[-2].minor.yy410.z) + pParse->sLastToken.n; + yygotominor.yy178.z = yymsp[-2].minor.yy178.z; + yygotominor.yy178.n = (pParse->sLastToken.z-yymsp[-2].minor.yy178.z) + pParse->sLastToken.n; } -#line 1977 "parse.c" +#line 1986 "parse.c" break; case 31: #line 158 "parse.y" { - sqlite3AddColumn(pParse,&yymsp[0].minor.yy410); - yygotominor.yy410 = yymsp[0].minor.yy410; + sqlite3AddColumn(pParse,&yymsp[0].minor.yy178); + yygotominor.yy178 = yymsp[0].minor.yy178; } -#line 1985 "parse.c" +#line 1994 "parse.c" break; case 32: case 33: case 34: case 35: case 36: - case 253: + case 254: #line 168 "parse.y" -{yygotominor.yy410 = yymsp[0].minor.yy0;} -#line 1995 "parse.c" +{yygotominor.yy178 = yymsp[0].minor.yy0;} +#line 2004 "parse.c" break; case 38: #line 228 "parse.y" -{sqlite3AddColumnType(pParse,&yymsp[0].minor.yy410);} -#line 2000 "parse.c" +{sqlite3AddColumnType(pParse,&yymsp[0].minor.yy178);} +#line 2009 "parse.c" break; case 39: case 42: @@ -2003,154 +2012,156 @@ static void yy_reduce( case 131: case 150: case 241: + case 250: case 251: case 252: + case 253: #line 229 "parse.y" -{yygotominor.yy410 = yymsp[0].minor.yy410;} -#line 2013 "parse.c" +{yygotominor.yy178 = yymsp[0].minor.yy178;} +#line 2024 "parse.c" break; case 40: #line 230 "parse.y" { - yygotominor.yy410.z = yymsp[-3].minor.yy410.z; - yygotominor.yy410.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy410.z; + yygotominor.yy178.z = yymsp[-3].minor.yy178.z; + yygotominor.yy178.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy178.z; } -#line 2021 "parse.c" +#line 2032 "parse.c" break; case 41: #line 234 "parse.y" { - yygotominor.yy410.z = yymsp[-5].minor.yy410.z; - yygotominor.yy410.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy410.z; + yygotominor.yy178.z = yymsp[-5].minor.yy178.z; + yygotominor.yy178.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy178.z; } -#line 2029 "parse.c" +#line 2040 "parse.c" break; case 43: #line 240 "parse.y" -{yygotominor.yy410.z=yymsp[-1].minor.yy410.z; yygotominor.yy410.n=yymsp[0].minor.yy410.n+(yymsp[0].minor.yy410.z-yymsp[-1].minor.yy410.z);} -#line 2034 "parse.c" +{yygotominor.yy178.z=yymsp[-1].minor.yy178.z; yygotominor.yy178.n=yymsp[0].minor.yy178.n+(yymsp[0].minor.yy178.z-yymsp[-1].minor.yy178.z);} +#line 2045 "parse.c" break; case 44: #line 242 "parse.y" -{ yygotominor.yy46 = atoi((char*)yymsp[0].minor.yy410.z); } -#line 2039 "parse.c" +{ yygotominor.yy316 = atoi((char*)yymsp[0].minor.yy178.z); } +#line 2050 "parse.c" break; case 45: #line 243 "parse.y" -{ yygotominor.yy46 = -atoi((char*)yymsp[0].minor.yy410.z); } -#line 2044 "parse.c" +{ yygotominor.yy316 = -atoi((char*)yymsp[0].minor.yy178.z); } +#line 2055 "parse.c" break; case 50: case 52: #line 252 "parse.y" -{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy172);} -#line 2050 "parse.c" +{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy450);} +#line 2061 "parse.c" break; case 51: #line 253 "parse.y" -{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy172);} -#line 2055 "parse.c" +{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy450);} +#line 2066 "parse.c" break; case 53: #line 255 "parse.y" { - Expr *p = sqlite3Expr(TK_UMINUS, yymsp[0].minor.yy172, 0, 0); + Expr *p = sqlite3Expr(TK_UMINUS, yymsp[0].minor.yy450, 0, 0); sqlite3AddDefaultValue(pParse,p); } -#line 2063 "parse.c" +#line 2074 "parse.c" break; case 54: #line 259 "parse.y" { - Expr *p = sqlite3Expr(TK_STRING, 0, 0, &yymsp[0].minor.yy410); + Expr *p = sqlite3Expr(TK_STRING, 0, 0, &yymsp[0].minor.yy178); sqlite3AddDefaultValue(pParse,p); } -#line 2071 "parse.c" +#line 2082 "parse.c" break; case 56: #line 268 "parse.y" -{sqlite3AddNotNull(pParse, yymsp[0].minor.yy46);} -#line 2076 "parse.c" +{sqlite3AddNotNull(pParse, yymsp[0].minor.yy316);} +#line 2087 "parse.c" break; case 57: #line 270 "parse.y" -{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy46,yymsp[0].minor.yy46,yymsp[-2].minor.yy46);} -#line 2081 "parse.c" +{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy316,yymsp[0].minor.yy316,yymsp[-2].minor.yy316);} +#line 2092 "parse.c" break; case 58: #line 271 "parse.y" -{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy46,0,0,0,0);} -#line 2086 "parse.c" +{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy316,0,0,0,0);} +#line 2097 "parse.c" break; case 59: #line 272 "parse.y" -{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy172);} -#line 2091 "parse.c" +{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy450);} +#line 2102 "parse.c" break; case 60: #line 274 "parse.y" -{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy410,yymsp[-1].minor.yy174,yymsp[0].minor.yy46);} -#line 2096 "parse.c" +{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy178,yymsp[-1].minor.yy242,yymsp[0].minor.yy316);} +#line 2107 "parse.c" break; case 61: #line 275 "parse.y" -{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy46);} -#line 2101 "parse.c" +{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy316);} +#line 2112 "parse.c" break; case 62: #line 276 "parse.y" -{sqlite3AddCollateType(pParse, (char*)yymsp[0].minor.yy410.z, yymsp[0].minor.yy410.n);} -#line 2106 "parse.c" +{sqlite3AddCollateType(pParse, (char*)yymsp[0].minor.yy178.z, yymsp[0].minor.yy178.n);} +#line 2117 "parse.c" break; case 65: #line 289 "parse.y" -{ yygotominor.yy46 = OE_Restrict * 0x010101; } -#line 2111 "parse.c" +{ yygotominor.yy316 = OE_Restrict * 0x010101; } +#line 2122 "parse.c" break; case 66: #line 290 "parse.y" -{ yygotominor.yy46 = (yymsp[-1].minor.yy46 & yymsp[0].minor.yy405.mask) | yymsp[0].minor.yy405.value; } -#line 2116 "parse.c" +{ yygotominor.yy316 = (yymsp[-1].minor.yy316 & yymsp[0].minor.yy207.mask) | yymsp[0].minor.yy207.value; } +#line 2127 "parse.c" break; case 67: #line 292 "parse.y" -{ yygotominor.yy405.value = 0; yygotominor.yy405.mask = 0x000000; } -#line 2121 "parse.c" +{ yygotominor.yy207.value = 0; yygotominor.yy207.mask = 0x000000; } +#line 2132 "parse.c" break; case 68: #line 293 "parse.y" -{ yygotominor.yy405.value = yymsp[0].minor.yy46; yygotominor.yy405.mask = 0x0000ff; } -#line 2126 "parse.c" +{ yygotominor.yy207.value = yymsp[0].minor.yy316; yygotominor.yy207.mask = 0x0000ff; } +#line 2137 "parse.c" break; case 69: #line 294 "parse.y" -{ yygotominor.yy405.value = yymsp[0].minor.yy46<<8; yygotominor.yy405.mask = 0x00ff00; } -#line 2131 "parse.c" +{ yygotominor.yy207.value = yymsp[0].minor.yy316<<8; yygotominor.yy207.mask = 0x00ff00; } +#line 2142 "parse.c" break; case 70: #line 295 "parse.y" -{ yygotominor.yy405.value = yymsp[0].minor.yy46<<16; yygotominor.yy405.mask = 0xff0000; } -#line 2136 "parse.c" +{ yygotominor.yy207.value = yymsp[0].minor.yy316<<16; yygotominor.yy207.mask = 0xff0000; } +#line 2147 "parse.c" break; case 71: #line 297 "parse.y" -{ yygotominor.yy46 = OE_SetNull; } -#line 2141 "parse.c" +{ yygotominor.yy316 = OE_SetNull; } +#line 2152 "parse.c" break; case 72: #line 298 "parse.y" -{ yygotominor.yy46 = OE_SetDflt; } -#line 2146 "parse.c" +{ yygotominor.yy316 = OE_SetDflt; } +#line 2157 "parse.c" break; case 73: #line 299 "parse.y" -{ yygotominor.yy46 = OE_Cascade; } -#line 2151 "parse.c" +{ yygotominor.yy316 = OE_Cascade; } +#line 2162 "parse.c" break; case 74: #line 300 "parse.y" -{ yygotominor.yy46 = OE_Restrict; } -#line 2156 "parse.c" +{ yygotominor.yy316 = OE_Restrict; } +#line 2167 "parse.c" break; case 75: case 76: @@ -2160,236 +2171,236 @@ static void yy_reduce( case 96: case 168: #line 302 "parse.y" -{yygotominor.yy46 = yymsp[0].minor.yy46;} -#line 2167 "parse.c" +{yygotominor.yy316 = yymsp[0].minor.yy316;} +#line 2178 "parse.c" break; case 80: #line 312 "parse.y" -{yygotominor.yy410.n = 0; yygotominor.yy410.z = 0;} -#line 2172 "parse.c" +{yygotominor.yy178.n = 0; yygotominor.yy178.z = 0;} +#line 2183 "parse.c" break; case 81: #line 313 "parse.y" -{yygotominor.yy410 = yymsp[-1].minor.yy0;} -#line 2177 "parse.c" +{yygotominor.yy178 = yymsp[-1].minor.yy0;} +#line 2188 "parse.c" break; case 86: #line 319 "parse.y" -{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy174,yymsp[0].minor.yy46,yymsp[-2].minor.yy46,0);} -#line 2182 "parse.c" +{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy242,yymsp[0].minor.yy316,yymsp[-2].minor.yy316,0);} +#line 2193 "parse.c" break; case 87: #line 321 "parse.y" -{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy174,yymsp[0].minor.yy46,0,0,0,0);} -#line 2187 "parse.c" +{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy242,yymsp[0].minor.yy316,0,0,0,0);} +#line 2198 "parse.c" break; case 88: #line 322 "parse.y" -{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy172);} -#line 2192 "parse.c" +{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy450);} +#line 2203 "parse.c" break; case 89: #line 324 "parse.y" { - sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy174, &yymsp[-3].minor.yy410, yymsp[-2].minor.yy174, yymsp[-1].minor.yy46); - sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy46); + sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy242, &yymsp[-3].minor.yy178, yymsp[-2].minor.yy242, yymsp[-1].minor.yy316); + sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy316); } -#line 2200 "parse.c" +#line 2211 "parse.c" break; case 92: case 94: #line 338 "parse.y" -{yygotominor.yy46 = OE_Default;} -#line 2206 "parse.c" +{yygotominor.yy316 = OE_Default;} +#line 2217 "parse.c" break; case 97: #line 343 "parse.y" -{yygotominor.yy46 = OE_Ignore;} -#line 2211 "parse.c" +{yygotominor.yy316 = OE_Ignore;} +#line 2222 "parse.c" break; case 98: case 169: #line 344 "parse.y" -{yygotominor.yy46 = OE_Replace;} -#line 2217 "parse.c" +{yygotominor.yy316 = OE_Replace;} +#line 2228 "parse.c" break; case 99: #line 348 "parse.y" { - sqlite3DropTable(pParse, yymsp[0].minor.yy373, 0, yymsp[-1].minor.yy46); + sqlite3DropTable(pParse, yymsp[0].minor.yy419, 0, yymsp[-1].minor.yy316); } -#line 2224 "parse.c" +#line 2235 "parse.c" break; case 102: #line 358 "parse.y" { - sqlite3CreateView(pParse, &yymsp[-7].minor.yy0, &yymsp[-3].minor.yy410, &yymsp[-2].minor.yy410, yymsp[0].minor.yy219, yymsp[-6].minor.yy46, yymsp[-4].minor.yy46); + sqlite3CreateView(pParse, &yymsp[-7].minor.yy0, &yymsp[-3].minor.yy178, &yymsp[-2].minor.yy178, yymsp[0].minor.yy43, yymsp[-6].minor.yy316, yymsp[-4].minor.yy316); } -#line 2231 "parse.c" +#line 2242 "parse.c" break; case 103: #line 361 "parse.y" { - sqlite3DropTable(pParse, yymsp[0].minor.yy373, 1, yymsp[-1].minor.yy46); + sqlite3DropTable(pParse, yymsp[0].minor.yy419, 1, yymsp[-1].minor.yy316); } -#line 2238 "parse.c" +#line 2249 "parse.c" break; case 104: #line 368 "parse.y" { - sqlite3Select(pParse, yymsp[0].minor.yy219, SRT_Callback, 0, 0, 0, 0, 0); - sqlite3SelectDelete(yymsp[0].minor.yy219); + sqlite3Select(pParse, yymsp[0].minor.yy43, SRT_Callback, 0, 0, 0, 0, 0); + sqlite3SelectDelete(yymsp[0].minor.yy43); } -#line 2246 "parse.c" +#line 2257 "parse.c" break; case 105: case 128: #line 378 "parse.y" -{yygotominor.yy219 = yymsp[0].minor.yy219;} -#line 2252 "parse.c" +{yygotominor.yy43 = yymsp[0].minor.yy43;} +#line 2263 "parse.c" break; case 106: #line 380 "parse.y" { - if( yymsp[0].minor.yy219 ){ - yymsp[0].minor.yy219->op = yymsp[-1].minor.yy46; - yymsp[0].minor.yy219->pPrior = yymsp[-2].minor.yy219; + if( yymsp[0].minor.yy43 ){ + yymsp[0].minor.yy43->op = yymsp[-1].minor.yy316; + yymsp[0].minor.yy43->pPrior = yymsp[-2].minor.yy43; } - yygotominor.yy219 = yymsp[0].minor.yy219; + yygotominor.yy43 = yymsp[0].minor.yy43; } -#line 2263 "parse.c" +#line 2274 "parse.c" break; case 108: #line 389 "parse.y" -{yygotominor.yy46 = TK_ALL;} -#line 2268 "parse.c" +{yygotominor.yy316 = TK_ALL;} +#line 2279 "parse.c" break; case 110: #line 393 "parse.y" { - yygotominor.yy219 = sqlite3SelectNew(yymsp[-6].minor.yy174,yymsp[-5].minor.yy373,yymsp[-4].minor.yy172,yymsp[-3].minor.yy174,yymsp[-2].minor.yy172,yymsp[-1].minor.yy174,yymsp[-7].minor.yy46,yymsp[0].minor.yy234.pLimit,yymsp[0].minor.yy234.pOffset); + yygotominor.yy43 = sqlite3SelectNew(yymsp[-6].minor.yy242,yymsp[-5].minor.yy419,yymsp[-4].minor.yy450,yymsp[-3].minor.yy242,yymsp[-2].minor.yy450,yymsp[-1].minor.yy242,yymsp[-7].minor.yy316,yymsp[0].minor.yy84.pLimit,yymsp[0].minor.yy84.pOffset); } -#line 2275 "parse.c" +#line 2286 "parse.c" break; case 114: case 238: #line 414 "parse.y" -{yygotominor.yy174 = yymsp[-1].minor.yy174;} -#line 2281 "parse.c" +{yygotominor.yy242 = yymsp[-1].minor.yy242;} +#line 2292 "parse.c" break; case 115: case 141: case 151: case 237: #line 415 "parse.y" -{yygotominor.yy174 = 0;} -#line 2289 "parse.c" +{yygotominor.yy242 = 0;} +#line 2300 "parse.c" break; case 116: #line 416 "parse.y" { - yygotominor.yy174 = sqlite3ExprListAppend(yymsp[-2].minor.yy174,yymsp[-1].minor.yy172,yymsp[0].minor.yy410.n?&yymsp[0].minor.yy410:0); + yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-2].minor.yy242,yymsp[-1].minor.yy450,yymsp[0].minor.yy178.n?&yymsp[0].minor.yy178:0); } -#line 2296 "parse.c" +#line 2307 "parse.c" break; case 117: #line 419 "parse.y" { - yygotominor.yy174 = sqlite3ExprListAppend(yymsp[-1].minor.yy174, sqlite3Expr(TK_ALL, 0, 0, 0), 0); + yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-1].minor.yy242, sqlite3Expr(TK_ALL, 0, 0, 0), 0); } -#line 2303 "parse.c" +#line 2314 "parse.c" break; case 118: #line 422 "parse.y" { Expr *pRight = sqlite3Expr(TK_ALL, 0, 0, 0); - Expr *pLeft = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy410); - yygotominor.yy174 = sqlite3ExprListAppend(yymsp[-3].minor.yy174, sqlite3Expr(TK_DOT, pLeft, pRight, 0), 0); + Expr *pLeft = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy178); + yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-3].minor.yy242, sqlite3Expr(TK_DOT, pLeft, pRight, 0), 0); } -#line 2312 "parse.c" +#line 2323 "parse.c" break; case 121: #line 434 "parse.y" -{yygotominor.yy410.n = 0;} -#line 2317 "parse.c" +{yygotominor.yy178.n = 0;} +#line 2328 "parse.c" break; case 122: #line 446 "parse.y" -{yygotominor.yy373 = sqliteMalloc(sizeof(*yygotominor.yy373));} -#line 2322 "parse.c" +{yygotominor.yy419 = sqliteMalloc(sizeof(*yygotominor.yy419));} +#line 2333 "parse.c" break; case 123: #line 447 "parse.y" { - yygotominor.yy373 = yymsp[0].minor.yy373; - sqlite3SrcListShiftJoinType(yygotominor.yy373); + yygotominor.yy419 = yymsp[0].minor.yy419; + sqlite3SrcListShiftJoinType(yygotominor.yy419); } -#line 2330 "parse.c" +#line 2341 "parse.c" break; case 124: #line 455 "parse.y" { - yygotominor.yy373 = yymsp[-1].minor.yy373; - if( yygotominor.yy373 && yygotominor.yy373->nSrc>0 ) yygotominor.yy373->a[yygotominor.yy373->nSrc-1].jointype = yymsp[0].minor.yy46; + yygotominor.yy419 = yymsp[-1].minor.yy419; + if( yygotominor.yy419 && yygotominor.yy419->nSrc>0 ) yygotominor.yy419->a[yygotominor.yy419->nSrc-1].jointype = yymsp[0].minor.yy316; } -#line 2338 "parse.c" +#line 2349 "parse.c" break; case 125: #line 459 "parse.y" -{yygotominor.yy373 = 0;} -#line 2343 "parse.c" +{yygotominor.yy419 = 0;} +#line 2354 "parse.c" break; case 126: #line 460 "parse.y" { - yygotominor.yy373 = sqlite3SrcListAppendFromTerm(yymsp[-5].minor.yy373,&yymsp[-4].minor.yy410,&yymsp[-3].minor.yy410,&yymsp[-2].minor.yy410,0,yymsp[-1].minor.yy172,yymsp[0].minor.yy432); + yygotominor.yy419 = sqlite3SrcListAppendFromTerm(yymsp[-5].minor.yy419,&yymsp[-4].minor.yy178,&yymsp[-3].minor.yy178,&yymsp[-2].minor.yy178,0,yymsp[-1].minor.yy450,yymsp[0].minor.yy352); } -#line 2350 "parse.c" +#line 2361 "parse.c" break; case 127: #line 465 "parse.y" { - yygotominor.yy373 = sqlite3SrcListAppendFromTerm(yymsp[-6].minor.yy373,0,0,&yymsp[-2].minor.yy410,yymsp[-4].minor.yy219,yymsp[-1].minor.yy172,yymsp[0].minor.yy432); + yygotominor.yy419 = sqlite3SrcListAppendFromTerm(yymsp[-6].minor.yy419,0,0,&yymsp[-2].minor.yy178,yymsp[-4].minor.yy43,yymsp[-1].minor.yy450,yymsp[0].minor.yy352); } -#line 2357 "parse.c" +#line 2368 "parse.c" break; case 129: #line 476 "parse.y" { - sqlite3SrcListShiftJoinType(yymsp[0].minor.yy373); - yygotominor.yy219 = sqlite3SelectNew(0,yymsp[0].minor.yy373,0,0,0,0,0,0,0); + sqlite3SrcListShiftJoinType(yymsp[0].minor.yy419); + yygotominor.yy43 = sqlite3SelectNew(0,yymsp[0].minor.yy419,0,0,0,0,0,0,0); } -#line 2365 "parse.c" +#line 2376 "parse.c" break; case 130: #line 483 "parse.y" -{yygotominor.yy410.z=0; yygotominor.yy410.n=0;} -#line 2370 "parse.c" +{yygotominor.yy178.z=0; yygotominor.yy178.n=0;} +#line 2381 "parse.c" break; case 132: #line 488 "parse.y" -{yygotominor.yy373 = sqlite3SrcListAppend(0,&yymsp[-1].minor.yy410,&yymsp[0].minor.yy410);} -#line 2375 "parse.c" +{yygotominor.yy419 = sqlite3SrcListAppend(0,&yymsp[-1].minor.yy178,&yymsp[0].minor.yy178);} +#line 2386 "parse.c" break; case 133: #line 492 "parse.y" -{ yygotominor.yy46 = JT_INNER; } -#line 2380 "parse.c" +{ yygotominor.yy316 = JT_INNER; } +#line 2391 "parse.c" break; case 134: #line 493 "parse.y" -{ yygotominor.yy46 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); } -#line 2385 "parse.c" +{ yygotominor.yy316 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); } +#line 2396 "parse.c" break; case 135: #line 494 "parse.y" -{ yygotominor.yy46 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy410,0); } -#line 2390 "parse.c" +{ yygotominor.yy316 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy178,0); } +#line 2401 "parse.c" break; case 136: #line 496 "parse.y" -{ yygotominor.yy46 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy410,&yymsp[-1].minor.yy410); } -#line 2395 "parse.c" +{ yygotominor.yy316 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy178,&yymsp[-1].minor.yy178); } +#line 2406 "parse.c" break; case 137: case 145: @@ -2401,8 +2412,8 @@ static void yy_reduce( case 228: case 232: #line 500 "parse.y" -{yygotominor.yy172 = yymsp[0].minor.yy172;} -#line 2408 "parse.c" +{yygotominor.yy450 = yymsp[0].minor.yy450;} +#line 2419 "parse.c" break; case 138: case 153: @@ -2412,227 +2423,227 @@ static void yy_reduce( case 229: case 233: #line 501 "parse.y" -{yygotominor.yy172 = 0;} -#line 2419 "parse.c" +{yygotominor.yy450 = 0;} +#line 2430 "parse.c" break; case 139: case 173: #line 505 "parse.y" -{yygotominor.yy432 = yymsp[-1].minor.yy432;} -#line 2425 "parse.c" +{yygotominor.yy352 = yymsp[-1].minor.yy352;} +#line 2436 "parse.c" break; case 140: case 172: #line 506 "parse.y" -{yygotominor.yy432 = 0;} -#line 2431 "parse.c" +{yygotominor.yy352 = 0;} +#line 2442 "parse.c" break; case 142: case 152: #line 517 "parse.y" -{yygotominor.yy174 = yymsp[0].minor.yy174;} -#line 2437 "parse.c" +{yygotominor.yy242 = yymsp[0].minor.yy242;} +#line 2448 "parse.c" break; case 143: #line 518 "parse.y" { - yygotominor.yy174 = sqlite3ExprListAppend(yymsp[-4].minor.yy174,yymsp[-2].minor.yy172,yymsp[-1].minor.yy410.n>0?&yymsp[-1].minor.yy410:0); - if( yygotominor.yy174 ) yygotominor.yy174->a[yygotominor.yy174->nExpr-1].sortOrder = yymsp[0].minor.yy46; + yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-4].minor.yy242,yymsp[-2].minor.yy450,yymsp[-1].minor.yy178.n>0?&yymsp[-1].minor.yy178:0); + if( yygotominor.yy242 ) yygotominor.yy242->a[yygotominor.yy242->nExpr-1].sortOrder = yymsp[0].minor.yy316; } -#line 2445 "parse.c" +#line 2456 "parse.c" break; case 144: #line 522 "parse.y" { - yygotominor.yy174 = sqlite3ExprListAppend(0,yymsp[-2].minor.yy172,yymsp[-1].minor.yy410.n>0?&yymsp[-1].minor.yy410:0); - if( yygotominor.yy174 && yygotominor.yy174->a ) yygotominor.yy174->a[0].sortOrder = yymsp[0].minor.yy46; + yygotominor.yy242 = sqlite3ExprListAppend(0,yymsp[-2].minor.yy450,yymsp[-1].minor.yy178.n>0?&yymsp[-1].minor.yy178:0); + if( yygotominor.yy242 && yygotominor.yy242->a ) yygotominor.yy242->a[0].sortOrder = yymsp[0].minor.yy316; } -#line 2453 "parse.c" +#line 2464 "parse.c" break; case 146: case 148: #line 531 "parse.y" -{yygotominor.yy46 = SQLITE_SO_ASC;} -#line 2459 "parse.c" +{yygotominor.yy316 = SQLITE_SO_ASC;} +#line 2470 "parse.c" break; case 147: #line 532 "parse.y" -{yygotominor.yy46 = SQLITE_SO_DESC;} -#line 2464 "parse.c" +{yygotominor.yy316 = SQLITE_SO_DESC;} +#line 2475 "parse.c" break; case 149: #line 534 "parse.y" -{yygotominor.yy410.z = 0; yygotominor.yy410.n = 0;} -#line 2469 "parse.c" +{yygotominor.yy178.z = 0; yygotominor.yy178.n = 0;} +#line 2480 "parse.c" break; case 155: #line 552 "parse.y" -{yygotominor.yy234.pLimit = 0; yygotominor.yy234.pOffset = 0;} -#line 2474 "parse.c" +{yygotominor.yy84.pLimit = 0; yygotominor.yy84.pOffset = 0;} +#line 2485 "parse.c" break; case 156: #line 553 "parse.y" -{yygotominor.yy234.pLimit = yymsp[0].minor.yy172; yygotominor.yy234.pOffset = 0;} -#line 2479 "parse.c" +{yygotominor.yy84.pLimit = yymsp[0].minor.yy450; yygotominor.yy84.pOffset = 0;} +#line 2490 "parse.c" break; case 157: #line 555 "parse.y" -{yygotominor.yy234.pLimit = yymsp[-2].minor.yy172; yygotominor.yy234.pOffset = yymsp[0].minor.yy172;} -#line 2484 "parse.c" +{yygotominor.yy84.pLimit = yymsp[-2].minor.yy450; yygotominor.yy84.pOffset = yymsp[0].minor.yy450;} +#line 2495 "parse.c" break; case 158: #line 557 "parse.y" -{yygotominor.yy234.pOffset = yymsp[-2].minor.yy172; yygotominor.yy234.pLimit = yymsp[0].minor.yy172;} -#line 2489 "parse.c" +{yygotominor.yy84.pOffset = yymsp[-2].minor.yy450; yygotominor.yy84.pLimit = yymsp[0].minor.yy450;} +#line 2500 "parse.c" break; case 159: #line 561 "parse.y" -{sqlite3DeleteFrom(pParse,yymsp[-1].minor.yy373,yymsp[0].minor.yy172);} -#line 2494 "parse.c" +{sqlite3DeleteFrom(pParse,yymsp[-1].minor.yy419,yymsp[0].minor.yy450);} +#line 2505 "parse.c" break; case 162: #line 572 "parse.y" -{sqlite3Update(pParse,yymsp[-3].minor.yy373,yymsp[-1].minor.yy174,yymsp[0].minor.yy172,yymsp[-4].minor.yy46);} -#line 2499 "parse.c" +{sqlite3Update(pParse,yymsp[-3].minor.yy419,yymsp[-1].minor.yy242,yymsp[0].minor.yy450,yymsp[-4].minor.yy316);} +#line 2510 "parse.c" break; case 163: #line 578 "parse.y" -{yygotominor.yy174 = sqlite3ExprListAppend(yymsp[-4].minor.yy174,yymsp[0].minor.yy172,&yymsp[-2].minor.yy410);} -#line 2504 "parse.c" +{yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-4].minor.yy242,yymsp[0].minor.yy450,&yymsp[-2].minor.yy178);} +#line 2515 "parse.c" break; case 164: #line 579 "parse.y" -{yygotominor.yy174 = sqlite3ExprListAppend(0,yymsp[0].minor.yy172,&yymsp[-2].minor.yy410);} -#line 2509 "parse.c" +{yygotominor.yy242 = sqlite3ExprListAppend(0,yymsp[0].minor.yy450,&yymsp[-2].minor.yy178);} +#line 2520 "parse.c" break; case 165: #line 585 "parse.y" -{sqlite3Insert(pParse, yymsp[-5].minor.yy373, yymsp[-1].minor.yy174, 0, yymsp[-4].minor.yy432, yymsp[-7].minor.yy46);} -#line 2514 "parse.c" +{sqlite3Insert(pParse, yymsp[-5].minor.yy419, yymsp[-1].minor.yy242, 0, yymsp[-4].minor.yy352, yymsp[-7].minor.yy316);} +#line 2525 "parse.c" break; case 166: #line 587 "parse.y" -{sqlite3Insert(pParse, yymsp[-2].minor.yy373, 0, yymsp[0].minor.yy219, yymsp[-1].minor.yy432, yymsp[-4].minor.yy46);} -#line 2519 "parse.c" +{sqlite3Insert(pParse, yymsp[-2].minor.yy419, 0, yymsp[0].minor.yy43, yymsp[-1].minor.yy352, yymsp[-4].minor.yy316);} +#line 2530 "parse.c" break; case 167: #line 589 "parse.y" -{sqlite3Insert(pParse, yymsp[-3].minor.yy373, 0, 0, yymsp[-2].minor.yy432, yymsp[-5].minor.yy46);} -#line 2524 "parse.c" +{sqlite3Insert(pParse, yymsp[-3].minor.yy419, 0, 0, yymsp[-2].minor.yy352, yymsp[-5].minor.yy316);} +#line 2535 "parse.c" break; case 170: case 230: #line 599 "parse.y" -{yygotominor.yy174 = sqlite3ExprListAppend(yymsp[-2].minor.yy174,yymsp[0].minor.yy172,0);} -#line 2530 "parse.c" +{yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-2].minor.yy242,yymsp[0].minor.yy450,0);} +#line 2541 "parse.c" break; case 171: case 231: #line 600 "parse.y" -{yygotominor.yy174 = sqlite3ExprListAppend(0,yymsp[0].minor.yy172,0);} -#line 2536 "parse.c" +{yygotominor.yy242 = sqlite3ExprListAppend(0,yymsp[0].minor.yy450,0);} +#line 2547 "parse.c" break; case 174: #line 609 "parse.y" -{yygotominor.yy432 = sqlite3IdListAppend(yymsp[-2].minor.yy432,&yymsp[0].minor.yy410);} -#line 2541 "parse.c" +{yygotominor.yy352 = sqlite3IdListAppend(yymsp[-2].minor.yy352,&yymsp[0].minor.yy178);} +#line 2552 "parse.c" break; case 175: #line 610 "parse.y" -{yygotominor.yy432 = sqlite3IdListAppend(0,&yymsp[0].minor.yy410);} -#line 2546 "parse.c" +{yygotominor.yy352 = sqlite3IdListAppend(0,&yymsp[0].minor.yy178);} +#line 2557 "parse.c" break; case 177: #line 621 "parse.y" -{yygotominor.yy172 = yymsp[-1].minor.yy172; sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); } -#line 2551 "parse.c" +{yygotominor.yy450 = yymsp[-1].minor.yy450; sqlite3ExprSpan(yygotominor.yy450,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); } +#line 2562 "parse.c" break; case 178: case 183: case 184: #line 622 "parse.y" -{yygotominor.yy172 = sqlite3Expr(yymsp[0].major, 0, 0, &yymsp[0].minor.yy0);} -#line 2558 "parse.c" +{yygotominor.yy450 = sqlite3Expr(yymsp[0].major, 0, 0, &yymsp[0].minor.yy0);} +#line 2569 "parse.c" break; case 179: case 180: #line 623 "parse.y" -{yygotominor.yy172 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy0);} -#line 2564 "parse.c" +{yygotominor.yy450 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy0);} +#line 2575 "parse.c" break; case 181: #line 625 "parse.y" { - Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy410); - Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy410); - yygotominor.yy172 = sqlite3Expr(TK_DOT, temp1, temp2, 0); + Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy178); + Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy178); + yygotominor.yy450 = sqlite3Expr(TK_DOT, temp1, temp2, 0); } -#line 2573 "parse.c" +#line 2584 "parse.c" break; case 182: #line 630 "parse.y" { - Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-4].minor.yy410); - Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy410); - Expr *temp3 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy410); + Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-4].minor.yy178); + Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy178); + Expr *temp3 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy178); Expr *temp4 = sqlite3Expr(TK_DOT, temp2, temp3, 0); - yygotominor.yy172 = sqlite3Expr(TK_DOT, temp1, temp4, 0); + yygotominor.yy450 = sqlite3Expr(TK_DOT, temp1, temp4, 0); } -#line 2584 "parse.c" +#line 2595 "parse.c" break; case 185: #line 639 "parse.y" -{yygotominor.yy172 = sqlite3RegisterExpr(pParse, &yymsp[0].minor.yy0);} -#line 2589 "parse.c" +{yygotominor.yy450 = sqlite3RegisterExpr(pParse, &yymsp[0].minor.yy0);} +#line 2600 "parse.c" break; case 186: #line 640 "parse.y" { Token *pToken = &yymsp[0].minor.yy0; - Expr *pExpr = yygotominor.yy172 = sqlite3Expr(TK_VARIABLE, 0, 0, pToken); + Expr *pExpr = yygotominor.yy450 = sqlite3Expr(TK_VARIABLE, 0, 0, pToken); sqlite3ExprAssignVarNumber(pParse, pExpr); } -#line 2598 "parse.c" +#line 2609 "parse.c" break; case 187: #line 646 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_CAST, yymsp[-3].minor.yy172, 0, &yymsp[-1].minor.yy410); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0); + yygotominor.yy450 = sqlite3Expr(TK_CAST, yymsp[-3].minor.yy450, 0, &yymsp[-1].minor.yy178); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0); } -#line 2606 "parse.c" +#line 2617 "parse.c" break; case 188: #line 651 "parse.y" { - yygotominor.yy172 = sqlite3ExprFunction(yymsp[-1].minor.yy174, &yymsp[-4].minor.yy0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0); - if( yymsp[-2].minor.yy46 && yygotominor.yy172 ){ - yygotominor.yy172->flags |= EP_Distinct; + yygotominor.yy450 = sqlite3ExprFunction(yymsp[-1].minor.yy242, &yymsp[-4].minor.yy0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0); + if( yymsp[-2].minor.yy316 && yygotominor.yy450 ){ + yygotominor.yy450->flags |= EP_Distinct; } } -#line 2617 "parse.c" +#line 2628 "parse.c" break; case 189: #line 658 "parse.y" { - yygotominor.yy172 = sqlite3ExprFunction(0, &yymsp[-3].minor.yy0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); + yygotominor.yy450 = sqlite3ExprFunction(0, &yymsp[-3].minor.yy0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); } -#line 2625 "parse.c" +#line 2636 "parse.c" break; case 190: #line 662 "parse.y" { /* The CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP values are ** treated as functions that return constants */ - yygotominor.yy172 = sqlite3ExprFunction(0,&yymsp[0].minor.yy0); - if( yygotominor.yy172 ){ - yygotominor.yy172->op = TK_CONST_FUNC; - yygotominor.yy172->span = yymsp[0].minor.yy0; + yygotominor.yy450 = sqlite3ExprFunction(0,&yymsp[0].minor.yy0); + if( yygotominor.yy450 ){ + yygotominor.yy450->op = TK_CONST_FUNC; + yygotominor.yy450->span = yymsp[0].minor.yy0; } } -#line 2638 "parse.c" +#line 2649 "parse.c" break; case 191: case 192: @@ -2643,533 +2654,532 @@ static void yy_reduce( case 197: case 198: #line 671 "parse.y" -{yygotominor.yy172 = sqlite3Expr(yymsp[-1].major, yymsp[-2].minor.yy172, yymsp[0].minor.yy172, 0);} -#line 2650 "parse.c" +{yygotominor.yy450 = sqlite3Expr(yymsp[-1].major, yymsp[-2].minor.yy450, yymsp[0].minor.yy450, 0);} +#line 2661 "parse.c" break; case 199: case 201: #line 681 "parse.y" -{yygotominor.yy72.eOperator = yymsp[0].minor.yy0; yygotominor.yy72.not = 0;} -#line 2656 "parse.c" +{yygotominor.yy86.eOperator = yymsp[0].minor.yy0; yygotominor.yy86.not = 0;} +#line 2667 "parse.c" break; case 200: case 202: #line 682 "parse.y" -{yygotominor.yy72.eOperator = yymsp[0].minor.yy0; yygotominor.yy72.not = 1;} -#line 2662 "parse.c" +{yygotominor.yy86.eOperator = yymsp[0].minor.yy0; yygotominor.yy86.not = 1;} +#line 2673 "parse.c" break; case 205: #line 689 "parse.y" { ExprList *pList; - pList = sqlite3ExprListAppend(0, yymsp[-1].minor.yy172, 0); - pList = sqlite3ExprListAppend(pList, yymsp[-3].minor.yy172, 0); - if( yymsp[0].minor.yy172 ){ - pList = sqlite3ExprListAppend(pList, yymsp[0].minor.yy172, 0); + pList = sqlite3ExprListAppend(0, yymsp[-1].minor.yy450, 0); + pList = sqlite3ExprListAppend(pList, yymsp[-3].minor.yy450, 0); + if( yymsp[0].minor.yy450 ){ + pList = sqlite3ExprListAppend(pList, yymsp[0].minor.yy450, 0); } - yygotominor.yy172 = sqlite3ExprFunction(pList, &yymsp[-2].minor.yy72.eOperator); - if( yymsp[-2].minor.yy72.not ) yygotominor.yy172 = sqlite3Expr(TK_NOT, yygotominor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172, &yymsp[-3].minor.yy172->span, &yymsp[-1].minor.yy172->span); - if( yygotominor.yy172 ) yygotominor.yy172->flags |= EP_InfixFunc; + yygotominor.yy450 = sqlite3ExprFunction(pList, &yymsp[-2].minor.yy86.eOperator); + if( yymsp[-2].minor.yy86.not ) yygotominor.yy450 = sqlite3Expr(TK_NOT, yygotominor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450, &yymsp[-3].minor.yy450->span, &yymsp[-1].minor.yy450->span); + if( yygotominor.yy450 ) yygotominor.yy450->flags |= EP_InfixFunc; } -#line 2678 "parse.c" +#line 2689 "parse.c" break; case 206: #line 702 "parse.y" { - yygotominor.yy172 = sqlite3Expr(yymsp[0].major, yymsp[-1].minor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy172->span,&yymsp[0].minor.yy0); + yygotominor.yy450 = sqlite3Expr(yymsp[0].major, yymsp[-1].minor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-1].minor.yy450->span,&yymsp[0].minor.yy0); } -#line 2686 "parse.c" +#line 2697 "parse.c" break; case 207: #line 706 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_ISNULL, yymsp[-2].minor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy172->span,&yymsp[0].minor.yy0); + yygotominor.yy450 = sqlite3Expr(TK_ISNULL, yymsp[-2].minor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-2].minor.yy450->span,&yymsp[0].minor.yy0); } -#line 2694 "parse.c" +#line 2705 "parse.c" break; case 208: #line 710 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_NOTNULL, yymsp[-2].minor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy172->span,&yymsp[0].minor.yy0); + yygotominor.yy450 = sqlite3Expr(TK_NOTNULL, yymsp[-2].minor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-2].minor.yy450->span,&yymsp[0].minor.yy0); } -#line 2702 "parse.c" +#line 2713 "parse.c" break; case 209: #line 714 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_NOTNULL, yymsp[-3].minor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-3].minor.yy172->span,&yymsp[0].minor.yy0); + yygotominor.yy450 = sqlite3Expr(TK_NOTNULL, yymsp[-3].minor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-3].minor.yy450->span,&yymsp[0].minor.yy0); } -#line 2710 "parse.c" +#line 2721 "parse.c" break; case 210: #line 718 "parse.y" { - yygotominor.yy172 = sqlite3Expr(yymsp[-1].major, yymsp[0].minor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy172->span); + yygotominor.yy450 = sqlite3Expr(yymsp[-1].major, yymsp[0].minor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy450->span); } -#line 2718 "parse.c" +#line 2729 "parse.c" break; case 211: #line 722 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_UMINUS, yymsp[0].minor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy172->span); + yygotominor.yy450 = sqlite3Expr(TK_UMINUS, yymsp[0].minor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy450->span); } -#line 2726 "parse.c" +#line 2737 "parse.c" break; case 212: #line 726 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_UPLUS, yymsp[0].minor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy172->span); + yygotominor.yy450 = sqlite3Expr(TK_UPLUS, yymsp[0].minor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy450->span); } -#line 2734 "parse.c" +#line 2745 "parse.c" break; case 215: #line 733 "parse.y" { - ExprList *pList = sqlite3ExprListAppend(0, yymsp[-2].minor.yy172, 0); - pList = sqlite3ExprListAppend(pList, yymsp[0].minor.yy172, 0); - yygotominor.yy172 = sqlite3Expr(TK_BETWEEN, yymsp[-4].minor.yy172, 0, 0); - if( yygotominor.yy172 ){ - yygotominor.yy172->pList = pList; + ExprList *pList = sqlite3ExprListAppend(0, yymsp[-2].minor.yy450, 0); + pList = sqlite3ExprListAppend(pList, yymsp[0].minor.yy450, 0); + yygotominor.yy450 = sqlite3Expr(TK_BETWEEN, yymsp[-4].minor.yy450, 0, 0); + if( yygotominor.yy450 ){ + yygotominor.yy450->pList = pList; }else{ sqlite3ExprListDelete(pList); } - if( yymsp[-3].minor.yy46 ) yygotominor.yy172 = sqlite3Expr(TK_NOT, yygotominor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy172->span,&yymsp[0].minor.yy172->span); + if( yymsp[-3].minor.yy316 ) yygotominor.yy450 = sqlite3Expr(TK_NOT, yygotominor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-4].minor.yy450->span,&yymsp[0].minor.yy450->span); } -#line 2750 "parse.c" +#line 2761 "parse.c" break; case 218: #line 749 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_IN, yymsp[-4].minor.yy172, 0, 0); - if( yygotominor.yy172 ){ - yygotominor.yy172->pList = yymsp[-1].minor.yy174; + yygotominor.yy450 = sqlite3Expr(TK_IN, yymsp[-4].minor.yy450, 0, 0); + if( yygotominor.yy450 ){ + yygotominor.yy450->pList = yymsp[-1].minor.yy242; }else{ - sqlite3ExprListDelete(yymsp[-1].minor.yy174); + sqlite3ExprListDelete(yymsp[-1].minor.yy242); } - if( yymsp[-3].minor.yy46 ) yygotominor.yy172 = sqlite3Expr(TK_NOT, yygotominor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy172->span,&yymsp[0].minor.yy0); + if( yymsp[-3].minor.yy316 ) yygotominor.yy450 = sqlite3Expr(TK_NOT, yygotominor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-4].minor.yy450->span,&yymsp[0].minor.yy0); } -#line 2764 "parse.c" +#line 2775 "parse.c" break; case 219: #line 759 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_SELECT, 0, 0, 0); - if( yygotominor.yy172 ){ - yygotominor.yy172->pSelect = yymsp[-1].minor.yy219; + yygotominor.yy450 = sqlite3Expr(TK_SELECT, 0, 0, 0); + if( yygotominor.yy450 ){ + yygotominor.yy450->pSelect = yymsp[-1].minor.yy43; }else{ - sqlite3SelectDelete(yymsp[-1].minor.yy219); + sqlite3SelectDelete(yymsp[-1].minor.yy43); } - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); } -#line 2777 "parse.c" +#line 2788 "parse.c" break; case 220: #line 768 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_IN, yymsp[-4].minor.yy172, 0, 0); - if( yygotominor.yy172 ){ - yygotominor.yy172->pSelect = yymsp[-1].minor.yy219; + yygotominor.yy450 = sqlite3Expr(TK_IN, yymsp[-4].minor.yy450, 0, 0); + if( yygotominor.yy450 ){ + yygotominor.yy450->pSelect = yymsp[-1].minor.yy43; }else{ - sqlite3SelectDelete(yymsp[-1].minor.yy219); + sqlite3SelectDelete(yymsp[-1].minor.yy43); } - if( yymsp[-3].minor.yy46 ) yygotominor.yy172 = sqlite3Expr(TK_NOT, yygotominor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy172->span,&yymsp[0].minor.yy0); + if( yymsp[-3].minor.yy316 ) yygotominor.yy450 = sqlite3Expr(TK_NOT, yygotominor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-4].minor.yy450->span,&yymsp[0].minor.yy0); } -#line 2791 "parse.c" +#line 2802 "parse.c" break; case 221: #line 778 "parse.y" { - SrcList *pSrc = sqlite3SrcListAppend(0,&yymsp[-1].minor.yy410,&yymsp[0].minor.yy410); - yygotominor.yy172 = sqlite3Expr(TK_IN, yymsp[-3].minor.yy172, 0, 0); - if( yygotominor.yy172 ){ - yygotominor.yy172->pSelect = sqlite3SelectNew(0,pSrc,0,0,0,0,0,0,0); + SrcList *pSrc = sqlite3SrcListAppend(0,&yymsp[-1].minor.yy178,&yymsp[0].minor.yy178); + yygotominor.yy450 = sqlite3Expr(TK_IN, yymsp[-3].minor.yy450, 0, 0); + if( yygotominor.yy450 ){ + yygotominor.yy450->pSelect = sqlite3SelectNew(0,pSrc,0,0,0,0,0,0,0); }else{ sqlite3SrcListDelete(pSrc); } - if( yymsp[-2].minor.yy46 ) yygotominor.yy172 = sqlite3Expr(TK_NOT, yygotominor.yy172, 0, 0); - sqlite3ExprSpan(yygotominor.yy172,&yymsp[-3].minor.yy172->span,yymsp[0].minor.yy410.z?&yymsp[0].minor.yy410:&yymsp[-1].minor.yy410); + if( yymsp[-2].minor.yy316 ) yygotominor.yy450 = sqlite3Expr(TK_NOT, yygotominor.yy450, 0, 0); + sqlite3ExprSpan(yygotominor.yy450,&yymsp[-3].minor.yy450->span,yymsp[0].minor.yy178.z?&yymsp[0].minor.yy178:&yymsp[-1].minor.yy178); } -#line 2806 "parse.c" +#line 2817 "parse.c" break; case 222: #line 789 "parse.y" { - Expr *p = yygotominor.yy172 = sqlite3Expr(TK_EXISTS, 0, 0, 0); + Expr *p = yygotominor.yy450 = sqlite3Expr(TK_EXISTS, 0, 0, 0); if( p ){ - p->pSelect = yymsp[-1].minor.yy219; + p->pSelect = yymsp[-1].minor.yy43; sqlite3ExprSpan(p,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); }else{ - sqlite3SelectDelete(yymsp[-1].minor.yy219); + sqlite3SelectDelete(yymsp[-1].minor.yy43); } } -#line 2819 "parse.c" +#line 2830 "parse.c" break; case 223: #line 801 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_CASE, yymsp[-3].minor.yy172, yymsp[-1].minor.yy172, 0); - if( yygotominor.yy172 ){ - yygotominor.yy172->pList = yymsp[-2].minor.yy174; + yygotominor.yy450 = sqlite3Expr(TK_CASE, yymsp[-3].minor.yy450, yymsp[-1].minor.yy450, 0); + if( yygotominor.yy450 ){ + yygotominor.yy450->pList = yymsp[-2].minor.yy242; }else{ - sqlite3ExprListDelete(yymsp[-2].minor.yy174); + sqlite3ExprListDelete(yymsp[-2].minor.yy242); } - sqlite3ExprSpan(yygotominor.yy172, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0); + sqlite3ExprSpan(yygotominor.yy450, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0); } -#line 2832 "parse.c" +#line 2843 "parse.c" break; case 224: #line 812 "parse.y" { - yygotominor.yy174 = sqlite3ExprListAppend(yymsp[-4].minor.yy174, yymsp[-2].minor.yy172, 0); - yygotominor.yy174 = sqlite3ExprListAppend(yygotominor.yy174, yymsp[0].minor.yy172, 0); + yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-4].minor.yy242, yymsp[-2].minor.yy450, 0); + yygotominor.yy242 = sqlite3ExprListAppend(yygotominor.yy242, yymsp[0].minor.yy450, 0); } -#line 2840 "parse.c" +#line 2851 "parse.c" break; case 225: #line 816 "parse.y" { - yygotominor.yy174 = sqlite3ExprListAppend(0, yymsp[-2].minor.yy172, 0); - yygotominor.yy174 = sqlite3ExprListAppend(yygotominor.yy174, yymsp[0].minor.yy172, 0); + yygotominor.yy242 = sqlite3ExprListAppend(0, yymsp[-2].minor.yy450, 0); + yygotominor.yy242 = sqlite3ExprListAppend(yygotominor.yy242, yymsp[0].minor.yy450, 0); } -#line 2848 "parse.c" +#line 2859 "parse.c" break; case 234: #line 843 "parse.y" { - sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy410, &yymsp[-5].minor.yy410, sqlite3SrcListAppend(0,&yymsp[-3].minor.yy410,0), yymsp[-1].minor.yy174, yymsp[-9].minor.yy46, - &yymsp[-10].minor.yy0, &yymsp[0].minor.yy0, SQLITE_SO_ASC, yymsp[-7].minor.yy46); + sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy178, &yymsp[-5].minor.yy178, sqlite3SrcListAppend(0,&yymsp[-3].minor.yy178,0), yymsp[-1].minor.yy242, yymsp[-9].minor.yy316, + &yymsp[-10].minor.yy0, &yymsp[0].minor.yy0, SQLITE_SO_ASC, yymsp[-7].minor.yy316); } -#line 2856 "parse.c" +#line 2867 "parse.c" break; case 235: - case 280: + case 281: #line 849 "parse.y" -{yygotominor.yy46 = OE_Abort;} -#line 2862 "parse.c" +{yygotominor.yy316 = OE_Abort;} +#line 2873 "parse.c" break; case 236: #line 850 "parse.y" -{yygotominor.yy46 = OE_None;} -#line 2867 "parse.c" +{yygotominor.yy316 = OE_None;} +#line 2878 "parse.c" break; case 239: #line 860 "parse.y" { Expr *p = 0; - if( yymsp[-1].minor.yy410.n>0 ){ + if( yymsp[-1].minor.yy178.n>0 ){ p = sqlite3Expr(TK_COLUMN, 0, 0, 0); - if( p ) p->pColl = sqlite3LocateCollSeq(pParse, (char*)yymsp[-1].minor.yy410.z, yymsp[-1].minor.yy410.n); + if( p ) p->pColl = sqlite3LocateCollSeq(pParse, (char*)yymsp[-1].minor.yy178.z, yymsp[-1].minor.yy178.n); } - yygotominor.yy174 = sqlite3ExprListAppend(yymsp[-4].minor.yy174, p, &yymsp[-2].minor.yy410); - if( yygotominor.yy174 ) yygotominor.yy174->a[yygotominor.yy174->nExpr-1].sortOrder = yymsp[0].minor.yy46; + yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-4].minor.yy242, p, &yymsp[-2].minor.yy178); + if( yygotominor.yy242 ) yygotominor.yy242->a[yygotominor.yy242->nExpr-1].sortOrder = yymsp[0].minor.yy316; } -#line 2880 "parse.c" +#line 2891 "parse.c" break; case 240: #line 869 "parse.y" { Expr *p = 0; - if( yymsp[-1].minor.yy410.n>0 ){ + if( yymsp[-1].minor.yy178.n>0 ){ p = sqlite3Expr(TK_COLUMN, 0, 0, 0); - if( p ) p->pColl = sqlite3LocateCollSeq(pParse, (char*)yymsp[-1].minor.yy410.z, yymsp[-1].minor.yy410.n); + if( p ) p->pColl = sqlite3LocateCollSeq(pParse, (char*)yymsp[-1].minor.yy178.z, yymsp[-1].minor.yy178.n); } - yygotominor.yy174 = sqlite3ExprListAppend(0, p, &yymsp[-2].minor.yy410); - if( yygotominor.yy174 ) yygotominor.yy174->a[yygotominor.yy174->nExpr-1].sortOrder = yymsp[0].minor.yy46; + yygotominor.yy242 = sqlite3ExprListAppend(0, p, &yymsp[-2].minor.yy178); + if( yygotominor.yy242 ) yygotominor.yy242->a[yygotominor.yy242->nExpr-1].sortOrder = yymsp[0].minor.yy316; } -#line 2893 "parse.c" +#line 2904 "parse.c" break; case 242: #line 883 "parse.y" -{sqlite3DropIndex(pParse, yymsp[0].minor.yy373, yymsp[-1].minor.yy46);} -#line 2898 "parse.c" +{sqlite3DropIndex(pParse, yymsp[0].minor.yy419, yymsp[-1].minor.yy316);} +#line 2909 "parse.c" break; case 243: case 244: #line 888 "parse.y" {sqlite3Vacuum(pParse);} -#line 2904 "parse.c" +#line 2915 "parse.c" break; case 245: - case 247: #line 895 "parse.y" -{sqlite3Pragma(pParse,&yymsp[-3].minor.yy410,&yymsp[-2].minor.yy410,&yymsp[0].minor.yy410,0);} -#line 2910 "parse.c" +{sqlite3Pragma(pParse,&yymsp[-3].minor.yy178,&yymsp[-2].minor.yy178,&yymsp[0].minor.yy178,0);} +#line 2920 "parse.c" break; case 246: #line 896 "parse.y" -{sqlite3Pragma(pParse,&yymsp[-3].minor.yy410,&yymsp[-2].minor.yy410,&yymsp[0].minor.yy0,0);} -#line 2915 "parse.c" +{sqlite3Pragma(pParse,&yymsp[-3].minor.yy178,&yymsp[-2].minor.yy178,&yymsp[0].minor.yy0,0);} +#line 2925 "parse.c" break; - case 248: -#line 898 "parse.y" + case 247: +#line 897 "parse.y" { - sqlite3Pragma(pParse,&yymsp[-3].minor.yy410,&yymsp[-2].minor.yy410,&yymsp[0].minor.yy410,1); + sqlite3Pragma(pParse,&yymsp[-3].minor.yy178,&yymsp[-2].minor.yy178,&yymsp[0].minor.yy178,1); } -#line 2922 "parse.c" +#line 2932 "parse.c" break; + case 248: +#line 900 "parse.y" +{sqlite3Pragma(pParse,&yymsp[-4].minor.yy178,&yymsp[-3].minor.yy178,&yymsp[-1].minor.yy178,0);} +#line 2937 "parse.c" + break; case 249: #line 901 "parse.y" -{sqlite3Pragma(pParse,&yymsp[-4].minor.yy410,&yymsp[-3].minor.yy410,&yymsp[-1].minor.yy410,0);} -#line 2927 "parse.c" +{sqlite3Pragma(pParse,&yymsp[-1].minor.yy178,&yymsp[0].minor.yy178,0,0);} +#line 2942 "parse.c" break; - case 250: -#line 902 "parse.y" -{sqlite3Pragma(pParse,&yymsp[-1].minor.yy410,&yymsp[0].minor.yy410,0,0);} -#line 2932 "parse.c" - break; - case 256: -#line 914 "parse.y" + case 257: +#line 915 "parse.y" { Token all; - all.z = yymsp[-3].minor.yy410.z; - all.n = (yymsp[0].minor.yy0.z - yymsp[-3].minor.yy410.z) + yymsp[0].minor.yy0.n; - sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy243, &all); + all.z = yymsp[-3].minor.yy178.z; + all.n = (yymsp[0].minor.yy0.z - yymsp[-3].minor.yy178.z) + yymsp[0].minor.yy0.n; + sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy75, &all); } -#line 2942 "parse.c" +#line 2952 "parse.c" break; - case 257: -#line 923 "parse.y" + case 258: +#line 924 "parse.y" { - sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy410, &yymsp[-6].minor.yy410, yymsp[-5].minor.yy46, yymsp[-4].minor.yy370.a, yymsp[-4].minor.yy370.b, yymsp[-2].minor.yy373, yymsp[-1].minor.yy46, yymsp[0].minor.yy172, yymsp[-10].minor.yy46, yymsp[-8].minor.yy46); - yygotominor.yy410 = (yymsp[-6].minor.yy410.n==0?yymsp[-7].minor.yy410:yymsp[-6].minor.yy410); + sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy178, &yymsp[-6].minor.yy178, yymsp[-5].minor.yy316, yymsp[-4].minor.yy354.a, yymsp[-4].minor.yy354.b, yymsp[-2].minor.yy419, yymsp[-1].minor.yy316, yymsp[0].minor.yy450, yymsp[-10].minor.yy316, yymsp[-8].minor.yy316); + yygotominor.yy178 = (yymsp[-6].minor.yy178.n==0?yymsp[-7].minor.yy178:yymsp[-6].minor.yy178); } -#line 2950 "parse.c" +#line 2960 "parse.c" break; - case 258: - case 261: -#line 929 "parse.y" -{ yygotominor.yy46 = TK_BEFORE; } -#line 2956 "parse.c" - break; case 259: + case 262: #line 930 "parse.y" -{ yygotominor.yy46 = TK_AFTER; } -#line 2961 "parse.c" +{ yygotominor.yy316 = TK_BEFORE; } +#line 2966 "parse.c" break; case 260: #line 931 "parse.y" -{ yygotominor.yy46 = TK_INSTEAD;} -#line 2966 "parse.c" +{ yygotominor.yy316 = TK_AFTER; } +#line 2971 "parse.c" break; - case 262: + case 261: +#line 932 "parse.y" +{ yygotominor.yy316 = TK_INSTEAD;} +#line 2976 "parse.c" + break; case 263: -#line 936 "parse.y" -{yygotominor.yy370.a = yymsp[0].major; yygotominor.yy370.b = 0;} -#line 2972 "parse.c" - break; case 264: -#line 938 "parse.y" -{yygotominor.yy370.a = TK_UPDATE; yygotominor.yy370.b = yymsp[0].minor.yy432;} -#line 2977 "parse.c" +#line 937 "parse.y" +{yygotominor.yy354.a = yymsp[0].major; yygotominor.yy354.b = 0;} +#line 2982 "parse.c" break; case 265: - case 266: -#line 941 "parse.y" -{ yygotominor.yy46 = TK_ROW; } -#line 2983 "parse.c" +#line 939 "parse.y" +{yygotominor.yy354.a = TK_UPDATE; yygotominor.yy354.b = yymsp[0].minor.yy352;} +#line 2987 "parse.c" break; + case 266: case 267: -#line 943 "parse.y" -{ yygotominor.yy46 = TK_STATEMENT; } -#line 2988 "parse.c" +#line 942 "parse.y" +{ yygotominor.yy316 = TK_ROW; } +#line 2993 "parse.c" break; case 268: -#line 947 "parse.y" -{ yygotominor.yy172 = 0; } -#line 2993 "parse.c" +#line 944 "parse.y" +{ yygotominor.yy316 = TK_STATEMENT; } +#line 2998 "parse.c" break; case 269: #line 948 "parse.y" -{ yygotominor.yy172 = yymsp[0].minor.yy172; } -#line 2998 "parse.c" +{ yygotominor.yy450 = 0; } +#line 3003 "parse.c" break; case 270: -#line 952 "parse.y" +#line 949 "parse.y" +{ yygotominor.yy450 = yymsp[0].minor.yy450; } +#line 3008 "parse.c" + break; + case 271: +#line 953 "parse.y" { - if( yymsp[-2].minor.yy243 ){ - yymsp[-2].minor.yy243->pLast->pNext = yymsp[-1].minor.yy243; + if( yymsp[-2].minor.yy75 ){ + yymsp[-2].minor.yy75->pLast->pNext = yymsp[-1].minor.yy75; }else{ - yymsp[-2].minor.yy243 = yymsp[-1].minor.yy243; + yymsp[-2].minor.yy75 = yymsp[-1].minor.yy75; } - yymsp[-2].minor.yy243->pLast = yymsp[-1].minor.yy243; - yygotominor.yy243 = yymsp[-2].minor.yy243; + yymsp[-2].minor.yy75->pLast = yymsp[-1].minor.yy75; + yygotominor.yy75 = yymsp[-2].minor.yy75; } -#line 3011 "parse.c" +#line 3021 "parse.c" break; - case 271: -#line 961 "parse.y" -{ yygotominor.yy243 = 0; } -#line 3016 "parse.c" - break; case 272: -#line 967 "parse.y" -{ yygotominor.yy243 = sqlite3TriggerUpdateStep(&yymsp[-3].minor.yy410, yymsp[-1].minor.yy174, yymsp[0].minor.yy172, yymsp[-4].minor.yy46); } -#line 3021 "parse.c" +#line 962 "parse.y" +{ yygotominor.yy75 = 0; } +#line 3026 "parse.c" break; case 273: -#line 972 "parse.y" -{yygotominor.yy243 = sqlite3TriggerInsertStep(&yymsp[-5].minor.yy410, yymsp[-4].minor.yy432, yymsp[-1].minor.yy174, 0, yymsp[-7].minor.yy46);} -#line 3026 "parse.c" +#line 968 "parse.y" +{ yygotominor.yy75 = sqlite3TriggerUpdateStep(&yymsp[-3].minor.yy178, yymsp[-1].minor.yy242, yymsp[0].minor.yy450, yymsp[-4].minor.yy316); } +#line 3031 "parse.c" break; case 274: -#line 975 "parse.y" -{yygotominor.yy243 = sqlite3TriggerInsertStep(&yymsp[-2].minor.yy410, yymsp[-1].minor.yy432, 0, yymsp[0].minor.yy219, yymsp[-4].minor.yy46);} -#line 3031 "parse.c" +#line 973 "parse.y" +{yygotominor.yy75 = sqlite3TriggerInsertStep(&yymsp[-5].minor.yy178, yymsp[-4].minor.yy352, yymsp[-1].minor.yy242, 0, yymsp[-7].minor.yy316);} +#line 3036 "parse.c" break; case 275: -#line 979 "parse.y" -{yygotominor.yy243 = sqlite3TriggerDeleteStep(&yymsp[-1].minor.yy410, yymsp[0].minor.yy172);} -#line 3036 "parse.c" +#line 976 "parse.y" +{yygotominor.yy75 = sqlite3TriggerInsertStep(&yymsp[-2].minor.yy178, yymsp[-1].minor.yy352, 0, yymsp[0].minor.yy43, yymsp[-4].minor.yy316);} +#line 3041 "parse.c" break; case 276: -#line 982 "parse.y" -{yygotominor.yy243 = sqlite3TriggerSelectStep(yymsp[0].minor.yy219); } -#line 3041 "parse.c" +#line 980 "parse.y" +{yygotominor.yy75 = sqlite3TriggerDeleteStep(&yymsp[-1].minor.yy178, yymsp[0].minor.yy450);} +#line 3046 "parse.c" break; case 277: -#line 985 "parse.y" +#line 983 "parse.y" +{yygotominor.yy75 = sqlite3TriggerSelectStep(yymsp[0].minor.yy43); } +#line 3051 "parse.c" + break; + case 278: +#line 986 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_RAISE, 0, 0, 0); - if( yygotominor.yy172 ){ - yygotominor.yy172->iColumn = OE_Ignore; - sqlite3ExprSpan(yygotominor.yy172, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0); + yygotominor.yy450 = sqlite3Expr(TK_RAISE, 0, 0, 0); + if( yygotominor.yy450 ){ + yygotominor.yy450->iColumn = OE_Ignore; + sqlite3ExprSpan(yygotominor.yy450, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0); } } -#line 3052 "parse.c" +#line 3062 "parse.c" break; - case 278: -#line 992 "parse.y" + case 279: +#line 993 "parse.y" { - yygotominor.yy172 = sqlite3Expr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy410); - if( yygotominor.yy172 ) { - yygotominor.yy172->iColumn = yymsp[-3].minor.yy46; - sqlite3ExprSpan(yygotominor.yy172, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0); + yygotominor.yy450 = sqlite3Expr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy178); + if( yygotominor.yy450 ) { + yygotominor.yy450->iColumn = yymsp[-3].minor.yy316; + sqlite3ExprSpan(yygotominor.yy450, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0); } } -#line 3063 "parse.c" +#line 3073 "parse.c" break; - case 279: -#line 1002 "parse.y" -{yygotominor.yy46 = OE_Rollback;} -#line 3068 "parse.c" + case 280: +#line 1003 "parse.y" +{yygotominor.yy316 = OE_Rollback;} +#line 3078 "parse.c" break; - case 281: -#line 1004 "parse.y" -{yygotominor.yy46 = OE_Fail;} -#line 3073 "parse.c" - break; case 282: -#line 1009 "parse.y" -{ - sqlite3DropTrigger(pParse,yymsp[0].minor.yy373,yymsp[-1].minor.yy46); -} -#line 3080 "parse.c" +#line 1005 "parse.y" +{yygotominor.yy316 = OE_Fail;} +#line 3083 "parse.c" break; case 283: -#line 1015 "parse.y" +#line 1010 "parse.y" { - sqlite3Attach(pParse, yymsp[-3].minor.yy172, yymsp[-1].minor.yy172, yymsp[0].minor.yy386); + sqlite3DropTrigger(pParse,yymsp[0].minor.yy419,yymsp[-1].minor.yy316); } -#line 3087 "parse.c" +#line 3090 "parse.c" break; case 284: -#line 1020 "parse.y" -{ yygotominor.yy386 = 0; } -#line 3092 "parse.c" +#line 1016 "parse.y" +{ + sqlite3Attach(pParse, yymsp[-3].minor.yy450, yymsp[-1].minor.yy450, yymsp[0].minor.yy158); +} +#line 3097 "parse.c" break; case 285: #line 1021 "parse.y" -{ yygotominor.yy386 = yymsp[0].minor.yy172; } -#line 3097 "parse.c" +{ yygotominor.yy158 = 0; } +#line 3102 "parse.c" break; - case 288: -#line 1027 "parse.y" + case 286: +#line 1022 "parse.y" +{ yygotominor.yy158 = yymsp[0].minor.yy450; } +#line 3107 "parse.c" + break; + case 289: +#line 1028 "parse.y" { - sqlite3Detach(pParse, yymsp[0].minor.yy172); + sqlite3Detach(pParse, yymsp[0].minor.yy450); } -#line 3104 "parse.c" +#line 3114 "parse.c" break; - case 289: -#line 1033 "parse.y" -{sqlite3Reindex(pParse, 0, 0);} -#line 3109 "parse.c" - break; case 290: #line 1034 "parse.y" -{sqlite3Reindex(pParse, &yymsp[-1].minor.yy410, &yymsp[0].minor.yy410);} -#line 3114 "parse.c" +{sqlite3Reindex(pParse, 0, 0);} +#line 3119 "parse.c" break; case 291: -#line 1039 "parse.y" -{sqlite3Analyze(pParse, 0, 0);} -#line 3119 "parse.c" +#line 1035 "parse.y" +{sqlite3Reindex(pParse, &yymsp[-1].minor.yy178, &yymsp[0].minor.yy178);} +#line 3124 "parse.c" break; case 292: #line 1040 "parse.y" -{sqlite3Analyze(pParse, &yymsp[-1].minor.yy410, &yymsp[0].minor.yy410);} -#line 3124 "parse.c" +{sqlite3Analyze(pParse, 0, 0);} +#line 3129 "parse.c" break; case 293: -#line 1045 "parse.y" -{ - sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy373,&yymsp[0].minor.yy410); -} -#line 3131 "parse.c" +#line 1041 "parse.y" +{sqlite3Analyze(pParse, &yymsp[-1].minor.yy178, &yymsp[0].minor.yy178);} +#line 3134 "parse.c" break; case 294: -#line 1048 "parse.y" +#line 1046 "parse.y" { - sqlite3AlterFinishAddColumn(pParse, &yymsp[0].minor.yy410); + sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy419,&yymsp[0].minor.yy178); } -#line 3138 "parse.c" +#line 3141 "parse.c" break; case 295: -#line 1051 "parse.y" +#line 1049 "parse.y" { - sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy373); + sqlite3AlterFinishAddColumn(pParse, &yymsp[0].minor.yy178); } -#line 3145 "parse.c" +#line 3148 "parse.c" break; - case 298: -#line 1060 "parse.y" -{sqlite3VtabFinishParse(pParse,0);} -#line 3150 "parse.c" + case 296: +#line 1052 "parse.y" +{ + sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy419); +} +#line 3155 "parse.c" break; case 299: #line 1061 "parse.y" -{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);} -#line 3155 "parse.c" +{sqlite3VtabFinishParse(pParse,0);} +#line 3160 "parse.c" break; case 300: #line 1062 "parse.y" +{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);} +#line 3165 "parse.c" + break; + case 301: +#line 1063 "parse.y" { - sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy410, &yymsp[-2].minor.yy410, &yymsp[0].minor.yy410); + sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy178, &yymsp[-2].minor.yy178, &yymsp[0].minor.yy178); } -#line 3162 "parse.c" +#line 3172 "parse.c" break; - case 303: -#line 1067 "parse.y" + case 304: +#line 1068 "parse.y" {sqlite3VtabArgInit(pParse);} -#line 3167 "parse.c" +#line 3177 "parse.c" break; - case 305: case 306: case 307: - case 309: -#line 1069 "parse.y" + case 308: + case 310: +#line 1070 "parse.y" {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);} -#line 3175 "parse.c" +#line 3185 "parse.c" break; }; yygoto = yyRuleInfo[yyruleno].lhs; @@ -3236,7 +3246,7 @@ static void yy_syntax_error( } pParse->parseError = 1; } -#line 3243 "parse.c" +#line 3253 "parse.c" sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */ } ============================================================ --- sqlite/pragma.c fd4df6cf0857dd78a7cb5be5f9805419b53ae7a0 +++ sqlite/pragma.c 5091300911670ddaa552bfa12c45cbca1bb7e7d6 @@ -11,7 +11,7 @@ ************************************************************************* ** This file contains code used to implement the PRAGMA command. ** -** $Id: pragma.c,v 1.126 2007/01/04 22:13:42 drh Exp $ +** $Id: pragma.c,v 1.127 2007/01/27 02:24:56 drh Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -640,9 +640,13 @@ void sqlite3Pragma( } }else +#ifndef SQLITE_INTEGRITY_CHECK_ERROR_MAX +# define SQLITE_INTEGRITY_CHECK_ERROR_MAX 100 +#endif + #ifndef SQLITE_OMIT_INTEGRITY_CHECK if( sqlite3StrICmp(zLeft, "integrity_check")==0 ){ - int i, j, addr; + int i, j, addr, mxErr; /* Code that appears at the end of the integrity check. If no error ** messages have been generated, output OK. Otherwise output the @@ -660,8 +664,17 @@ void sqlite3Pragma( if( sqlite3ReadSchema(pParse) ) goto pragma_out; sqlite3VdbeSetNumCols(v, 1); sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "integrity_check", P3_STATIC); - sqlite3VdbeAddOp(v, OP_MemInt, 0, 0); /* Initialize error count to 0 */ + /* Set the maximum error count */ + mxErr = SQLITE_INTEGRITY_CHECK_ERROR_MAX; + if( zRight ){ + mxErr = atoi(zRight); + if( mxErr<=0 ){ + mxErr = SQLITE_INTEGRITY_CHECK_ERROR_MAX; + } + } + sqlite3VdbeAddOp(v, OP_MemInt, mxErr, 0); + /* Do an integrity check on each database file */ for(i=0; inDb; i++){ HashElem *x; @@ -671,6 +684,9 @@ void sqlite3Pragma( if( OMIT_TEMPDB && i==1 ) continue; sqlite3CodeVerifySchema(pParse, i); + addr = sqlite3VdbeAddOp(v, OP_IfMemPos, 0, 0); + sqlite3VdbeAddOp(v, OP_Halt, 0, 0); + sqlite3VdbeJumpHere(v, addr); /* Do an integrity check of the B-Tree */ @@ -685,28 +701,28 @@ void sqlite3Pragma( cnt++; } } - assert( cnt>0 ); - sqlite3VdbeAddOp(v, OP_IntegrityCk, cnt, i); - sqlite3VdbeAddOp(v, OP_Dup, 0, 1); - addr = sqlite3VdbeOp3(v, OP_String8, 0, 0, "ok", P3_STATIC); - sqlite3VdbeAddOp(v, OP_Eq, 0, addr+7); + if( cnt==0 ) continue; + sqlite3VdbeAddOp(v, OP_IntegrityCk, 0, i); + addr = sqlite3VdbeAddOp(v, OP_IsNull, -1, 0); sqlite3VdbeOp3(v, OP_String8, 0, 0, sqlite3MPrintf("*** in database %s ***\n", db->aDb[i].zName), P3_DYNAMIC); sqlite3VdbeAddOp(v, OP_Pull, 1, 0); - sqlite3VdbeAddOp(v, OP_Concat, 0, 1); + sqlite3VdbeAddOp(v, OP_Concat, 0, 0); sqlite3VdbeAddOp(v, OP_Callback, 1, 0); - sqlite3VdbeAddOp(v, OP_MemIncr, 1, 0); + sqlite3VdbeJumpHere(v, addr); /* Make sure all the indices are constructed correctly. */ - sqlite3CodeVerifySchema(pParse, i); for(x=sqliteHashFirst(pTbls); x; x=sqliteHashNext(x)){ Table *pTab = sqliteHashData(x); Index *pIdx; int loopTop; if( pTab->pIndex==0 ) continue; + addr = sqlite3VdbeAddOp(v, OP_IfMemPos, 0, 0); + sqlite3VdbeAddOp(v, OP_Halt, 0, 0); + sqlite3VdbeJumpHere(v, addr); sqlite3OpenTableAndIndices(pParse, pTab, 1, OP_OpenRead); sqlite3VdbeAddOp(v, OP_MemInt, 0, 1); loopTop = sqlite3VdbeAddOp(v, OP_Rewind, 1, 0); @@ -714,7 +730,7 @@ void sqlite3Pragma( for(j=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, j++){ int jmp2; static const VdbeOpList idxErr[] = { - { OP_MemIncr, 1, 0, 0}, + { OP_MemIncr, -1, 0, 0}, { OP_String8, 0, 0, "rowid "}, { OP_Rowid, 1, 0, 0}, { OP_String8, 0, 0, " missing from index "}, @@ -739,13 +755,16 @@ void sqlite3Pragma( { OP_MemLoad, 1, 0, 0}, { OP_MemLoad, 2, 0, 0}, { OP_Eq, 0, 0, 0}, /* 6 */ - { OP_MemIncr, 1, 0, 0}, + { OP_MemIncr, -1, 0, 0}, { OP_String8, 0, 0, "wrong # of entries in index "}, { OP_String8, 0, 0, 0}, /* 9 */ { OP_Concat, 0, 0, 0}, { OP_Callback, 1, 0, 0}, }; if( pIdx->tnum==0 ) continue; + addr = sqlite3VdbeAddOp(v, OP_IfMemPos, 0, 0); + sqlite3VdbeAddOp(v, OP_Halt, 0, 0); + sqlite3VdbeJumpHere(v, addr); addr = sqlite3VdbeAddOpList(v, ArraySize(cntIdx), cntIdx); sqlite3VdbeChangeP1(v, addr+1, j+2); sqlite3VdbeChangeP2(v, addr+1, addr+4); @@ -757,6 +776,7 @@ void sqlite3Pragma( } } addr = sqlite3VdbeAddOpList(v, ArraySize(endCode), endCode); + sqlite3VdbeChangeP1(v, addr+1, mxErr); sqlite3VdbeJumpHere(v, addr+2); }else #endif /* SQLITE_OMIT_INTEGRITY_CHECK */ ============================================================ --- sqlite/printf.c b179b6ed12f793e028dd169e2e2e2b2a37eedc63 +++ sqlite/printf.c aade23a789d7cc88b397ec0d33a0a01a33a7a9c1 @@ -857,7 +857,7 @@ void sqlite3DebugPrintf(const char *zFor va_start(ap, zFormat); base_vprintf(0, 0, zBuf, sizeof(zBuf), zFormat, ap); va_end(ap); - fprintf(stdout,"%d: %s", getpid(), zBuf); + fprintf(stdout,"%s", zBuf); fflush(stdout); } #endif ============================================================ --- sqlite/select.c 52f09127b53697b1a95835a9b0db9309cca8079f +++ sqlite/select.c 628f49827d5a94ed9b6246efb8dc9f5c24e413f1 @@ -12,7 +12,7 @@ ** This file contains C code routines that are called by the parser ** to handle SELECT statements in SQLite. ** -** $Id: select.c,v 1.323 2006/12/16 16:25:15 drh Exp $ +** $Id: select.c,v 1.325 2007/01/26 19:23:33 drh Exp $ */ #include "sqliteInt.h" @@ -1936,6 +1936,7 @@ static int multiSelect( } sqlite3VdbeChangeP2(v, addr, nCol); sqlite3VdbeChangeP3(v, addr, (char*)pKeyInfo, P3_KEYINFO); + pLoop->addrOpenEphm[i] = -1; } } @@ -3299,3 +3300,99 @@ select_end: sqliteFree(sAggInfo.aFunc); return rc; } + +#if defined(SQLITE_TEST) || defined(SQLITE_DEBUG) +/* +******************************************************************************* +** The following code is used for testing and debugging only. The code +** that follows does not appear in normal builds. +** +** These routines are used to print out the content of all or part of a +** parse structures such as Select or Expr. Such printouts are useful +** for helping to understand what is happening inside the code generator +** during the execution of complex SELECT statements. +** +** These routine are not called anywhere from within the normal +** code base. Then are intended to be called from within the debugger +** or from temporary "printf" statements inserted for debugging. +*/ +void sqlite3PrintExpr(Expr *p){ + if( p->token.z && p->token.n>0 ){ + sqlite3DebugPrintf("(%.*s", p->token.n, p->token.z); + }else{ + sqlite3DebugPrintf("(%d", p->op); + } + if( p->pLeft ){ + sqlite3DebugPrintf(" "); + sqlite3PrintExpr(p->pLeft); + } + if( p->pRight ){ + sqlite3DebugPrintf(" "); + sqlite3PrintExpr(p->pRight); + } + sqlite3DebugPrintf(")"); +} +void sqlite3PrintExprList(ExprList *pList){ + int i; + for(i=0; inExpr; i++){ + sqlite3PrintExpr(pList->a[i].pExpr); + if( inExpr-1 ){ + sqlite3DebugPrintf(", "); + } + } +} +void sqlite3PrintSelect(Select *p, int indent){ + sqlite3DebugPrintf("%*sSELECT(%p) ", indent, "", p); + sqlite3PrintExprList(p->pEList); + sqlite3DebugPrintf("\n"); + if( p->pSrc ){ + char *zPrefix; + int i; + zPrefix = "FROM"; + for(i=0; ipSrc->nSrc; i++){ + struct SrcList_item *pItem = &p->pSrc->a[i]; + sqlite3DebugPrintf("%*s ", indent+6, zPrefix); + zPrefix = ""; + if( pItem->pSelect ){ + sqlite3DebugPrintf("(\n"); + sqlite3PrintSelect(pItem->pSelect, indent+10); + sqlite3DebugPrintf("%*s)", indent+8, ""); + }else if( pItem->zName ){ + sqlite3DebugPrintf("%s", pItem->zName); + } + if( pItem->pTab ){ + sqlite3DebugPrintf("(table: %s)", pItem->pTab->zName); + } + if( pItem->zAlias ){ + sqlite3DebugPrintf(" AS %s", pItem->zAlias); + } + if( ipSrc->nSrc-1 ){ + sqlite3DebugPrintf(","); + } + sqlite3DebugPrintf("\n"); + } + } + if( p->pWhere ){ + sqlite3DebugPrintf("%*s WHERE ", indent, ""); + sqlite3PrintExpr(p->pWhere); + sqlite3DebugPrintf("\n"); + } + if( p->pGroupBy ){ + sqlite3DebugPrintf("%*s GROUP BY ", indent, ""); + sqlite3PrintExprList(p->pGroupBy); + sqlite3DebugPrintf("\n"); + } + if( p->pHaving ){ + sqlite3DebugPrintf("%*s HAVING ", indent, ""); + sqlite3PrintExpr(p->pHaving); + sqlite3DebugPrintf("\n"); + } + if( p->pOrderBy ){ + sqlite3DebugPrintf("%*s ORDER BY ", indent, ""); + sqlite3PrintExprList(p->pOrderBy); + sqlite3DebugPrintf("\n"); + } +} +/* End of the structure debug printing code +*****************************************************************************/ +#endif /* defined(SQLITE_TEST) || defined(SQLITE_DEBUG) */ ============================================================ --- sqlite/sqlite3.h bda6b4bcb2d58bd9485bae930c5e692fe9bf4098 +++ sqlite/sqlite3.h f6d447ccc3b195fcf1048058cfb5f6632fd5d577 @@ -12,7 +12,7 @@ ** This header file defines the interface that the SQLite library ** presents to client programs. ** -** @(#) $Id: sqlite.h.in,v 1.197 2007/01/10 12:57:29 drh Exp $ +** @(#) $Id: sqlite.h.in,v 1.198 2007/01/26 00:51:44 drh Exp $ */ #ifndef _SQLITE3_H_ #define _SQLITE3_H_ @@ -31,7 +31,7 @@ extern "C" { #ifdef SQLITE_VERSION # undef SQLITE_VERSION #endif -#define SQLITE_VERSION "3.3.10" +#define SQLITE_VERSION "3.3.12" /* ** The format of the version string is "X.Y.Z", where @@ -48,7 +48,7 @@ extern "C" { #ifdef SQLITE_VERSION_NUMBER # undef SQLITE_VERSION_NUMBER #endif -#define SQLITE_VERSION_NUMBER 3003010 +#define SQLITE_VERSION_NUMBER 3003012 /* ** The version string is also compiled into the library so that a program @@ -1185,9 +1185,13 @@ void sqlite3_set_auxdata(sqlite3_context ** SQLITE_TRANSIENT value means that the content will likely change in ** the near future and that SQLite should make its own private copy of ** the content before returning. +** +** The typedef is necessary to work around problems in certain +** C++ compilers. See ticket #2191. */ -#define SQLITE_STATIC ((void(*)(void *))0) -#define SQLITE_TRANSIENT ((void(*)(void *))-1) +typedef void (*sqlite3_destructor_type)(void*); +#define SQLITE_STATIC ((sqlite3_destructor_type)0) +#define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1) /* ** User-defined functions invoke the following routines in order to ============================================================ --- sqlite/sqliteInt.h 90dad3c0ba7a5151c48361748ccdada9ff2eff78 +++ sqlite/sqliteInt.h f15bb7b1bcf750a3202bfae85d6d3beb4e5f64e1 @@ -11,7 +11,7 @@ ************************************************************************* ** Internal interface definitions for SQLite. ** -** @(#) $Id: sqliteInt.h,v 1.532 2006/12/21 01:29:23 drh Exp $ +** @(#) $Id: sqliteInt.h,v 1.533 2007/01/19 01:06:02 drh Exp $ */ #ifndef _SQLITEINT_H_ #define _SQLITEINT_H_ @@ -1091,6 +1091,11 @@ typedef unsigned int Bitmask; ** is modified by an INSERT, DELETE, or UPDATE statement. In standard SQL, ** such a table must be a simple name: ID. But in SQLite, the table can ** now be identified by a database name, a dot, then the table name: ID.ID. +** +** The jointype starts out showing the join type between the current table +** and the next table on the list. The parser builds the list this way. +** But sqlite3SrcListShiftJoinType() later shifts the jointypes so that each +** jointype expresses the join between the table and the previous table. */ struct SrcList { i16 nSrc; /* Number of tables or subqueries in the FROM clause */ @@ -1102,7 +1107,7 @@ struct SrcList { Table *pTab; /* An SQL table corresponding to zName */ Select *pSelect; /* A SELECT statement used in place of a table name */ u8 isPopulated; /* Temporary table associated with SELECT is populated */ - u8 jointype; /* Type of join between this table and the next */ + u8 jointype; /* Type of join between this able and the previous */ i16 iCursor; /* The VDBE cursor number used to access this table */ Expr *pOn; /* The ON clause of a join */ IdList *pUsing; /* The USING clause of a join */ ============================================================ --- sqlite/tokenize.c dfdff21768fbedd40e8d3ca84fc5d0d7af2b46dd +++ sqlite/tokenize.c bb1732ef2b6fc2143f93ff28a45d3dcb04c1d396 @@ -15,7 +15,7 @@ ** individual tokens and sends those tokens one-by-one over to the ** parser for analysis. ** -** $Id: tokenize.c,v 1.124 2006/08/12 12:33:14 drh Exp $ +** $Id: tokenize.c,v 1.125 2007/01/26 19:31:01 drh Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -394,16 +394,16 @@ int sqlite3RunParser(Parse *pParse, cons int tokenType; int lastTokenParsed = -1; sqlite3 *db = pParse->db; - extern void *sqlite3ParserAlloc(void*(*)(int)); + extern void *sqlite3ParserAlloc(void*(*)(size_t)); extern void sqlite3ParserFree(void*, void(*)(void*)); - extern int sqlite3Parser(void*, int, Token, Parse*); + extern void sqlite3Parser(void*, int, Token, Parse*); if( db->activeVdbeCnt==0 ){ db->u1.isInterrupted = 0; } pParse->rc = SQLITE_OK; i = 0; - pEngine = sqlite3ParserAlloc((void*(*)(int))sqlite3MallocX); + pEngine = sqlite3ParserAlloc((void*(*)(size_t))sqlite3MallocX); if( pEngine==0 ){ return SQLITE_NOMEM; } ============================================================ --- sqlite/vdbe.c 074cda811466f8f752c2dd71b1dcaea001f4be64 +++ sqlite/vdbe.c b5a2ad31c177b6c2d5fedb2ed180b9b57058398b @@ -43,7 +43,7 @@ ** in this file for details. If in doubt, do not deviate from existing ** commenting and indentation practices when changing or adding code. ** -** $Id: vdbe.c,v 1.585 2007/01/09 14:01:14 drh Exp $ +** $Id: vdbe.c,v 1.588 2007/01/27 13:37:22 drh Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -2517,6 +2517,8 @@ case OP_VerifyCookie: { /* no-push } if( rc==SQLITE_OK && iMeta!=pOp->p2 ){ sqlite3SetString(&p->zErrMsg, "database schema has changed", (char*)0); + sqlite3ResetInternalSchema(db, pOp->p1); + sqlite3ExpirePreparedStatements(db); rc = SQLITE_SCHEMA; } break; @@ -2923,7 +2925,7 @@ case OP_MoveGt: { /* no-push */ ** ** The top of the stack holds a blob constructed by MakeRecord. P1 is ** an index. If no entry exists in P1 that matches the blob then jump -** to P1. If an entry does existing, fall through. The cursor is left +** to P2. If an entry does existing, fall through. The cursor is left ** pointing to the entry that matches. The blob is popped from the stack. ** ** The difference between this operation and Distinct is that @@ -4118,12 +4120,17 @@ case OP_DropTrigger: { /* no-push #ifndef SQLITE_OMIT_INTEGRITY_CHECK -/* Opcode: IntegrityCk * P2 * +/* Opcode: IntegrityCk P1 P2 * ** ** Do an analysis of the currently open database. Push onto the ** stack the text of an error message describing any problems. -** If there are no errors, push a "ok" onto the stack. +** If no problems are found, push a NULL onto the stack. ** +** P1 is the address of a memory cell that contains the maximum +** number of allowed errors. At most mem[P1] errors will be reported. +** In other words, the analysis stops as soon as mem[P1] errors are +** seen. Mem[P1] is updated with the number of errors remaining. +** ** The root page numbers of all tables in the database are integer ** values on the stack. This opcode pulls as many integers as it ** can off of the stack and uses those numbers as the root pages. @@ -4131,13 +4138,15 @@ case OP_DropTrigger: { /* no-push ** If P2 is not zero, the check is done on the auxiliary database ** file, not the main database file. ** -** This opcode is used for testing purposes only. +** This opcode is used to implement the integrity_check pragma. */ case OP_IntegrityCk: { int nRoot; int *aRoot; int j; + int nErr; char *z; + Mem *pnErr; for(nRoot=0; &pTos[-nRoot]>=p->aStack; nRoot++){ if( (pTos[-nRoot].flags & MEM_Int)==0 ) break; @@ -4145,6 +4154,10 @@ case OP_IntegrityCk: { assert( nRoot>0 ); aRoot = sqliteMallocRaw( sizeof(int*)*(nRoot+1) ); if( aRoot==0 ) goto no_mem; + j = pOp->p1; + assert( j>=0 && jnMem ); + pnErr = &p->aMem[j]; + assert( (pnErr->flags & MEM_Int)!=0 ); for(j=0; ji; @@ -4152,12 +4165,12 @@ case OP_IntegrityCk: { aRoot[j] = 0; popStack(&pTos, nRoot); pTos++; - z = sqlite3BtreeIntegrityCheck(db->aDb[pOp->p2].pBt, aRoot, nRoot); - if( z==0 || z[0]==0 ){ - if( z ) sqliteFree(z); - pTos->z = "ok"; - pTos->n = 2; - pTos->flags = MEM_Str | MEM_Static | MEM_Term; + z = sqlite3BtreeIntegrityCheck(db->aDb[pOp->p2].pBt, aRoot, nRoot, + pnErr->i, &nErr); + pnErr->i -= nErr; + if( nErr==0 ){ + assert( z==0 ); + pTos->flags = MEM_Null; }else{ pTos->z = z; pTos->n = strlen(z); ============================================================ --- sqlite/vdbeInt.h 1ca07f2d7446c90230346aed7fbf990c032460bc +++ sqlite/vdbeInt.h 13ba07121cf534d5b80130d2f5eb0a4937a36bba @@ -15,6 +15,8 @@ ** 6000 lines long) it was split up into several smaller files and ** this header information was factored out. */ +#ifndef _VDBEINT_H_ +#define _VDBEINT_H_ /* ** intToKey() and keyToInt() used to transform the rowid. But with @@ -403,3 +405,5 @@ void sqlite3VdbeFifoClear(Fifo*); int sqlite3VdbeFifoPush(Fifo*, i64); int sqlite3VdbeFifoPop(Fifo*, i64*); void sqlite3VdbeFifoClear(Fifo*); + +#endif /* !defined(_VDBEINT_H_) */ ============================================================ --- sqlite/where.c f55d4459a122457a135cf9ec859bf28777d9156f +++ sqlite/where.c 23dc1c7535c96770d214762ed0bc3c655de5061c @@ -16,7 +16,7 @@ ** so is applicable. Because this module is responsible for selecting ** indices, you might also think of this module as the "query optimizer". ** -** $Id: where.c,v 1.234 2006/12/20 03:24:19 drh Exp $ +** $Id: where.c,v 1.236 2007/01/25 16:56:07 drh Exp $ */ #include "sqliteInt.h" @@ -160,20 +160,28 @@ struct ExprMaskSet { #define WO_ISNULL 128 /* -** Value for flags returned by bestIndex() +** Value for flags returned by bestIndex(). +** +** The least significant byte is reserved as a mask for WO_ values above. +** The WhereLevel.flags field is usually set to WO_IN|WO_EQ|WO_ISNULL. +** But if the table is the right table of a left join, WhereLevel.flags +** is set to WO_IN|WO_EQ. The WhereLevel.flags field can then be used as +** the "op" parameter to findTerm when we are resolving equality constraints. +** ISNULL constraints will then not be used on the right table of a left +** join. Tickets #2177 and #2189. */ -#define WHERE_ROWID_EQ 0x0001 /* rowid=EXPR or rowid IN (...) */ -#define WHERE_ROWID_RANGE 0x0002 /* rowidEXPR */ -#define WHERE_COLUMN_EQ 0x0010 /* x=EXPR or x IN (...) */ -#define WHERE_COLUMN_RANGE 0x0020 /* xEXPR */ -#define WHERE_COLUMN_IN 0x0040 /* x IN (...) */ -#define WHERE_TOP_LIMIT 0x0100 /* xEXPR or x>=EXPR constraint */ -#define WHERE_IDX_ONLY 0x0800 /* Use index only - omit table */ -#define WHERE_ORDERBY 0x1000 /* Output will appear in correct order */ -#define WHERE_REVERSE 0x2000 /* Scan in reverse order */ -#define WHERE_UNIQUE 0x4000 /* Selects no more than one row */ -#define WHERE_VIRTUALTABLE 0x8000 /* Use virtual-table processing */ +#define WHERE_ROWID_EQ 0x000100 /* rowid=EXPR or rowid IN (...) */ +#define WHERE_ROWID_RANGE 0x000200 /* rowidEXPR */ +#define WHERE_COLUMN_EQ 0x001000 /* x=EXPR or x IN (...) */ +#define WHERE_COLUMN_RANGE 0x002000 /* xEXPR */ +#define WHERE_COLUMN_IN 0x004000 /* x IN (...) */ +#define WHERE_TOP_LIMIT 0x010000 /* xEXPR or x>=EXPR constraint */ +#define WHERE_IDX_ONLY 0x080000 /* Use index only - omit table */ +#define WHERE_ORDERBY 0x100000 /* Output will appear in correct order */ +#define WHERE_REVERSE 0x200000 /* Scan in reverse order */ +#define WHERE_UNIQUE 0x400000 /* Selects no more than one row */ +#define WHERE_VIRTUALTABLE 0x800000 /* Use virtual-table processing */ /* ** Initialize a preallocated WhereClause structure. @@ -1275,6 +1283,7 @@ static double bestIndex( int rev; /* True to scan in reverse order */ int flags; /* Flags associated with pProbe */ int nEq; /* Number of == or IN constraints */ + int eqTermMask; /* Mask of valid equality operators */ double cost; /* Cost of using pProbe */ TRACE(("bestIndex: tbl=%s notReady=%x\n", pSrc->pTab->zName, notReady)); @@ -1366,6 +1375,17 @@ static double bestIndex( bestFlags = flags; } + /* If the pSrc table is the right table of a LEFT JOIN then we may not + ** use an index to satisfy IS NULL constraints on that table. This is + ** because columns might end up being NULL if the table does not match - + ** a circumstance which the index cannot help us discover. Ticket #2177. + */ + if( (pSrc->jointype & JT_LEFT)!=0 ){ + eqTermMask = WO_EQ|WO_IN; + }else{ + eqTermMask = WO_EQ|WO_IN|WO_ISNULL; + } + /* Look at each index. */ for(; pProbe; pProbe=pProbe->pNext){ @@ -1380,7 +1400,7 @@ static double bestIndex( flags = 0; for(i=0; inColumn; i++){ int j = pProbe->aiColumn[i]; - pTerm = findTerm(pWC, iCur, j, notReady, WO_EQ|WO_IN|WO_ISNULL, pProbe); + pTerm = findTerm(pWC, iCur, j, notReady, eqTermMask, pProbe); if( pTerm==0 ) break; flags |= WHERE_COLUMN_EQ; if( pTerm->eOperator & WO_IN ){ @@ -1474,7 +1494,7 @@ static double bestIndex( *ppIndex = bestIdx; TRACE(("best index is %s, cost=%.9g, flags=%x, nEq=%d\n", bestIdx ? bestIdx->zName : "(none)", lowestCost, bestFlags, bestNEq)); - *pFlags = bestFlags; + *pFlags = bestFlags | eqTermMask; *pnEq = bestNEq; return lowestCost; } @@ -1636,9 +1656,10 @@ static void codeAllEqualityTerms( /* Evaluate the equality constraints */ - for(j=0; jnColumn; j++){ + assert( pIdx->nColumn>=nEq ); + for(j=0; jaiColumn[j]; - pTerm = findTerm(pWC, iCur, k, notReady, WO_EQ|WO_IN|WO_ISNULL, pIdx); + pTerm = findTerm(pWC, iCur, k, notReady, pLevel->flags, pIdx); if( pTerm==0 ) break; assert( (pTerm->flags & TERM_CODED)==0 ); codeEqualityTerm(pParse, pTerm, brk, pLevel); @@ -1649,7 +1670,6 @@ static void codeAllEqualityTerms( sqlite3VdbeAddOp(v, OP_MemStore, pLevel->iMem+j+1, 1); } } - assert( j==nEq ); /* Make sure all the constraint values are on the top of the stack */