Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Side by Side Diff: third_party/sqlite/preprocessed/parse.c

Issue 387030: Revert the patch that makes SQLite interpret BEGIN as BEGIN IMMEDIATE,... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Final version. Had to sync README.chromium. Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/sqlite/misc.patch ('k') | third_party/sqlite/src/parse.y » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Driver template for the LEMON parser generator. 1 /* Driver template for the LEMON parser generator.
2 ** The author disclaims copyright to this source code. 2 ** The author disclaims copyright to this source code.
3 ** 3 **
4 ** This version of "lempar.c" is modified, slightly, for use by SQLite. 4 ** This version of "lempar.c" is modified, slightly, for use by SQLite.
5 ** The only modifications are the addition of a couple of NEVER() 5 ** The only modifications are the addition of a couple of NEVER()
6 ** macros to disable tests that are needed in the case of a general 6 ** macros to disable tests that are needed in the case of a general
7 ** LALR(1) grammar but which are always false in the 7 ** LALR(1) grammar but which are always false in the
8 ** specific grammar used by SQLite. 8 ** specific grammar used by SQLite.
9 */ 9 */
10 /* First off, code is included that follows the "include" declaration 10 /* First off, code is included that follows the "include" declaration
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 ** 52 **
53 ** Then the "b" IdList records the list "a,b,c". 53 ** Then the "b" IdList records the list "a,b,c".
54 */ 54 */
55 struct TrigEvent { int a; IdList * b; }; 55 struct TrigEvent { int a; IdList * b; };
56 56
57 /* 57 /*
58 ** An instance of this structure holds the ATTACH key and the key type. 58 ** An instance of this structure holds the ATTACH key and the key type.
59 */ 59 */
60 struct AttachKey { int type; Token key; }; 60 struct AttachKey { int type; Token key; };
61 61
62 #line 728 "parse.y" 62 #line 723 "parse.y"
63 63
64 /* This is a utility routine used to set the ExprSpan.zStart and 64 /* This is a utility routine used to set the ExprSpan.zStart and
65 ** ExprSpan.zEnd values of pOut so that the span covers the complete 65 ** ExprSpan.zEnd values of pOut so that the span covers the complete
66 ** range of text beginning with pStart and going to the end of pEnd. 66 ** range of text beginning with pStart and going to the end of pEnd.
67 */ 67 */
68 static void spanSet(ExprSpan *pOut, Token *pStart, Token *pEnd){ 68 static void spanSet(ExprSpan *pOut, Token *pStart, Token *pEnd){
69 pOut->zStart = pStart->z; 69 pOut->zStart = pStart->z;
70 pOut->zEnd = &pEnd->z[pEnd->n]; 70 pOut->zEnd = &pEnd->z[pEnd->n];
71 } 71 }
72 72
73 /* Construct a new Expr object from a single identifier. Use the 73 /* Construct a new Expr object from a single identifier. Use the
74 ** new Expr to populate pOut. Set the span of pOut to be the identifier 74 ** new Expr to populate pOut. Set the span of pOut to be the identifier
75 ** that created the expression. 75 ** that created the expression.
76 */ 76 */
77 static void spanExpr(ExprSpan *pOut, Parse *pParse, int op, Token *pValue){ 77 static void spanExpr(ExprSpan *pOut, Parse *pParse, int op, Token *pValue){
78 pOut->pExpr = sqlite3PExpr(pParse, op, 0, 0, pValue); 78 pOut->pExpr = sqlite3PExpr(pParse, op, 0, 0, pValue);
79 pOut->zStart = pValue->z; 79 pOut->zStart = pValue->z;
80 pOut->zEnd = &pValue->z[pValue->n]; 80 pOut->zEnd = &pValue->z[pValue->n];
81 } 81 }
82 #line 823 "parse.y" 82 #line 818 "parse.y"
83 83
84 /* This routine constructs a binary expression node out of two ExprSpan 84 /* This routine constructs a binary expression node out of two ExprSpan
85 ** objects and uses the result to populate a new ExprSpan object. 85 ** objects and uses the result to populate a new ExprSpan object.
86 */ 86 */
87 static void spanBinaryExpr( 87 static void spanBinaryExpr(
88 ExprSpan *pOut, /* Write the result here */ 88 ExprSpan *pOut, /* Write the result here */
89 Parse *pParse, /* The parsing context. Errors accumulate here */ 89 Parse *pParse, /* The parsing context. Errors accumulate here */
90 int op, /* The binary operation */ 90 int op, /* The binary operation */
91 ExprSpan *pLeft, /* The left operand */ 91 ExprSpan *pLeft, /* The left operand */
92 ExprSpan *pRight /* The right operand */ 92 ExprSpan *pRight /* The right operand */
93 ){ 93 ){
94 pOut->pExpr = sqlite3PExpr(pParse, op, pLeft->pExpr, pRight->pExpr, 0); 94 pOut->pExpr = sqlite3PExpr(pParse, op, pLeft->pExpr, pRight->pExpr, 0);
95 pOut->zStart = pLeft->zStart; 95 pOut->zStart = pLeft->zStart;
96 pOut->zEnd = pRight->zEnd; 96 pOut->zEnd = pRight->zEnd;
97 } 97 }
98 #line 875 "parse.y" 98 #line 870 "parse.y"
99 99
100 /* Construct an expression node for a unary postfix operator 100 /* Construct an expression node for a unary postfix operator
101 */ 101 */
102 static void spanUnaryPostfix( 102 static void spanUnaryPostfix(
103 ExprSpan *pOut, /* Write the new expression node here */ 103 ExprSpan *pOut, /* Write the new expression node here */
104 Parse *pParse, /* Parsing context to record errors */ 104 Parse *pParse, /* Parsing context to record errors */
105 int op, /* The operator */ 105 int op, /* The operator */
106 ExprSpan *pOperand, /* The operand */ 106 ExprSpan *pOperand, /* The operand */
107 Token *pPostOp /* The operand token for setting the span */ 107 Token *pPostOp /* The operand token for setting the span */
108 ){ 108 ){
109 pOut->pExpr = sqlite3PExpr(pParse, op, pOperand->pExpr, 0, 0); 109 pOut->pExpr = sqlite3PExpr(pParse, op, pOperand->pExpr, 0, 0);
110 pOut->zStart = pOperand->zStart; 110 pOut->zStart = pOperand->zStart;
111 pOut->zEnd = &pPostOp->z[pPostOp->n]; 111 pOut->zEnd = &pPostOp->z[pPostOp->n];
112 } 112 }
113 #line 897 "parse.y" 113 #line 892 "parse.y"
114 114
115 /* Construct an expression node for a unary prefix operator 115 /* Construct an expression node for a unary prefix operator
116 */ 116 */
117 static void spanUnaryPrefix( 117 static void spanUnaryPrefix(
118 ExprSpan *pOut, /* Write the new expression node here */ 118 ExprSpan *pOut, /* Write the new expression node here */
119 Parse *pParse, /* Parsing context to record errors */ 119 Parse *pParse, /* Parsing context to record errors */
120 int op, /* The operator */ 120 int op, /* The operator */
121 ExprSpan *pOperand, /* The operand */ 121 ExprSpan *pOperand, /* The operand */
122 Token *pPreOp /* The operand token for setting the span */ 122 Token *pPreOp /* The operand token for setting the span */
123 ){ 123 ){
(...skipping 1236 matching lines...) Expand 10 before | Expand all | Expand 10 after
1360 ** reduce or during error processing or when a parser is 1360 ** reduce or during error processing or when a parser is
1361 ** being destroyed before it is finished parsing. 1361 ** being destroyed before it is finished parsing.
1362 ** 1362 **
1363 ** Note: during a reduce, the only symbols destroyed are those 1363 ** Note: during a reduce, the only symbols destroyed are those
1364 ** which appear on the RHS of the rule, but which are not used 1364 ** which appear on the RHS of the rule, but which are not used
1365 ** inside the C code. 1365 ** inside the C code.
1366 */ 1366 */
1367 case 160: /* select */ 1367 case 160: /* select */
1368 case 194: /* oneselect */ 1368 case 194: /* oneselect */
1369 { 1369 {
1370 #line 409 "parse.y" 1370 #line 404 "parse.y"
1371 sqlite3SelectDelete(pParse->db, (yypminor->yy3)); 1371 sqlite3SelectDelete(pParse->db, (yypminor->yy3));
1372 #line 1373 "parse.c" 1372 #line 1373 "parse.c"
1373 } 1373 }
1374 break; 1374 break;
1375 case 174: /* term */ 1375 case 174: /* term */
1376 case 175: /* expr */ 1376 case 175: /* expr */
1377 case 223: /* escape */ 1377 case 223: /* escape */
1378 { 1378 {
1379 #line 726 "parse.y" 1379 #line 721 "parse.y"
1380 sqlite3ExprDelete(pParse->db, (yypminor->yy346).pExpr); 1380 sqlite3ExprDelete(pParse->db, (yypminor->yy346).pExpr);
1381 #line 1382 "parse.c" 1381 #line 1382 "parse.c"
1382 } 1382 }
1383 break; 1383 break;
1384 case 179: /* idxlist_opt */ 1384 case 179: /* idxlist_opt */
1385 case 187: /* idxlist */ 1385 case 187: /* idxlist */
1386 case 197: /* selcollist */ 1386 case 197: /* selcollist */
1387 case 200: /* groupby_opt */ 1387 case 200: /* groupby_opt */
1388 case 202: /* orderby_opt */ 1388 case 202: /* orderby_opt */
1389 case 204: /* sclp */ 1389 case 204: /* sclp */
1390 case 214: /* sortlist */ 1390 case 214: /* sortlist */
1391 case 216: /* nexprlist */ 1391 case 216: /* nexprlist */
1392 case 217: /* setlist */ 1392 case 217: /* setlist */
1393 case 220: /* itemlist */ 1393 case 220: /* itemlist */
1394 case 221: /* exprlist */ 1394 case 221: /* exprlist */
1395 case 227: /* case_exprlist */ 1395 case 227: /* case_exprlist */
1396 { 1396 {
1397 #line 1067 "parse.y" 1397 #line 1062 "parse.y"
1398 sqlite3ExprListDelete(pParse->db, (yypminor->yy14)); 1398 sqlite3ExprListDelete(pParse->db, (yypminor->yy14));
1399 #line 1400 "parse.c" 1399 #line 1400 "parse.c"
1400 } 1400 }
1401 break; 1401 break;
1402 case 193: /* fullname */ 1402 case 193: /* fullname */
1403 case 198: /* from */ 1403 case 198: /* from */
1404 case 206: /* seltablist */ 1404 case 206: /* seltablist */
1405 case 207: /* stl_prefix */ 1405 case 207: /* stl_prefix */
1406 { 1406 {
1407 #line 540 "parse.y" 1407 #line 535 "parse.y"
1408 sqlite3SrcListDelete(pParse->db, (yypminor->yy65)); 1408 sqlite3SrcListDelete(pParse->db, (yypminor->yy65));
1409 #line 1410 "parse.c" 1409 #line 1410 "parse.c"
1410 } 1410 }
1411 break; 1411 break;
1412 case 199: /* where_opt */ 1412 case 199: /* where_opt */
1413 case 201: /* having_opt */ 1413 case 201: /* having_opt */
1414 case 210: /* on_opt */ 1414 case 210: /* on_opt */
1415 case 215: /* sortitem */ 1415 case 215: /* sortitem */
1416 case 226: /* case_operand */ 1416 case 226: /* case_operand */
1417 case 228: /* case_else */ 1417 case 228: /* case_else */
1418 case 239: /* when_clause */ 1418 case 239: /* when_clause */
1419 case 244: /* key_opt */ 1419 case 244: /* key_opt */
1420 { 1420 {
1421 #line 650 "parse.y" 1421 #line 645 "parse.y"
1422 sqlite3ExprDelete(pParse->db, (yypminor->yy132)); 1422 sqlite3ExprDelete(pParse->db, (yypminor->yy132));
1423 #line 1424 "parse.c" 1423 #line 1424 "parse.c"
1424 } 1424 }
1425 break; 1425 break;
1426 case 211: /* using_opt */ 1426 case 211: /* using_opt */
1427 case 213: /* inscollist */ 1427 case 213: /* inscollist */
1428 case 219: /* inscollist_opt */ 1428 case 219: /* inscollist_opt */
1429 { 1429 {
1430 #line 572 "parse.y" 1430 #line 567 "parse.y"
1431 sqlite3IdListDelete(pParse->db, (yypminor->yy408)); 1431 sqlite3IdListDelete(pParse->db, (yypminor->yy408));
1432 #line 1433 "parse.c" 1432 #line 1433 "parse.c"
1433 } 1433 }
1434 break; 1434 break;
1435 case 235: /* trigger_cmd_list */ 1435 case 235: /* trigger_cmd_list */
1436 case 240: /* trigger_cmd */ 1436 case 240: /* trigger_cmd */
1437 { 1437 {
1438 #line 1174 "parse.y" 1438 #line 1169 "parse.y"
1439 sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy473)); 1439 sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy473));
1440 #line 1441 "parse.c" 1440 #line 1441 "parse.c"
1441 } 1441 }
1442 break; 1442 break;
1443 case 237: /* trigger_event */ 1443 case 237: /* trigger_event */
1444 { 1444 {
1445 #line 1160 "parse.y" 1445 #line 1155 "parse.y"
1446 sqlite3IdListDelete(pParse->db, (yypminor->yy378).b); 1446 sqlite3IdListDelete(pParse->db, (yypminor->yy378).b);
1447 #line 1448 "parse.c" 1447 #line 1448 "parse.c"
1448 } 1448 }
1449 break; 1449 break;
1450 default: break; /* If no destructor action specified: do nothing */ 1450 default: break; /* If no destructor action specified: do nothing */
1451 } 1451 }
1452 } 1452 }
1453 1453
1454 /* 1454 /*
1455 ** Pop the parser's stack once. 1455 ** Pop the parser's stack once.
(...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after
2087 #line 114 "parse.y" 2087 #line 114 "parse.y"
2088 { sqlite3FinishCoding(pParse); } 2088 { sqlite3FinishCoding(pParse); }
2089 #line 2090 "parse.c" 2089 #line 2090 "parse.c"
2090 break; 2090 break;
2091 case 9: /* cmd ::= BEGIN transtype trans_opt */ 2091 case 9: /* cmd ::= BEGIN transtype trans_opt */
2092 #line 119 "parse.y" 2092 #line 119 "parse.y"
2093 {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy328);} 2093 {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy328);}
2094 #line 2095 "parse.c" 2094 #line 2095 "parse.c"
2095 break; 2095 break;
2096 case 13: /* transtype ::= */ 2096 case 13: /* transtype ::= */
2097 #line 125 "parse.y" 2097 #line 124 "parse.y"
2098 {yygotominor.yy328 = TK_IMMEDIATE;} 2098 {yygotominor.yy328 = TK_DEFERRED;}
2099 #line 2100 "parse.c" 2099 #line 2100 "parse.c"
2100 break; 2100 break;
2101 case 14: /* transtype ::= DEFERRED */ 2101 case 14: /* transtype ::= DEFERRED */
2102 case 15: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==15); 2102 case 15: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==15);
2103 case 16: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==16); 2103 case 16: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==16);
2104 case 114: /* multiselect_op ::= UNION */ yytestcase(yyruleno==114); 2104 case 114: /* multiselect_op ::= UNION */ yytestcase(yyruleno==114);
2105 case 116: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==1 16); 2105 case 116: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==1 16);
2106 #line 130 "parse.y" 2106 #line 125 "parse.y"
2107 {yygotominor.yy328 = yymsp[0].major;} 2107 {yygotominor.yy328 = yymsp[0].major;}
2108 #line 2109 "parse.c" 2108 #line 2109 "parse.c"
2109 break; 2109 break;
2110 case 17: /* cmd ::= COMMIT trans_opt */ 2110 case 17: /* cmd ::= COMMIT trans_opt */
2111 case 18: /* cmd ::= END trans_opt */ yytestcase(yyruleno==18); 2111 case 18: /* cmd ::= END trans_opt */ yytestcase(yyruleno==18);
2112 #line 133 "parse.y" 2112 #line 128 "parse.y"
2113 {sqlite3CommitTransaction(pParse);} 2113 {sqlite3CommitTransaction(pParse);}
2114 #line 2115 "parse.c" 2114 #line 2115 "parse.c"
2115 break; 2115 break;
2116 case 19: /* cmd ::= ROLLBACK trans_opt */ 2116 case 19: /* cmd ::= ROLLBACK trans_opt */
2117 #line 135 "parse.y" 2117 #line 130 "parse.y"
2118 {sqlite3RollbackTransaction(pParse);} 2118 {sqlite3RollbackTransaction(pParse);}
2119 #line 2120 "parse.c" 2119 #line 2120 "parse.c"
2120 break; 2120 break;
2121 case 22: /* cmd ::= SAVEPOINT nm */ 2121 case 22: /* cmd ::= SAVEPOINT nm */
2122 #line 139 "parse.y" 2122 #line 134 "parse.y"
2123 { 2123 {
2124 sqlite3Savepoint(pParse, SAVEPOINT_BEGIN, &yymsp[0].minor.yy0); 2124 sqlite3Savepoint(pParse, SAVEPOINT_BEGIN, &yymsp[0].minor.yy0);
2125 } 2125 }
2126 #line 2127 "parse.c" 2126 #line 2127 "parse.c"
2127 break; 2127 break;
2128 case 23: /* cmd ::= RELEASE savepoint_opt nm */ 2128 case 23: /* cmd ::= RELEASE savepoint_opt nm */
2129 #line 142 "parse.y" 2129 #line 137 "parse.y"
2130 { 2130 {
2131 sqlite3Savepoint(pParse, SAVEPOINT_RELEASE, &yymsp[0].minor.yy0); 2131 sqlite3Savepoint(pParse, SAVEPOINT_RELEASE, &yymsp[0].minor.yy0);
2132 } 2132 }
2133 #line 2134 "parse.c" 2133 #line 2134 "parse.c"
2134 break; 2134 break;
2135 case 24: /* cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */ 2135 case 24: /* cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
2136 #line 145 "parse.y" 2136 #line 140 "parse.y"
2137 { 2137 {
2138 sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0); 2138 sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
2139 } 2139 }
2140 #line 2141 "parse.c" 2140 #line 2141 "parse.c"
2141 break; 2141 break;
2142 case 26: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */ 2142 case 26: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
2143 #line 152 "parse.y" 2143 #line 147 "parse.y"
2144 { 2144 {
2145 sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].m inor.yy328,0,0,yymsp[-2].minor.yy328); 2145 sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].m inor.yy328,0,0,yymsp[-2].minor.yy328);
2146 } 2146 }
2147 #line 2148 "parse.c" 2147 #line 2148 "parse.c"
2148 break; 2148 break;
2149 case 27: /* createkw ::= CREATE */ 2149 case 27: /* createkw ::= CREATE */
2150 #line 155 "parse.y" 2150 #line 150 "parse.y"
2151 { 2151 {
2152 pParse->db->lookaside.bEnabled = 0; 2152 pParse->db->lookaside.bEnabled = 0;
2153 yygotominor.yy0 = yymsp[0].minor.yy0; 2153 yygotominor.yy0 = yymsp[0].minor.yy0;
2154 } 2154 }
2155 #line 2156 "parse.c" 2155 #line 2156 "parse.c"
2156 break; 2156 break;
2157 case 28: /* ifnotexists ::= */ 2157 case 28: /* ifnotexists ::= */
2158 case 31: /* temp ::= */ yytestcase(yyruleno==31); 2158 case 31: /* temp ::= */ yytestcase(yyruleno==31);
2159 case 70: /* autoinc ::= */ yytestcase(yyruleno==70); 2159 case 70: /* autoinc ::= */ yytestcase(yyruleno==70);
2160 case 84: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==84); 2160 case 84: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==84);
2161 case 86: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ yytestcase(y yruleno==86); 2161 case 86: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ yytestcase(y yruleno==86);
2162 case 97: /* defer_subclause_opt ::= */ yytestcase(yyruleno==97); 2162 case 97: /* defer_subclause_opt ::= */ yytestcase(yyruleno==97);
2163 case 108: /* ifexists ::= */ yytestcase(yyruleno==108); 2163 case 108: /* ifexists ::= */ yytestcase(yyruleno==108);
2164 case 119: /* distinct ::= ALL */ yytestcase(yyruleno==119); 2164 case 119: /* distinct ::= ALL */ yytestcase(yyruleno==119);
2165 case 120: /* distinct ::= */ yytestcase(yyruleno==120); 2165 case 120: /* distinct ::= */ yytestcase(yyruleno==120);
2166 case 222: /* between_op ::= BETWEEN */ yytestcase(yyruleno==222); 2166 case 222: /* between_op ::= BETWEEN */ yytestcase(yyruleno==222);
2167 case 225: /* in_op ::= IN */ yytestcase(yyruleno==225); 2167 case 225: /* in_op ::= IN */ yytestcase(yyruleno==225);
2168 #line 160 "parse.y" 2168 #line 155 "parse.y"
2169 {yygotominor.yy328 = 0;} 2169 {yygotominor.yy328 = 0;}
2170 #line 2171 "parse.c" 2170 #line 2171 "parse.c"
2171 break; 2171 break;
2172 case 29: /* ifnotexists ::= IF NOT EXISTS */ 2172 case 29: /* ifnotexists ::= IF NOT EXISTS */
2173 case 30: /* temp ::= TEMP */ yytestcase(yyruleno==30); 2173 case 30: /* temp ::= TEMP */ yytestcase(yyruleno==30);
2174 case 71: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==71); 2174 case 71: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==71);
2175 case 85: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ yytestcase(yy ruleno==85); 2175 case 85: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ yytestcase(yy ruleno==85);
2176 case 107: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==107); 2176 case 107: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==107);
2177 case 118: /* distinct ::= DISTINCT */ yytestcase(yyruleno==118); 2177 case 118: /* distinct ::= DISTINCT */ yytestcase(yyruleno==118);
2178 case 223: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==223); 2178 case 223: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==223);
2179 case 226: /* in_op ::= NOT IN */ yytestcase(yyruleno==226); 2179 case 226: /* in_op ::= NOT IN */ yytestcase(yyruleno==226);
2180 #line 161 "parse.y" 2180 #line 156 "parse.y"
2181 {yygotominor.yy328 = 1;} 2181 {yygotominor.yy328 = 1;}
2182 #line 2183 "parse.c" 2182 #line 2183 "parse.c"
2183 break; 2183 break;
2184 case 32: /* create_table_args ::= LP columnlist conslist_opt RP */ 2184 case 32: /* create_table_args ::= LP columnlist conslist_opt RP */
2185 #line 167 "parse.y" 2185 #line 162 "parse.y"
2186 { 2186 {
2187 sqlite3EndTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0); 2187 sqlite3EndTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0);
2188 } 2188 }
2189 #line 2190 "parse.c" 2189 #line 2190 "parse.c"
2190 break; 2190 break;
2191 case 33: /* create_table_args ::= AS select */ 2191 case 33: /* create_table_args ::= AS select */
2192 #line 170 "parse.y" 2192 #line 165 "parse.y"
2193 { 2193 {
2194 sqlite3EndTable(pParse,0,0,yymsp[0].minor.yy3); 2194 sqlite3EndTable(pParse,0,0,yymsp[0].minor.yy3);
2195 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy3); 2195 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy3);
2196 } 2196 }
2197 #line 2198 "parse.c" 2197 #line 2198 "parse.c"
2198 break; 2198 break;
2199 case 36: /* column ::= columnid type carglist */ 2199 case 36: /* column ::= columnid type carglist */
2200 #line 182 "parse.y" 2200 #line 177 "parse.y"
2201 { 2201 {
2202 yygotominor.yy0.z = yymsp[-2].minor.yy0.z; 2202 yygotominor.yy0.z = yymsp[-2].minor.yy0.z;
2203 yygotominor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-2].minor.yy0.z) + pParse ->sLastToken.n; 2203 yygotominor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-2].minor.yy0.z) + pParse ->sLastToken.n;
2204 } 2204 }
2205 #line 2206 "parse.c" 2205 #line 2206 "parse.c"
2206 break; 2206 break;
2207 case 37: /* columnid ::= nm */ 2207 case 37: /* columnid ::= nm */
2208 #line 186 "parse.y" 2208 #line 181 "parse.y"
2209 { 2209 {
2210 sqlite3AddColumn(pParse,&yymsp[0].minor.yy0); 2210 sqlite3AddColumn(pParse,&yymsp[0].minor.yy0);
2211 yygotominor.yy0 = yymsp[0].minor.yy0; 2211 yygotominor.yy0 = yymsp[0].minor.yy0;
2212 } 2212 }
2213 #line 2214 "parse.c" 2213 #line 2214 "parse.c"
2214 break; 2214 break;
2215 case 38: /* id ::= ID */ 2215 case 38: /* id ::= ID */
2216 case 39: /* id ::= INDEXED */ yytestcase(yyruleno==39); 2216 case 39: /* id ::= INDEXED */ yytestcase(yyruleno==39);
2217 case 40: /* ids ::= ID|STRING */ yytestcase(yyruleno==40); 2217 case 40: /* ids ::= ID|STRING */ yytestcase(yyruleno==40);
2218 case 41: /* nm ::= id */ yytestcase(yyruleno==41); 2218 case 41: /* nm ::= id */ yytestcase(yyruleno==41);
2219 case 42: /* nm ::= STRING */ yytestcase(yyruleno==42); 2219 case 42: /* nm ::= STRING */ yytestcase(yyruleno==42);
2220 case 43: /* nm ::= JOIN_KW */ yytestcase(yyruleno==43); 2220 case 43: /* nm ::= JOIN_KW */ yytestcase(yyruleno==43);
2221 case 46: /* typetoken ::= typename */ yytestcase(yyruleno==46); 2221 case 46: /* typetoken ::= typename */ yytestcase(yyruleno==46);
2222 case 49: /* typename ::= ids */ yytestcase(yyruleno==49); 2222 case 49: /* typename ::= ids */ yytestcase(yyruleno==49);
2223 case 126: /* as ::= AS nm */ yytestcase(yyruleno==126); 2223 case 126: /* as ::= AS nm */ yytestcase(yyruleno==126);
2224 case 127: /* as ::= ids */ yytestcase(yyruleno==127); 2224 case 127: /* as ::= ids */ yytestcase(yyruleno==127);
2225 case 137: /* dbnm ::= DOT nm */ yytestcase(yyruleno==137); 2225 case 137: /* dbnm ::= DOT nm */ yytestcase(yyruleno==137);
2226 case 146: /* indexed_opt ::= INDEXED BY nm */ yytestcase(yyruleno==146); 2226 case 146: /* indexed_opt ::= INDEXED BY nm */ yytestcase(yyruleno==146);
2227 case 251: /* collate ::= COLLATE ids */ yytestcase(yyruleno==251); 2227 case 251: /* collate ::= COLLATE ids */ yytestcase(yyruleno==251);
2228 case 260: /* nmnum ::= plus_num */ yytestcase(yyruleno==260); 2228 case 260: /* nmnum ::= plus_num */ yytestcase(yyruleno==260);
2229 case 261: /* nmnum ::= nm */ yytestcase(yyruleno==261); 2229 case 261: /* nmnum ::= nm */ yytestcase(yyruleno==261);
2230 case 262: /* nmnum ::= ON */ yytestcase(yyruleno==262); 2230 case 262: /* nmnum ::= ON */ yytestcase(yyruleno==262);
2231 case 263: /* nmnum ::= DELETE */ yytestcase(yyruleno==263); 2231 case 263: /* nmnum ::= DELETE */ yytestcase(yyruleno==263);
2232 case 264: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==264); 2232 case 264: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==264);
2233 case 265: /* plus_num ::= plus_opt number */ yytestcase(yyruleno==265); 2233 case 265: /* plus_num ::= plus_opt number */ yytestcase(yyruleno==265);
2234 case 266: /* minus_num ::= MINUS number */ yytestcase(yyruleno==266); 2234 case 266: /* minus_num ::= MINUS number */ yytestcase(yyruleno==266);
2235 case 267: /* number ::= INTEGER|FLOAT */ yytestcase(yyruleno==267); 2235 case 267: /* number ::= INTEGER|FLOAT */ yytestcase(yyruleno==267);
2236 case 285: /* trnm ::= nm */ yytestcase(yyruleno==285); 2236 case 285: /* trnm ::= nm */ yytestcase(yyruleno==285);
2237 #line 196 "parse.y" 2237 #line 191 "parse.y"
2238 {yygotominor.yy0 = yymsp[0].minor.yy0;} 2238 {yygotominor.yy0 = yymsp[0].minor.yy0;}
2239 #line 2240 "parse.c" 2239 #line 2240 "parse.c"
2240 break; 2240 break;
2241 case 45: /* type ::= typetoken */ 2241 case 45: /* type ::= typetoken */
2242 #line 258 "parse.y" 2242 #line 253 "parse.y"
2243 {sqlite3AddColumnType(pParse,&yymsp[0].minor.yy0);} 2243 {sqlite3AddColumnType(pParse,&yymsp[0].minor.yy0);}
2244 #line 2245 "parse.c" 2244 #line 2245 "parse.c"
2245 break; 2245 break;
2246 case 47: /* typetoken ::= typename LP signed RP */ 2246 case 47: /* typetoken ::= typename LP signed RP */
2247 #line 260 "parse.y" 2247 #line 255 "parse.y"
2248 { 2248 {
2249 yygotominor.yy0.z = yymsp[-3].minor.yy0.z; 2249 yygotominor.yy0.z = yymsp[-3].minor.yy0.z;
2250 yygotominor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[ -3].minor.yy0.z); 2250 yygotominor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[ -3].minor.yy0.z);
2251 } 2251 }
2252 #line 2253 "parse.c" 2252 #line 2253 "parse.c"
2253 break; 2253 break;
2254 case 48: /* typetoken ::= typename LP signed COMMA signed RP */ 2254 case 48: /* typetoken ::= typename LP signed COMMA signed RP */
2255 #line 264 "parse.y" 2255 #line 259 "parse.y"
2256 { 2256 {
2257 yygotominor.yy0.z = yymsp[-5].minor.yy0.z; 2257 yygotominor.yy0.z = yymsp[-5].minor.yy0.z;
2258 yygotominor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[ -5].minor.yy0.z); 2258 yygotominor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[ -5].minor.yy0.z);
2259 } 2259 }
2260 #line 2261 "parse.c" 2260 #line 2261 "parse.c"
2261 break; 2261 break;
2262 case 50: /* typename ::= typename ids */ 2262 case 50: /* typename ::= typename ids */
2263 #line 270 "parse.y" 2263 #line 265 "parse.y"
2264 {yygotominor.yy0.z=yymsp[-1].minor.yy0.z; yygotominor.yy0.n=yymsp[0].minor.yy0.n +(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);} 2264 {yygotominor.yy0.z=yymsp[-1].minor.yy0.z; yygotominor.yy0.n=yymsp[0].minor.yy0.n +(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
2265 #line 2266 "parse.c" 2265 #line 2266 "parse.c"
2266 break; 2266 break;
2267 case 57: /* ccons ::= DEFAULT term */ 2267 case 57: /* ccons ::= DEFAULT term */
2268 case 59: /* ccons ::= DEFAULT PLUS term */ yytestcase(yyruleno==59); 2268 case 59: /* ccons ::= DEFAULT PLUS term */ yytestcase(yyruleno==59);
2269 #line 281 "parse.y" 2269 #line 276 "parse.y"
2270 {sqlite3AddDefaultValue(pParse,&yymsp[0].minor.yy346);} 2270 {sqlite3AddDefaultValue(pParse,&yymsp[0].minor.yy346);}
2271 #line 2272 "parse.c" 2271 #line 2272 "parse.c"
2272 break; 2272 break;
2273 case 58: /* ccons ::= DEFAULT LP expr RP */ 2273 case 58: /* ccons ::= DEFAULT LP expr RP */
2274 #line 282 "parse.y" 2274 #line 277 "parse.y"
2275 {sqlite3AddDefaultValue(pParse,&yymsp[-1].minor.yy346);} 2275 {sqlite3AddDefaultValue(pParse,&yymsp[-1].minor.yy346);}
2276 #line 2277 "parse.c" 2276 #line 2277 "parse.c"
2277 break; 2277 break;
2278 case 60: /* ccons ::= DEFAULT MINUS term */ 2278 case 60: /* ccons ::= DEFAULT MINUS term */
2279 #line 284 "parse.y" 2279 #line 279 "parse.y"
2280 { 2280 {
2281 ExprSpan v; 2281 ExprSpan v;
2282 v.pExpr = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy346.pExpr, 0, 0); 2282 v.pExpr = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy346.pExpr, 0, 0);
2283 v.zStart = yymsp[-1].minor.yy0.z; 2283 v.zStart = yymsp[-1].minor.yy0.z;
2284 v.zEnd = yymsp[0].minor.yy346.zEnd; 2284 v.zEnd = yymsp[0].minor.yy346.zEnd;
2285 sqlite3AddDefaultValue(pParse,&v); 2285 sqlite3AddDefaultValue(pParse,&v);
2286 } 2286 }
2287 #line 2288 "parse.c" 2287 #line 2288 "parse.c"
2288 break; 2288 break;
2289 case 61: /* ccons ::= DEFAULT id */ 2289 case 61: /* ccons ::= DEFAULT id */
2290 #line 291 "parse.y" 2290 #line 286 "parse.y"
2291 { 2291 {
2292 ExprSpan v; 2292 ExprSpan v;
2293 spanExpr(&v, pParse, TK_STRING, &yymsp[0].minor.yy0); 2293 spanExpr(&v, pParse, TK_STRING, &yymsp[0].minor.yy0);
2294 sqlite3AddDefaultValue(pParse,&v); 2294 sqlite3AddDefaultValue(pParse,&v);
2295 } 2295 }
2296 #line 2297 "parse.c" 2296 #line 2297 "parse.c"
2297 break; 2297 break;
2298 case 63: /* ccons ::= NOT NULL onconf */ 2298 case 63: /* ccons ::= NOT NULL onconf */
2299 #line 301 "parse.y" 2299 #line 296 "parse.y"
2300 {sqlite3AddNotNull(pParse, yymsp[0].minor.yy328);} 2300 {sqlite3AddNotNull(pParse, yymsp[0].minor.yy328);}
2301 #line 2302 "parse.c" 2301 #line 2302 "parse.c"
2302 break; 2302 break;
2303 case 64: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */ 2303 case 64: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
2304 #line 303 "parse.y" 2304 #line 298 "parse.y"
2305 {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy328,yymsp[0].minor.yy328,yymsp[ -2].minor.yy328);} 2305 {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy328,yymsp[0].minor.yy328,yymsp[ -2].minor.yy328);}
2306 #line 2307 "parse.c" 2306 #line 2307 "parse.c"
2307 break; 2307 break;
2308 case 65: /* ccons ::= UNIQUE onconf */ 2308 case 65: /* ccons ::= UNIQUE onconf */
2309 #line 304 "parse.y" 2309 #line 299 "parse.y"
2310 {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy328,0,0,0,0);} 2310 {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy328,0,0,0,0);}
2311 #line 2312 "parse.c" 2311 #line 2312 "parse.c"
2312 break; 2312 break;
2313 case 66: /* ccons ::= CHECK LP expr RP */ 2313 case 66: /* ccons ::= CHECK LP expr RP */
2314 #line 305 "parse.y" 2314 #line 300 "parse.y"
2315 {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy346.pExpr);} 2315 {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy346.pExpr);}
2316 #line 2317 "parse.c" 2316 #line 2317 "parse.c"
2317 break; 2317 break;
2318 case 67: /* ccons ::= REFERENCES nm idxlist_opt refargs */ 2318 case 67: /* ccons ::= REFERENCES nm idxlist_opt refargs */
2319 #line 307 "parse.y" 2319 #line 302 "parse.y"
2320 {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy14,yyms p[0].minor.yy328);} 2320 {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy14,yyms p[0].minor.yy328);}
2321 #line 2322 "parse.c" 2321 #line 2322 "parse.c"
2322 break; 2322 break;
2323 case 68: /* ccons ::= defer_subclause */ 2323 case 68: /* ccons ::= defer_subclause */
2324 #line 308 "parse.y" 2324 #line 303 "parse.y"
2325 {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy328);} 2325 {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy328);}
2326 #line 2327 "parse.c" 2326 #line 2327 "parse.c"
2327 break; 2327 break;
2328 case 69: /* ccons ::= COLLATE ids */ 2328 case 69: /* ccons ::= COLLATE ids */
2329 #line 309 "parse.y" 2329 #line 304 "parse.y"
2330 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);} 2330 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
2331 #line 2332 "parse.c" 2331 #line 2332 "parse.c"
2332 break; 2332 break;
2333 case 72: /* refargs ::= */ 2333 case 72: /* refargs ::= */
2334 #line 322 "parse.y" 2334 #line 317 "parse.y"
2335 { yygotominor.yy328 = OE_Restrict * 0x010101; } 2335 { yygotominor.yy328 = OE_Restrict * 0x010101; }
2336 #line 2337 "parse.c" 2336 #line 2337 "parse.c"
2337 break; 2337 break;
2338 case 73: /* refargs ::= refargs refarg */ 2338 case 73: /* refargs ::= refargs refarg */
2339 #line 323 "parse.y" 2339 #line 318 "parse.y"
2340 { yygotominor.yy328 = (yymsp[-1].minor.yy328 & ~yymsp[0].minor.yy429.mask) | yym sp[0].minor.yy429.value; } 2340 { yygotominor.yy328 = (yymsp[-1].minor.yy328 & ~yymsp[0].minor.yy429.mask) | yym sp[0].minor.yy429.value; }
2341 #line 2342 "parse.c" 2341 #line 2342 "parse.c"
2342 break; 2342 break;
2343 case 74: /* refarg ::= MATCH nm */ 2343 case 74: /* refarg ::= MATCH nm */
2344 #line 325 "parse.y" 2344 #line 320 "parse.y"
2345 { yygotominor.yy429.value = 0; yygotominor.yy429.mask = 0x000000; } 2345 { yygotominor.yy429.value = 0; yygotominor.yy429.mask = 0x000000; }
2346 #line 2347 "parse.c" 2346 #line 2347 "parse.c"
2347 break; 2347 break;
2348 case 75: /* refarg ::= ON DELETE refact */ 2348 case 75: /* refarg ::= ON DELETE refact */
2349 #line 326 "parse.y" 2349 #line 321 "parse.y"
2350 { yygotominor.yy429.value = yymsp[0].minor.yy328; yygotominor.yy429.mask = 0 x0000ff; } 2350 { yygotominor.yy429.value = yymsp[0].minor.yy328; yygotominor.yy429.mask = 0 x0000ff; }
2351 #line 2352 "parse.c" 2351 #line 2352 "parse.c"
2352 break; 2352 break;
2353 case 76: /* refarg ::= ON UPDATE refact */ 2353 case 76: /* refarg ::= ON UPDATE refact */
2354 #line 327 "parse.y" 2354 #line 322 "parse.y"
2355 { yygotominor.yy429.value = yymsp[0].minor.yy328<<8; yygotominor.yy429.mask = 0 x00ff00; } 2355 { yygotominor.yy429.value = yymsp[0].minor.yy328<<8; yygotominor.yy429.mask = 0 x00ff00; }
2356 #line 2357 "parse.c" 2356 #line 2357 "parse.c"
2357 break; 2357 break;
2358 case 77: /* refarg ::= ON INSERT refact */ 2358 case 77: /* refarg ::= ON INSERT refact */
2359 #line 328 "parse.y" 2359 #line 323 "parse.y"
2360 { yygotominor.yy429.value = yymsp[0].minor.yy328<<16; yygotominor.yy429.mask = 0 xff0000; } 2360 { yygotominor.yy429.value = yymsp[0].minor.yy328<<16; yygotominor.yy429.mask = 0 xff0000; }
2361 #line 2362 "parse.c" 2361 #line 2362 "parse.c"
2362 break; 2362 break;
2363 case 78: /* refact ::= SET NULL */ 2363 case 78: /* refact ::= SET NULL */
2364 #line 330 "parse.y" 2364 #line 325 "parse.y"
2365 { yygotominor.yy328 = OE_SetNull; } 2365 { yygotominor.yy328 = OE_SetNull; }
2366 #line 2367 "parse.c" 2366 #line 2367 "parse.c"
2367 break; 2367 break;
2368 case 79: /* refact ::= SET DEFAULT */ 2368 case 79: /* refact ::= SET DEFAULT */
2369 #line 331 "parse.y" 2369 #line 326 "parse.y"
2370 { yygotominor.yy328 = OE_SetDflt; } 2370 { yygotominor.yy328 = OE_SetDflt; }
2371 #line 2372 "parse.c" 2371 #line 2372 "parse.c"
2372 break; 2372 break;
2373 case 80: /* refact ::= CASCADE */ 2373 case 80: /* refact ::= CASCADE */
2374 #line 332 "parse.y" 2374 #line 327 "parse.y"
2375 { yygotominor.yy328 = OE_Cascade; } 2375 { yygotominor.yy328 = OE_Cascade; }
2376 #line 2377 "parse.c" 2376 #line 2377 "parse.c"
2377 break; 2377 break;
2378 case 81: /* refact ::= RESTRICT */ 2378 case 81: /* refact ::= RESTRICT */
2379 #line 333 "parse.y" 2379 #line 328 "parse.y"
2380 { yygotominor.yy328 = OE_Restrict; } 2380 { yygotominor.yy328 = OE_Restrict; }
2381 #line 2382 "parse.c" 2381 #line 2382 "parse.c"
2382 break; 2382 break;
2383 case 82: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ 2383 case 82: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
2384 case 83: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ yytes tcase(yyruleno==83); 2384 case 83: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ yytes tcase(yyruleno==83);
2385 case 98: /* defer_subclause_opt ::= defer_subclause */ yytestcase(yyruleno ==98); 2385 case 98: /* defer_subclause_opt ::= defer_subclause */ yytestcase(yyruleno ==98);
2386 case 100: /* onconf ::= ON CONFLICT resolvetype */ yytestcase(yyruleno==10 0); 2386 case 100: /* onconf ::= ON CONFLICT resolvetype */ yytestcase(yyruleno==10 0);
2387 case 103: /* resolvetype ::= raisetype */ yytestcase(yyruleno==103); 2387 case 103: /* resolvetype ::= raisetype */ yytestcase(yyruleno==103);
2388 #line 335 "parse.y" 2388 #line 330 "parse.y"
2389 {yygotominor.yy328 = yymsp[0].minor.yy328;} 2389 {yygotominor.yy328 = yymsp[0].minor.yy328;}
2390 #line 2391 "parse.c" 2390 #line 2391 "parse.c"
2391 break; 2391 break;
2392 case 87: /* conslist_opt ::= */ 2392 case 87: /* conslist_opt ::= */
2393 #line 345 "parse.y" 2393 #line 340 "parse.y"
2394 {yygotominor.yy0.n = 0; yygotominor.yy0.z = 0;} 2394 {yygotominor.yy0.n = 0; yygotominor.yy0.z = 0;}
2395 #line 2396 "parse.c" 2395 #line 2396 "parse.c"
2396 break; 2396 break;
2397 case 88: /* conslist_opt ::= COMMA conslist */ 2397 case 88: /* conslist_opt ::= COMMA conslist */
2398 #line 346 "parse.y" 2398 #line 341 "parse.y"
2399 {yygotominor.yy0 = yymsp[-1].minor.yy0;} 2399 {yygotominor.yy0 = yymsp[-1].minor.yy0;}
2400 #line 2401 "parse.c" 2400 #line 2401 "parse.c"
2401 break; 2401 break;
2402 case 93: /* tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf */ 2402 case 93: /* tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf */
2403 #line 352 "parse.y" 2403 #line 347 "parse.y"
2404 {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy14,yymsp[0].minor.yy328,yymsp[-2] .minor.yy328,0);} 2404 {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy14,yymsp[0].minor.yy328,yymsp[-2] .minor.yy328,0);}
2405 #line 2406 "parse.c" 2405 #line 2406 "parse.c"
2406 break; 2406 break;
2407 case 94: /* tcons ::= UNIQUE LP idxlist RP onconf */ 2407 case 94: /* tcons ::= UNIQUE LP idxlist RP onconf */
2408 #line 354 "parse.y" 2408 #line 349 "parse.y"
2409 {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy14,yymsp[0].minor.yy328,0,0,0 ,0);} 2409 {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy14,yymsp[0].minor.yy328,0,0,0 ,0);}
2410 #line 2411 "parse.c" 2410 #line 2411 "parse.c"
2411 break; 2411 break;
2412 case 95: /* tcons ::= CHECK LP expr RP onconf */ 2412 case 95: /* tcons ::= CHECK LP expr RP onconf */
2413 #line 356 "parse.y" 2413 #line 351 "parse.y"
2414 {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy346.pExpr);} 2414 {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy346.pExpr);}
2415 #line 2416 "parse.c" 2415 #line 2416 "parse.c"
2416 break; 2416 break;
2417 case 96: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt */ 2417 case 96: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt */
2418 #line 358 "parse.y" 2418 #line 353 "parse.y"
2419 { 2419 {
2420 sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy14, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy14, yymsp[-1].minor.yy328); 2420 sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy14, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy14, yymsp[-1].minor.yy328);
2421 sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy328); 2421 sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy328);
2422 } 2422 }
2423 #line 2424 "parse.c" 2423 #line 2424 "parse.c"
2424 break; 2424 break;
2425 case 99: /* onconf ::= */ 2425 case 99: /* onconf ::= */
2426 #line 372 "parse.y" 2426 #line 367 "parse.y"
2427 {yygotominor.yy328 = OE_Default;} 2427 {yygotominor.yy328 = OE_Default;}
2428 #line 2429 "parse.c" 2428 #line 2429 "parse.c"
2429 break; 2429 break;
2430 case 101: /* orconf ::= */ 2430 case 101: /* orconf ::= */
2431 #line 374 "parse.y" 2431 #line 369 "parse.y"
2432 {yygotominor.yy186 = OE_Default;} 2432 {yygotominor.yy186 = OE_Default;}
2433 #line 2434 "parse.c" 2433 #line 2434 "parse.c"
2434 break; 2434 break;
2435 case 102: /* orconf ::= OR resolvetype */ 2435 case 102: /* orconf ::= OR resolvetype */
2436 #line 375 "parse.y" 2436 #line 370 "parse.y"
2437 {yygotominor.yy186 = (u8)yymsp[0].minor.yy328;} 2437 {yygotominor.yy186 = (u8)yymsp[0].minor.yy328;}
2438 #line 2439 "parse.c" 2438 #line 2439 "parse.c"
2439 break; 2439 break;
2440 case 104: /* resolvetype ::= IGNORE */ 2440 case 104: /* resolvetype ::= IGNORE */
2441 #line 377 "parse.y" 2441 #line 372 "parse.y"
2442 {yygotominor.yy328 = OE_Ignore;} 2442 {yygotominor.yy328 = OE_Ignore;}
2443 #line 2444 "parse.c" 2443 #line 2444 "parse.c"
2444 break; 2444 break;
2445 case 105: /* resolvetype ::= REPLACE */ 2445 case 105: /* resolvetype ::= REPLACE */
2446 #line 378 "parse.y" 2446 #line 373 "parse.y"
2447 {yygotominor.yy328 = OE_Replace;} 2447 {yygotominor.yy328 = OE_Replace;}
2448 #line 2449 "parse.c" 2448 #line 2449 "parse.c"
2449 break; 2449 break;
2450 case 106: /* cmd ::= DROP TABLE ifexists fullname */ 2450 case 106: /* cmd ::= DROP TABLE ifexists fullname */
2451 #line 382 "parse.y" 2451 #line 377 "parse.y"
2452 { 2452 {
2453 sqlite3DropTable(pParse, yymsp[0].minor.yy65, 0, yymsp[-1].minor.yy328); 2453 sqlite3DropTable(pParse, yymsp[0].minor.yy65, 0, yymsp[-1].minor.yy328);
2454 } 2454 }
2455 #line 2456 "parse.c" 2455 #line 2456 "parse.c"
2456 break; 2456 break;
2457 case 109: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm AS select */ 2457 case 109: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm AS select */
2458 #line 392 "parse.y" 2458 #line 387 "parse.y"
2459 { 2459 {
2460 sqlite3CreateView(pParse, &yymsp[-7].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[- 2].minor.yy0, yymsp[0].minor.yy3, yymsp[-6].minor.yy328, yymsp[-4].minor.yy328); 2460 sqlite3CreateView(pParse, &yymsp[-7].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[- 2].minor.yy0, yymsp[0].minor.yy3, yymsp[-6].minor.yy328, yymsp[-4].minor.yy328);
2461 } 2461 }
2462 #line 2463 "parse.c" 2462 #line 2463 "parse.c"
2463 break; 2463 break;
2464 case 110: /* cmd ::= DROP VIEW ifexists fullname */ 2464 case 110: /* cmd ::= DROP VIEW ifexists fullname */
2465 #line 395 "parse.y" 2465 #line 390 "parse.y"
2466 { 2466 {
2467 sqlite3DropTable(pParse, yymsp[0].minor.yy65, 1, yymsp[-1].minor.yy328); 2467 sqlite3DropTable(pParse, yymsp[0].minor.yy65, 1, yymsp[-1].minor.yy328);
2468 } 2468 }
2469 #line 2470 "parse.c" 2469 #line 2470 "parse.c"
2470 break; 2470 break;
2471 case 111: /* cmd ::= select */ 2471 case 111: /* cmd ::= select */
2472 #line 402 "parse.y" 2472 #line 397 "parse.y"
2473 { 2473 {
2474 SelectDest dest = {SRT_Output, 0, 0, 0, 0}; 2474 SelectDest dest = {SRT_Output, 0, 0, 0, 0};
2475 sqlite3Select(pParse, yymsp[0].minor.yy3, &dest); 2475 sqlite3Select(pParse, yymsp[0].minor.yy3, &dest);
2476 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy3); 2476 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy3);
2477 } 2477 }
2478 #line 2479 "parse.c" 2478 #line 2479 "parse.c"
2479 break; 2479 break;
2480 case 112: /* select ::= oneselect */ 2480 case 112: /* select ::= oneselect */
2481 #line 413 "parse.y" 2481 #line 408 "parse.y"
2482 {yygotominor.yy3 = yymsp[0].minor.yy3;} 2482 {yygotominor.yy3 = yymsp[0].minor.yy3;}
2483 #line 2484 "parse.c" 2483 #line 2484 "parse.c"
2484 break; 2484 break;
2485 case 113: /* select ::= select multiselect_op oneselect */ 2485 case 113: /* select ::= select multiselect_op oneselect */
2486 #line 415 "parse.y" 2486 #line 410 "parse.y"
2487 { 2487 {
2488 if( yymsp[0].minor.yy3 ){ 2488 if( yymsp[0].minor.yy3 ){
2489 yymsp[0].minor.yy3->op = (u8)yymsp[-1].minor.yy328; 2489 yymsp[0].minor.yy3->op = (u8)yymsp[-1].minor.yy328;
2490 yymsp[0].minor.yy3->pPrior = yymsp[-2].minor.yy3; 2490 yymsp[0].minor.yy3->pPrior = yymsp[-2].minor.yy3;
2491 }else{ 2491 }else{
2492 sqlite3SelectDelete(pParse->db, yymsp[-2].minor.yy3); 2492 sqlite3SelectDelete(pParse->db, yymsp[-2].minor.yy3);
2493 } 2493 }
2494 yygotominor.yy3 = yymsp[0].minor.yy3; 2494 yygotominor.yy3 = yymsp[0].minor.yy3;
2495 } 2495 }
2496 #line 2497 "parse.c" 2496 #line 2497 "parse.c"
2497 break; 2497 break;
2498 case 115: /* multiselect_op ::= UNION ALL */ 2498 case 115: /* multiselect_op ::= UNION ALL */
2499 #line 426 "parse.y" 2499 #line 421 "parse.y"
2500 {yygotominor.yy328 = TK_ALL;} 2500 {yygotominor.yy328 = TK_ALL;}
2501 #line 2502 "parse.c" 2501 #line 2502 "parse.c"
2502 break; 2502 break;
2503 case 117: /* oneselect ::= SELECT distinct selcollist from where_opt group by_opt having_opt orderby_opt limit_opt */ 2503 case 117: /* oneselect ::= SELECT distinct selcollist from where_opt group by_opt having_opt orderby_opt limit_opt */
2504 #line 430 "parse.y" 2504 #line 425 "parse.y"
2505 { 2505 {
2506 yygotominor.yy3 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy14,yymsp[-5].minor .yy65,yymsp[-4].minor.yy132,yymsp[-3].minor.yy14,yymsp[-2].minor.yy132,yymsp[-1] .minor.yy14,yymsp[-7].minor.yy328,yymsp[0].minor.yy476.pLimit,yymsp[0].minor.yy4 76.pOffset); 2506 yygotominor.yy3 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy14,yymsp[-5].minor .yy65,yymsp[-4].minor.yy132,yymsp[-3].minor.yy14,yymsp[-2].minor.yy132,yymsp[-1] .minor.yy14,yymsp[-7].minor.yy328,yymsp[0].minor.yy476.pLimit,yymsp[0].minor.yy4 76.pOffset);
2507 } 2507 }
2508 #line 2509 "parse.c" 2508 #line 2509 "parse.c"
2509 break; 2509 break;
2510 case 121: /* sclp ::= selcollist COMMA */ 2510 case 121: /* sclp ::= selcollist COMMA */
2511 case 247: /* idxlist_opt ::= LP idxlist RP */ yytestcase(yyruleno==247); 2511 case 247: /* idxlist_opt ::= LP idxlist RP */ yytestcase(yyruleno==247);
2512 #line 451 "parse.y" 2512 #line 446 "parse.y"
2513 {yygotominor.yy14 = yymsp[-1].minor.yy14;} 2513 {yygotominor.yy14 = yymsp[-1].minor.yy14;}
2514 #line 2515 "parse.c" 2514 #line 2515 "parse.c"
2515 break; 2515 break;
2516 case 122: /* sclp ::= */ 2516 case 122: /* sclp ::= */
2517 case 150: /* orderby_opt ::= */ yytestcase(yyruleno==150); 2517 case 150: /* orderby_opt ::= */ yytestcase(yyruleno==150);
2518 case 158: /* groupby_opt ::= */ yytestcase(yyruleno==158); 2518 case 158: /* groupby_opt ::= */ yytestcase(yyruleno==158);
2519 case 240: /* exprlist ::= */ yytestcase(yyruleno==240); 2519 case 240: /* exprlist ::= */ yytestcase(yyruleno==240);
2520 case 246: /* idxlist_opt ::= */ yytestcase(yyruleno==246); 2520 case 246: /* idxlist_opt ::= */ yytestcase(yyruleno==246);
2521 #line 452 "parse.y" 2521 #line 447 "parse.y"
2522 {yygotominor.yy14 = 0;} 2522 {yygotominor.yy14 = 0;}
2523 #line 2524 "parse.c" 2523 #line 2524 "parse.c"
2524 break; 2524 break;
2525 case 123: /* selcollist ::= sclp expr as */ 2525 case 123: /* selcollist ::= sclp expr as */
2526 #line 453 "parse.y" 2526 #line 448 "parse.y"
2527 { 2527 {
2528 yygotominor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy14, yymsp[ -1].minor.yy346.pExpr); 2528 yygotominor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy14, yymsp[ -1].minor.yy346.pExpr);
2529 if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yygotominor.yy14, &yymsp[0].minor.yy0, 1); 2529 if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yygotominor.yy14, &yymsp[0].minor.yy0, 1);
2530 sqlite3ExprListSetSpan(pParse,yygotominor.yy14,&yymsp[-1].minor.yy346); 2530 sqlite3ExprListSetSpan(pParse,yygotominor.yy14,&yymsp[-1].minor.yy346);
2531 } 2531 }
2532 #line 2533 "parse.c" 2532 #line 2533 "parse.c"
2533 break; 2533 break;
2534 case 124: /* selcollist ::= sclp STAR */ 2534 case 124: /* selcollist ::= sclp STAR */
2535 #line 458 "parse.y" 2535 #line 453 "parse.y"
2536 { 2536 {
2537 Expr *p = sqlite3Expr(pParse->db, TK_ALL, 0); 2537 Expr *p = sqlite3Expr(pParse->db, TK_ALL, 0);
2538 yygotominor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-1].minor.yy14, p); 2538 yygotominor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-1].minor.yy14, p);
2539 } 2539 }
2540 #line 2541 "parse.c" 2540 #line 2541 "parse.c"
2541 break; 2541 break;
2542 case 125: /* selcollist ::= sclp nm DOT STAR */ 2542 case 125: /* selcollist ::= sclp nm DOT STAR */
2543 #line 462 "parse.y" 2543 #line 457 "parse.y"
2544 { 2544 {
2545 Expr *pRight = sqlite3PExpr(pParse, TK_ALL, 0, 0, &yymsp[0].minor.yy0); 2545 Expr *pRight = sqlite3PExpr(pParse, TK_ALL, 0, 0, &yymsp[0].minor.yy0);
2546 Expr *pLeft = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0); 2546 Expr *pLeft = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0);
2547 Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight, 0); 2547 Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight, 0);
2548 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy14, pDot); 2548 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy14, pDot);
2549 } 2549 }
2550 #line 2551 "parse.c" 2550 #line 2551 "parse.c"
2551 break; 2551 break;
2552 case 128: /* as ::= */ 2552 case 128: /* as ::= */
2553 #line 475 "parse.y" 2553 #line 470 "parse.y"
2554 {yygotominor.yy0.n = 0;} 2554 {yygotominor.yy0.n = 0;}
2555 #line 2556 "parse.c" 2555 #line 2556 "parse.c"
2556 break; 2556 break;
2557 case 129: /* from ::= */ 2557 case 129: /* from ::= */
2558 #line 487 "parse.y" 2558 #line 482 "parse.y"
2559 {yygotominor.yy65 = sqlite3DbMallocZero(pParse->db, sizeof(*yygotominor.yy65));} 2559 {yygotominor.yy65 = sqlite3DbMallocZero(pParse->db, sizeof(*yygotominor.yy65));}
2560 #line 2561 "parse.c" 2560 #line 2561 "parse.c"
2561 break; 2561 break;
2562 case 130: /* from ::= FROM seltablist */ 2562 case 130: /* from ::= FROM seltablist */
2563 #line 488 "parse.y" 2563 #line 483 "parse.y"
2564 { 2564 {
2565 yygotominor.yy65 = yymsp[0].minor.yy65; 2565 yygotominor.yy65 = yymsp[0].minor.yy65;
2566 sqlite3SrcListShiftJoinType(yygotominor.yy65); 2566 sqlite3SrcListShiftJoinType(yygotominor.yy65);
2567 } 2567 }
2568 #line 2569 "parse.c" 2568 #line 2569 "parse.c"
2569 break; 2569 break;
2570 case 131: /* stl_prefix ::= seltablist joinop */ 2570 case 131: /* stl_prefix ::= seltablist joinop */
2571 #line 496 "parse.y" 2571 #line 491 "parse.y"
2572 { 2572 {
2573 yygotominor.yy65 = yymsp[-1].minor.yy65; 2573 yygotominor.yy65 = yymsp[-1].minor.yy65;
2574 if( ALWAYS(yygotominor.yy65 && yygotominor.yy65->nSrc>0) ) yygotominor.yy65-> a[yygotominor.yy65->nSrc-1].jointype = (u8)yymsp[0].minor.yy328; 2574 if( ALWAYS(yygotominor.yy65 && yygotominor.yy65->nSrc>0) ) yygotominor.yy65-> a[yygotominor.yy65->nSrc-1].jointype = (u8)yymsp[0].minor.yy328;
2575 } 2575 }
2576 #line 2577 "parse.c" 2576 #line 2577 "parse.c"
2577 break; 2577 break;
2578 case 132: /* stl_prefix ::= */ 2578 case 132: /* stl_prefix ::= */
2579 #line 500 "parse.y" 2579 #line 495 "parse.y"
2580 {yygotominor.yy65 = 0;} 2580 {yygotominor.yy65 = 0;}
2581 #line 2582 "parse.c" 2581 #line 2582 "parse.c"
2582 break; 2582 break;
2583 case 133: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using _opt */ 2583 case 133: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using _opt */
2584 #line 501 "parse.y" 2584 #line 496 "parse.y"
2585 { 2585 {
2586 yygotominor.yy65 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy65,&y ymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.y y132,yymsp[0].minor.yy408); 2586 yygotominor.yy65 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy65,&y ymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.y y132,yymsp[0].minor.yy408);
2587 sqlite3SrcListIndexedBy(pParse, yygotominor.yy65, &yymsp[-2].minor.yy0); 2587 sqlite3SrcListIndexedBy(pParse, yygotominor.yy65, &yymsp[-2].minor.yy0);
2588 } 2588 }
2589 #line 2590 "parse.c" 2589 #line 2590 "parse.c"
2590 break; 2590 break;
2591 case 134: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */ 2591 case 134: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
2592 #line 507 "parse.y" 2592 #line 502 "parse.y"
2593 { 2593 {
2594 yygotominor.yy65 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy65, 0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy3,yymsp[-1].minor.yy132,yymsp[0].mino r.yy408); 2594 yygotominor.yy65 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy65, 0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy3,yymsp[-1].minor.yy132,yymsp[0].mino r.yy408);
2595 } 2595 }
2596 #line 2597 "parse.c" 2596 #line 2597 "parse.c"
2597 break; 2597 break;
2598 case 135: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_op t */ 2598 case 135: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_op t */
2599 #line 511 "parse.y" 2599 #line 506 "parse.y"
2600 { 2600 {
2601 if( yymsp[-6].minor.yy65==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.y y132==0 && yymsp[0].minor.yy408==0 ){ 2601 if( yymsp[-6].minor.yy65==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.y y132==0 && yymsp[0].minor.yy408==0 ){
2602 yygotominor.yy65 = yymsp[-4].minor.yy65; 2602 yygotominor.yy65 = yymsp[-4].minor.yy65;
2603 }else{ 2603 }else{
2604 Select *pSubquery; 2604 Select *pSubquery;
2605 sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy65); 2605 sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy65);
2606 pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy65,0,0,0,0,0,0,0); 2606 pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy65,0,0,0,0,0,0,0);
2607 yygotominor.yy65 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy6 5,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy132,yymsp[0].minor.yy408) ; 2607 yygotominor.yy65 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy6 5,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy132,yymsp[0].minor.yy408) ;
2608 } 2608 }
2609 } 2609 }
2610 #line 2611 "parse.c" 2610 #line 2611 "parse.c"
2611 break; 2611 break;
2612 case 136: /* dbnm ::= */ 2612 case 136: /* dbnm ::= */
2613 case 145: /* indexed_opt ::= */ yytestcase(yyruleno==145); 2613 case 145: /* indexed_opt ::= */ yytestcase(yyruleno==145);
2614 #line 536 "parse.y" 2614 #line 531 "parse.y"
2615 {yygotominor.yy0.z=0; yygotominor.yy0.n=0;} 2615 {yygotominor.yy0.z=0; yygotominor.yy0.n=0;}
2616 #line 2617 "parse.c" 2616 #line 2617 "parse.c"
2617 break; 2617 break;
2618 case 138: /* fullname ::= nm dbnm */ 2618 case 138: /* fullname ::= nm dbnm */
2619 #line 541 "parse.y" 2619 #line 536 "parse.y"
2620 {yygotominor.yy65 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-1].minor.yy0,&yyms p[0].minor.yy0);} 2620 {yygotominor.yy65 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-1].minor.yy0,&yyms p[0].minor.yy0);}
2621 #line 2622 "parse.c" 2621 #line 2622 "parse.c"
2622 break; 2622 break;
2623 case 139: /* joinop ::= COMMA|JOIN */ 2623 case 139: /* joinop ::= COMMA|JOIN */
2624 #line 545 "parse.y" 2624 #line 540 "parse.y"
2625 { yygotominor.yy328 = JT_INNER; } 2625 { yygotominor.yy328 = JT_INNER; }
2626 #line 2627 "parse.c" 2626 #line 2627 "parse.c"
2627 break; 2627 break;
2628 case 140: /* joinop ::= JOIN_KW JOIN */ 2628 case 140: /* joinop ::= JOIN_KW JOIN */
2629 #line 546 "parse.y" 2629 #line 541 "parse.y"
2630 { yygotominor.yy328 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); } 2630 { yygotominor.yy328 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); }
2631 #line 2632 "parse.c" 2631 #line 2632 "parse.c"
2632 break; 2632 break;
2633 case 141: /* joinop ::= JOIN_KW nm JOIN */ 2633 case 141: /* joinop ::= JOIN_KW nm JOIN */
2634 #line 547 "parse.y" 2634 #line 542 "parse.y"
2635 { yygotominor.yy328 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].min or.yy0,0); } 2635 { yygotominor.yy328 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].min or.yy0,0); }
2636 #line 2637 "parse.c" 2636 #line 2637 "parse.c"
2637 break; 2637 break;
2638 case 142: /* joinop ::= JOIN_KW nm nm JOIN */ 2638 case 142: /* joinop ::= JOIN_KW nm nm JOIN */
2639 #line 549 "parse.y" 2639 #line 544 "parse.y"
2640 { yygotominor.yy328 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].min or.yy0,&yymsp[-1].minor.yy0); } 2640 { yygotominor.yy328 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].min or.yy0,&yymsp[-1].minor.yy0); }
2641 #line 2642 "parse.c" 2641 #line 2642 "parse.c"
2642 break; 2642 break;
2643 case 143: /* on_opt ::= ON expr */ 2643 case 143: /* on_opt ::= ON expr */
2644 case 154: /* sortitem ::= expr */ yytestcase(yyruleno==154); 2644 case 154: /* sortitem ::= expr */ yytestcase(yyruleno==154);
2645 case 161: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==161); 2645 case 161: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==161);
2646 case 168: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==168); 2646 case 168: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==168);
2647 case 235: /* case_else ::= ELSE expr */ yytestcase(yyruleno==235); 2647 case 235: /* case_else ::= ELSE expr */ yytestcase(yyruleno==235);
2648 case 237: /* case_operand ::= expr */ yytestcase(yyruleno==237); 2648 case 237: /* case_operand ::= expr */ yytestcase(yyruleno==237);
2649 #line 553 "parse.y" 2649 #line 548 "parse.y"
2650 {yygotominor.yy132 = yymsp[0].minor.yy346.pExpr;} 2650 {yygotominor.yy132 = yymsp[0].minor.yy346.pExpr;}
2651 #line 2652 "parse.c" 2651 #line 2652 "parse.c"
2652 break; 2652 break;
2653 case 144: /* on_opt ::= */ 2653 case 144: /* on_opt ::= */
2654 case 160: /* having_opt ::= */ yytestcase(yyruleno==160); 2654 case 160: /* having_opt ::= */ yytestcase(yyruleno==160);
2655 case 167: /* where_opt ::= */ yytestcase(yyruleno==167); 2655 case 167: /* where_opt ::= */ yytestcase(yyruleno==167);
2656 case 236: /* case_else ::= */ yytestcase(yyruleno==236); 2656 case 236: /* case_else ::= */ yytestcase(yyruleno==236);
2657 case 238: /* case_operand ::= */ yytestcase(yyruleno==238); 2657 case 238: /* case_operand ::= */ yytestcase(yyruleno==238);
2658 #line 554 "parse.y" 2658 #line 549 "parse.y"
2659 {yygotominor.yy132 = 0;} 2659 {yygotominor.yy132 = 0;}
2660 #line 2661 "parse.c" 2660 #line 2661 "parse.c"
2661 break; 2661 break;
2662 case 147: /* indexed_opt ::= NOT INDEXED */ 2662 case 147: /* indexed_opt ::= NOT INDEXED */
2663 #line 569 "parse.y" 2663 #line 564 "parse.y"
2664 {yygotominor.yy0.z=0; yygotominor.yy0.n=1;} 2664 {yygotominor.yy0.z=0; yygotominor.yy0.n=1;}
2665 #line 2666 "parse.c" 2665 #line 2666 "parse.c"
2666 break; 2666 break;
2667 case 148: /* using_opt ::= USING LP inscollist RP */ 2667 case 148: /* using_opt ::= USING LP inscollist RP */
2668 case 180: /* inscollist_opt ::= LP inscollist RP */ yytestcase(yyruleno==1 80); 2668 case 180: /* inscollist_opt ::= LP inscollist RP */ yytestcase(yyruleno==1 80);
2669 #line 573 "parse.y" 2669 #line 568 "parse.y"
2670 {yygotominor.yy408 = yymsp[-1].minor.yy408;} 2670 {yygotominor.yy408 = yymsp[-1].minor.yy408;}
2671 #line 2672 "parse.c" 2671 #line 2672 "parse.c"
2672 break; 2672 break;
2673 case 149: /* using_opt ::= */ 2673 case 149: /* using_opt ::= */
2674 case 179: /* inscollist_opt ::= */ yytestcase(yyruleno==179); 2674 case 179: /* inscollist_opt ::= */ yytestcase(yyruleno==179);
2675 #line 574 "parse.y" 2675 #line 569 "parse.y"
2676 {yygotominor.yy408 = 0;} 2676 {yygotominor.yy408 = 0;}
2677 #line 2678 "parse.c" 2677 #line 2678 "parse.c"
2678 break; 2678 break;
2679 case 151: /* orderby_opt ::= ORDER BY sortlist */ 2679 case 151: /* orderby_opt ::= ORDER BY sortlist */
2680 case 159: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==15 9); 2680 case 159: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==15 9);
2681 case 239: /* exprlist ::= nexprlist */ yytestcase(yyruleno==239); 2681 case 239: /* exprlist ::= nexprlist */ yytestcase(yyruleno==239);
2682 #line 585 "parse.y" 2682 #line 580 "parse.y"
2683 {yygotominor.yy14 = yymsp[0].minor.yy14;} 2683 {yygotominor.yy14 = yymsp[0].minor.yy14;}
2684 #line 2685 "parse.c" 2684 #line 2685 "parse.c"
2685 break; 2685 break;
2686 case 152: /* sortlist ::= sortlist COMMA sortitem sortorder */ 2686 case 152: /* sortlist ::= sortlist COMMA sortitem sortorder */
2687 #line 586 "parse.y" 2687 #line 581 "parse.y"
2688 { 2688 {
2689 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy14,yymsp[-1] .minor.yy132); 2689 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy14,yymsp[-1] .minor.yy132);
2690 if( yygotominor.yy14 ) yygotominor.yy14->a[yygotominor.yy14->nExpr-1].sortOrde r = (u8)yymsp[0].minor.yy328; 2690 if( yygotominor.yy14 ) yygotominor.yy14->a[yygotominor.yy14->nExpr-1].sortOrde r = (u8)yymsp[0].minor.yy328;
2691 } 2691 }
2692 #line 2693 "parse.c" 2692 #line 2693 "parse.c"
2693 break; 2693 break;
2694 case 153: /* sortlist ::= sortitem sortorder */ 2694 case 153: /* sortlist ::= sortitem sortorder */
2695 #line 590 "parse.y" 2695 #line 585 "parse.y"
2696 { 2696 {
2697 yygotominor.yy14 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy132); 2697 yygotominor.yy14 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy132);
2698 if( yygotominor.yy14 && ALWAYS(yygotominor.yy14->a) ) yygotominor.yy14->a[0].s ortOrder = (u8)yymsp[0].minor.yy328; 2698 if( yygotominor.yy14 && ALWAYS(yygotominor.yy14->a) ) yygotominor.yy14->a[0].s ortOrder = (u8)yymsp[0].minor.yy328;
2699 } 2699 }
2700 #line 2701 "parse.c" 2700 #line 2701 "parse.c"
2701 break; 2701 break;
2702 case 155: /* sortorder ::= ASC */ 2702 case 155: /* sortorder ::= ASC */
2703 case 157: /* sortorder ::= */ yytestcase(yyruleno==157); 2703 case 157: /* sortorder ::= */ yytestcase(yyruleno==157);
2704 #line 598 "parse.y" 2704 #line 593 "parse.y"
2705 {yygotominor.yy328 = SQLITE_SO_ASC;} 2705 {yygotominor.yy328 = SQLITE_SO_ASC;}
2706 #line 2707 "parse.c" 2706 #line 2707 "parse.c"
2707 break; 2707 break;
2708 case 156: /* sortorder ::= DESC */ 2708 case 156: /* sortorder ::= DESC */
2709 #line 599 "parse.y" 2709 #line 594 "parse.y"
2710 {yygotominor.yy328 = SQLITE_SO_DESC;} 2710 {yygotominor.yy328 = SQLITE_SO_DESC;}
2711 #line 2712 "parse.c" 2711 #line 2712 "parse.c"
2712 break; 2712 break;
2713 case 162: /* limit_opt ::= */ 2713 case 162: /* limit_opt ::= */
2714 #line 625 "parse.y" 2714 #line 620 "parse.y"
2715 {yygotominor.yy476.pLimit = 0; yygotominor.yy476.pOffset = 0;} 2715 {yygotominor.yy476.pLimit = 0; yygotominor.yy476.pOffset = 0;}
2716 #line 2717 "parse.c" 2716 #line 2717 "parse.c"
2717 break; 2717 break;
2718 case 163: /* limit_opt ::= LIMIT expr */ 2718 case 163: /* limit_opt ::= LIMIT expr */
2719 #line 626 "parse.y" 2719 #line 621 "parse.y"
2720 {yygotominor.yy476.pLimit = yymsp[0].minor.yy346.pExpr; yygotominor.yy476.pOffse t = 0;} 2720 {yygotominor.yy476.pLimit = yymsp[0].minor.yy346.pExpr; yygotominor.yy476.pOffse t = 0;}
2721 #line 2722 "parse.c" 2721 #line 2722 "parse.c"
2722 break; 2722 break;
2723 case 164: /* limit_opt ::= LIMIT expr OFFSET expr */ 2723 case 164: /* limit_opt ::= LIMIT expr OFFSET expr */
2724 #line 628 "parse.y" 2724 #line 623 "parse.y"
2725 {yygotominor.yy476.pLimit = yymsp[-2].minor.yy346.pExpr; yygotominor.yy476.pOffs et = yymsp[0].minor.yy346.pExpr;} 2725 {yygotominor.yy476.pLimit = yymsp[-2].minor.yy346.pExpr; yygotominor.yy476.pOffs et = yymsp[0].minor.yy346.pExpr;}
2726 #line 2727 "parse.c" 2726 #line 2727 "parse.c"
2727 break; 2727 break;
2728 case 165: /* limit_opt ::= LIMIT expr COMMA expr */ 2728 case 165: /* limit_opt ::= LIMIT expr COMMA expr */
2729 #line 630 "parse.y" 2729 #line 625 "parse.y"
2730 {yygotominor.yy476.pOffset = yymsp[-2].minor.yy346.pExpr; yygotominor.yy476.pLim it = yymsp[0].minor.yy346.pExpr;} 2730 {yygotominor.yy476.pOffset = yymsp[-2].minor.yy346.pExpr; yygotominor.yy476.pLim it = yymsp[0].minor.yy346.pExpr;}
2731 #line 2732 "parse.c" 2731 #line 2732 "parse.c"
2732 break; 2732 break;
2733 case 166: /* cmd ::= DELETE FROM fullname indexed_opt where_opt */ 2733 case 166: /* cmd ::= DELETE FROM fullname indexed_opt where_opt */
2734 #line 643 "parse.y" 2734 #line 638 "parse.y"
2735 { 2735 {
2736 sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy65, &yymsp[-1].minor.yy0); 2736 sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy65, &yymsp[-1].minor.yy0);
2737 sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy65,yymsp[0].minor.yy132); 2737 sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy65,yymsp[0].minor.yy132);
2738 } 2738 }
2739 #line 2740 "parse.c" 2739 #line 2740 "parse.c"
2740 break; 2740 break;
2741 case 169: /* cmd ::= UPDATE orconf fullname indexed_opt SET setlist where_ opt */ 2741 case 169: /* cmd ::= UPDATE orconf fullname indexed_opt SET setlist where_ opt */
2742 #line 666 "parse.y" 2742 #line 661 "parse.y"
2743 { 2743 {
2744 sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy65, &yymsp[-3].minor.yy0); 2744 sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy65, &yymsp[-3].minor.yy0);
2745 sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy14,"set list"); 2745 sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy14,"set list");
2746 sqlite3Update(pParse,yymsp[-4].minor.yy65,yymsp[-1].minor.yy14,yymsp[0].minor. yy132,yymsp[-5].minor.yy186); 2746 sqlite3Update(pParse,yymsp[-4].minor.yy65,yymsp[-1].minor.yy14,yymsp[0].minor. yy132,yymsp[-5].minor.yy186);
2747 } 2747 }
2748 #line 2749 "parse.c" 2748 #line 2749 "parse.c"
2749 break; 2749 break;
2750 case 170: /* setlist ::= setlist COMMA nm EQ expr */ 2750 case 170: /* setlist ::= setlist COMMA nm EQ expr */
2751 #line 676 "parse.y" 2751 #line 671 "parse.y"
2752 { 2752 {
2753 yygotominor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy14, yymsp[0 ].minor.yy346.pExpr); 2753 yygotominor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy14, yymsp[0 ].minor.yy346.pExpr);
2754 sqlite3ExprListSetName(pParse, yygotominor.yy14, &yymsp[-2].minor.yy0, 1); 2754 sqlite3ExprListSetName(pParse, yygotominor.yy14, &yymsp[-2].minor.yy0, 1);
2755 } 2755 }
2756 #line 2757 "parse.c" 2756 #line 2757 "parse.c"
2757 break; 2757 break;
2758 case 171: /* setlist ::= nm EQ expr */ 2758 case 171: /* setlist ::= nm EQ expr */
2759 #line 680 "parse.y" 2759 #line 675 "parse.y"
2760 { 2760 {
2761 yygotominor.yy14 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy346.pExpr ); 2761 yygotominor.yy14 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy346.pExpr );
2762 sqlite3ExprListSetName(pParse, yygotominor.yy14, &yymsp[-2].minor.yy0, 1); 2762 sqlite3ExprListSetName(pParse, yygotominor.yy14, &yymsp[-2].minor.yy0, 1);
2763 } 2763 }
2764 #line 2765 "parse.c" 2764 #line 2765 "parse.c"
2765 break; 2765 break;
2766 case 172: /* cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP ite mlist RP */ 2766 case 172: /* cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP ite mlist RP */
2767 #line 689 "parse.y" 2767 #line 684 "parse.y"
2768 {sqlite3Insert(pParse, yymsp[-5].minor.yy65, yymsp[-1].minor.yy14, 0, yymsp[-4]. minor.yy408, yymsp[-7].minor.yy186);} 2768 {sqlite3Insert(pParse, yymsp[-5].minor.yy65, yymsp[-1].minor.yy14, 0, yymsp[-4]. minor.yy408, yymsp[-7].minor.yy186);}
2769 #line 2770 "parse.c" 2769 #line 2770 "parse.c"
2770 break; 2770 break;
2771 case 173: /* cmd ::= insert_cmd INTO fullname inscollist_opt select */ 2771 case 173: /* cmd ::= insert_cmd INTO fullname inscollist_opt select */
2772 #line 691 "parse.y" 2772 #line 686 "parse.y"
2773 {sqlite3Insert(pParse, yymsp[-2].minor.yy65, 0, yymsp[0].minor.yy3, yymsp[-1].mi nor.yy408, yymsp[-4].minor.yy186);} 2773 {sqlite3Insert(pParse, yymsp[-2].minor.yy65, 0, yymsp[0].minor.yy3, yymsp[-1].mi nor.yy408, yymsp[-4].minor.yy186);}
2774 #line 2775 "parse.c" 2774 #line 2775 "parse.c"
2775 break; 2775 break;
2776 case 174: /* cmd ::= insert_cmd INTO fullname inscollist_opt DEFAULT VALUE S */ 2776 case 174: /* cmd ::= insert_cmd INTO fullname inscollist_opt DEFAULT VALUE S */
2777 #line 693 "parse.y" 2777 #line 688 "parse.y"
2778 {sqlite3Insert(pParse, yymsp[-3].minor.yy65, 0, 0, yymsp[-2].minor.yy408, yymsp[ -5].minor.yy186);} 2778 {sqlite3Insert(pParse, yymsp[-3].minor.yy65, 0, 0, yymsp[-2].minor.yy408, yymsp[ -5].minor.yy186);}
2779 #line 2780 "parse.c" 2779 #line 2780 "parse.c"
2780 break; 2780 break;
2781 case 175: /* insert_cmd ::= INSERT orconf */ 2781 case 175: /* insert_cmd ::= INSERT orconf */
2782 #line 696 "parse.y" 2782 #line 691 "parse.y"
2783 {yygotominor.yy186 = yymsp[0].minor.yy186;} 2783 {yygotominor.yy186 = yymsp[0].minor.yy186;}
2784 #line 2785 "parse.c" 2784 #line 2785 "parse.c"
2785 break; 2785 break;
2786 case 176: /* insert_cmd ::= REPLACE */ 2786 case 176: /* insert_cmd ::= REPLACE */
2787 #line 697 "parse.y" 2787 #line 692 "parse.y"
2788 {yygotominor.yy186 = OE_Replace;} 2788 {yygotominor.yy186 = OE_Replace;}
2789 #line 2790 "parse.c" 2789 #line 2790 "parse.c"
2790 break; 2790 break;
2791 case 177: /* itemlist ::= itemlist COMMA expr */ 2791 case 177: /* itemlist ::= itemlist COMMA expr */
2792 case 241: /* nexprlist ::= nexprlist COMMA expr */ yytestcase(yyruleno==24 1); 2792 case 241: /* nexprlist ::= nexprlist COMMA expr */ yytestcase(yyruleno==24 1);
2793 #line 704 "parse.y" 2793 #line 699 "parse.y"
2794 {yygotominor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy14,yymsp[0].m inor.yy346.pExpr);} 2794 {yygotominor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy14,yymsp[0].m inor.yy346.pExpr);}
2795 #line 2796 "parse.c" 2795 #line 2796 "parse.c"
2796 break; 2796 break;
2797 case 178: /* itemlist ::= expr */ 2797 case 178: /* itemlist ::= expr */
2798 case 242: /* nexprlist ::= expr */ yytestcase(yyruleno==242); 2798 case 242: /* nexprlist ::= expr */ yytestcase(yyruleno==242);
2799 #line 706 "parse.y" 2799 #line 701 "parse.y"
2800 {yygotominor.yy14 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy346.pExpr);} 2800 {yygotominor.yy14 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy346.pExpr);}
2801 #line 2802 "parse.c" 2801 #line 2802 "parse.c"
2802 break; 2802 break;
2803 case 181: /* inscollist ::= inscollist COMMA nm */ 2803 case 181: /* inscollist ::= inscollist COMMA nm */
2804 #line 716 "parse.y" 2804 #line 711 "parse.y"
2805 {yygotominor.yy408 = sqlite3IdListAppend(pParse->db,yymsp[-2].minor.yy408,&yymsp [0].minor.yy0);} 2805 {yygotominor.yy408 = sqlite3IdListAppend(pParse->db,yymsp[-2].minor.yy408,&yymsp [0].minor.yy0);}
2806 #line 2807 "parse.c" 2806 #line 2807 "parse.c"
2807 break; 2807 break;
2808 case 182: /* inscollist ::= nm */ 2808 case 182: /* inscollist ::= nm */
2809 #line 718 "parse.y" 2809 #line 713 "parse.y"
2810 {yygotominor.yy408 = sqlite3IdListAppend(pParse->db,0,&yymsp[0].minor.yy0);} 2810 {yygotominor.yy408 = sqlite3IdListAppend(pParse->db,0,&yymsp[0].minor.yy0);}
2811 #line 2812 "parse.c" 2811 #line 2812 "parse.c"
2812 break; 2812 break;
2813 case 183: /* expr ::= term */ 2813 case 183: /* expr ::= term */
2814 case 211: /* escape ::= ESCAPE expr */ yytestcase(yyruleno==211); 2814 case 211: /* escape ::= ESCAPE expr */ yytestcase(yyruleno==211);
2815 #line 749 "parse.y" 2815 #line 744 "parse.y"
2816 {yygotominor.yy346 = yymsp[0].minor.yy346;} 2816 {yygotominor.yy346 = yymsp[0].minor.yy346;}
2817 #line 2818 "parse.c" 2817 #line 2818 "parse.c"
2818 break; 2818 break;
2819 case 184: /* expr ::= LP expr RP */ 2819 case 184: /* expr ::= LP expr RP */
2820 #line 750 "parse.y" 2820 #line 745 "parse.y"
2821 {yygotominor.yy346.pExpr = yymsp[-1].minor.yy346.pExpr; spanSet(&yygotominor.yy3 46,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);} 2821 {yygotominor.yy346.pExpr = yymsp[-1].minor.yy346.pExpr; spanSet(&yygotominor.yy3 46,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);}
2822 #line 2823 "parse.c" 2822 #line 2823 "parse.c"
2823 break; 2823 break;
2824 case 185: /* term ::= NULL */ 2824 case 185: /* term ::= NULL */
2825 case 190: /* term ::= INTEGER|FLOAT|BLOB */ yytestcase(yyruleno==190); 2825 case 190: /* term ::= INTEGER|FLOAT|BLOB */ yytestcase(yyruleno==190);
2826 case 191: /* term ::= STRING */ yytestcase(yyruleno==191); 2826 case 191: /* term ::= STRING */ yytestcase(yyruleno==191);
2827 #line 751 "parse.y" 2827 #line 746 "parse.y"
2828 {spanExpr(&yygotominor.yy346, pParse, yymsp[0].major, &yymsp[0].minor.yy0);} 2828 {spanExpr(&yygotominor.yy346, pParse, yymsp[0].major, &yymsp[0].minor.yy0);}
2829 #line 2830 "parse.c" 2829 #line 2830 "parse.c"
2830 break; 2830 break;
2831 case 186: /* expr ::= id */ 2831 case 186: /* expr ::= id */
2832 case 187: /* expr ::= JOIN_KW */ yytestcase(yyruleno==187); 2832 case 187: /* expr ::= JOIN_KW */ yytestcase(yyruleno==187);
2833 #line 752 "parse.y" 2833 #line 747 "parse.y"
2834 {spanExpr(&yygotominor.yy346, pParse, TK_ID, &yymsp[0].minor.yy0);} 2834 {spanExpr(&yygotominor.yy346, pParse, TK_ID, &yymsp[0].minor.yy0);}
2835 #line 2836 "parse.c" 2835 #line 2836 "parse.c"
2836 break; 2836 break;
2837 case 188: /* expr ::= nm DOT nm */ 2837 case 188: /* expr ::= nm DOT nm */
2838 #line 754 "parse.y" 2838 #line 749 "parse.y"
2839 { 2839 {
2840 Expr *temp1 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0); 2840 Expr *temp1 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0);
2841 Expr *temp2 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy0); 2841 Expr *temp2 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy0);
2842 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_DOT, temp1, temp2, 0); 2842 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_DOT, temp1, temp2, 0);
2843 spanSet(&yygotominor.yy346,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); 2843 spanSet(&yygotominor.yy346,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
2844 } 2844 }
2845 #line 2846 "parse.c" 2845 #line 2846 "parse.c"
2846 break; 2846 break;
2847 case 189: /* expr ::= nm DOT nm DOT nm */ 2847 case 189: /* expr ::= nm DOT nm DOT nm */
2848 #line 760 "parse.y" 2848 #line 755 "parse.y"
2849 { 2849 {
2850 Expr *temp1 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-4].minor.yy0); 2850 Expr *temp1 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-4].minor.yy0);
2851 Expr *temp2 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0); 2851 Expr *temp2 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0);
2852 Expr *temp3 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy0); 2852 Expr *temp3 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy0);
2853 Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3, 0); 2853 Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3, 0);
2854 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_DOT, temp1, temp4, 0); 2854 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_DOT, temp1, temp4, 0);
2855 spanSet(&yygotominor.yy346,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0); 2855 spanSet(&yygotominor.yy346,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0);
2856 } 2856 }
2857 #line 2858 "parse.c" 2857 #line 2858 "parse.c"
2858 break; 2858 break;
2859 case 192: /* expr ::= REGISTER */ 2859 case 192: /* expr ::= REGISTER */
2860 #line 770 "parse.y" 2860 #line 765 "parse.y"
2861 { 2861 {
2862 /* When doing a nested parse, one can include terms in an expression 2862 /* When doing a nested parse, one can include terms in an expression
2863 ** that look like this: #1 #2 ... These terms refer to registers 2863 ** that look like this: #1 #2 ... These terms refer to registers
2864 ** in the virtual machine. #N is the N-th register. */ 2864 ** in the virtual machine. #N is the N-th register. */
2865 if( pParse->nested==0 ){ 2865 if( pParse->nested==0 ){
2866 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &yymsp[0].minor.yy0); 2866 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &yymsp[0].minor.yy0);
2867 yygotominor.yy346.pExpr = 0; 2867 yygotominor.yy346.pExpr = 0;
2868 }else{ 2868 }else{
2869 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_REGISTER, 0, 0, &yymsp[0]. minor.yy0); 2869 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_REGISTER, 0, 0, &yymsp[0]. minor.yy0);
2870 if( yygotominor.yy346.pExpr ) sqlite3GetInt32(&yymsp[0].minor.yy0.z[1], &yyg otominor.yy346.pExpr->iTable); 2870 if( yygotominor.yy346.pExpr ) sqlite3GetInt32(&yymsp[0].minor.yy0.z[1], &yyg otominor.yy346.pExpr->iTable);
2871 } 2871 }
2872 spanSet(&yygotominor.yy346, &yymsp[0].minor.yy0, &yymsp[0].minor.yy0); 2872 spanSet(&yygotominor.yy346, &yymsp[0].minor.yy0, &yymsp[0].minor.yy0);
2873 } 2873 }
2874 #line 2875 "parse.c" 2874 #line 2875 "parse.c"
2875 break; 2875 break;
2876 case 193: /* expr ::= VARIABLE */ 2876 case 193: /* expr ::= VARIABLE */
2877 #line 783 "parse.y" 2877 #line 778 "parse.y"
2878 { 2878 {
2879 spanExpr(&yygotominor.yy346, pParse, TK_VARIABLE, &yymsp[0].minor.yy0); 2879 spanExpr(&yygotominor.yy346, pParse, TK_VARIABLE, &yymsp[0].minor.yy0);
2880 sqlite3ExprAssignVarNumber(pParse, yygotominor.yy346.pExpr); 2880 sqlite3ExprAssignVarNumber(pParse, yygotominor.yy346.pExpr);
2881 spanSet(&yygotominor.yy346, &yymsp[0].minor.yy0, &yymsp[0].minor.yy0); 2881 spanSet(&yygotominor.yy346, &yymsp[0].minor.yy0, &yymsp[0].minor.yy0);
2882 } 2882 }
2883 #line 2884 "parse.c" 2883 #line 2884 "parse.c"
2884 break; 2884 break;
2885 case 194: /* expr ::= expr COLLATE ids */ 2885 case 194: /* expr ::= expr COLLATE ids */
2886 #line 788 "parse.y" 2886 #line 783 "parse.y"
2887 { 2887 {
2888 yygotominor.yy346.pExpr = sqlite3ExprSetColl(pParse, yymsp[-2].minor.yy346.pEx pr, &yymsp[0].minor.yy0); 2888 yygotominor.yy346.pExpr = sqlite3ExprSetColl(pParse, yymsp[-2].minor.yy346.pEx pr, &yymsp[0].minor.yy0);
2889 yygotominor.yy346.zStart = yymsp[-2].minor.yy346.zStart; 2889 yygotominor.yy346.zStart = yymsp[-2].minor.yy346.zStart;
2890 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n]; 2890 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
2891 } 2891 }
2892 #line 2893 "parse.c" 2892 #line 2893 "parse.c"
2893 break; 2893 break;
2894 case 195: /* expr ::= CAST LP expr AS typetoken RP */ 2894 case 195: /* expr ::= CAST LP expr AS typetoken RP */
2895 #line 794 "parse.y" 2895 #line 789 "parse.y"
2896 { 2896 {
2897 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_CAST, yymsp[-3].minor.yy346. pExpr, 0, &yymsp[-1].minor.yy0); 2897 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_CAST, yymsp[-3].minor.yy346. pExpr, 0, &yymsp[-1].minor.yy0);
2898 spanSet(&yygotominor.yy346,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0); 2898 spanSet(&yygotominor.yy346,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0);
2899 } 2899 }
2900 #line 2901 "parse.c" 2900 #line 2901 "parse.c"
2901 break; 2901 break;
2902 case 196: /* expr ::= ID LP distinct exprlist RP */ 2902 case 196: /* expr ::= ID LP distinct exprlist RP */
2903 #line 799 "parse.y" 2903 #line 794 "parse.y"
2904 { 2904 {
2905 if( yymsp[-1].minor.yy14 && yymsp[-1].minor.yy14->nExpr>pParse->db->aLimit[SQL ITE_LIMIT_FUNCTION_ARG] ){ 2905 if( yymsp[-1].minor.yy14 && yymsp[-1].minor.yy14->nExpr>pParse->db->aLimit[SQL ITE_LIMIT_FUNCTION_ARG] ){
2906 sqlite3ErrorMsg(pParse, "too many arguments on function %T", &yymsp[-4].mino r.yy0); 2906 sqlite3ErrorMsg(pParse, "too many arguments on function %T", &yymsp[-4].mino r.yy0);
2907 } 2907 }
2908 yygotominor.yy346.pExpr = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy14, &y ymsp[-4].minor.yy0); 2908 yygotominor.yy346.pExpr = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy14, &y ymsp[-4].minor.yy0);
2909 spanSet(&yygotominor.yy346,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0); 2909 spanSet(&yygotominor.yy346,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0);
2910 if( yymsp[-2].minor.yy328 && yygotominor.yy346.pExpr ){ 2910 if( yymsp[-2].minor.yy328 && yygotominor.yy346.pExpr ){
2911 yygotominor.yy346.pExpr->flags |= EP_Distinct; 2911 yygotominor.yy346.pExpr->flags |= EP_Distinct;
2912 } 2912 }
2913 } 2913 }
2914 #line 2915 "parse.c" 2914 #line 2915 "parse.c"
2915 break; 2915 break;
2916 case 197: /* expr ::= ID LP STAR RP */ 2916 case 197: /* expr ::= ID LP STAR RP */
2917 #line 809 "parse.y" 2917 #line 804 "parse.y"
2918 { 2918 {
2919 yygotominor.yy346.pExpr = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0) ; 2919 yygotominor.yy346.pExpr = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0) ;
2920 spanSet(&yygotominor.yy346,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); 2920 spanSet(&yygotominor.yy346,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
2921 } 2921 }
2922 #line 2923 "parse.c" 2922 #line 2923 "parse.c"
2923 break; 2923 break;
2924 case 198: /* term ::= CTIME_KW */ 2924 case 198: /* term ::= CTIME_KW */
2925 #line 813 "parse.y" 2925 #line 808 "parse.y"
2926 { 2926 {
2927 /* The CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP values are 2927 /* The CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP values are
2928 ** treated as functions that return constants */ 2928 ** treated as functions that return constants */
2929 yygotominor.yy346.pExpr = sqlite3ExprFunction(pParse, 0,&yymsp[0].minor.yy0); 2929 yygotominor.yy346.pExpr = sqlite3ExprFunction(pParse, 0,&yymsp[0].minor.yy0);
2930 if( yygotominor.yy346.pExpr ){ 2930 if( yygotominor.yy346.pExpr ){
2931 yygotominor.yy346.pExpr->op = TK_CONST_FUNC; 2931 yygotominor.yy346.pExpr->op = TK_CONST_FUNC;
2932 } 2932 }
2933 spanSet(&yygotominor.yy346, &yymsp[0].minor.yy0, &yymsp[0].minor.yy0); 2933 spanSet(&yygotominor.yy346, &yymsp[0].minor.yy0, &yymsp[0].minor.yy0);
2934 } 2934 }
2935 #line 2936 "parse.c" 2935 #line 2936 "parse.c"
2936 break; 2936 break;
2937 case 199: /* expr ::= expr AND expr */ 2937 case 199: /* expr ::= expr AND expr */
2938 case 200: /* expr ::= expr OR expr */ yytestcase(yyruleno==200); 2938 case 200: /* expr ::= expr OR expr */ yytestcase(yyruleno==200);
2939 case 201: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==201); 2939 case 201: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==201);
2940 case 202: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==202); 2940 case 202: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==202);
2941 case 203: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(y yruleno==203); 2941 case 203: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(y yruleno==203);
2942 case 204: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==204); 2942 case 204: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==204);
2943 case 205: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==205 ); 2943 case 205: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==205 );
2944 case 206: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==206); 2944 case 206: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==206);
2945 #line 840 "parse.y" 2945 #line 835 "parse.y"
2946 {spanBinaryExpr(&yygotominor.yy346,pParse,yymsp[-1].major,&yymsp[-2].minor.yy346 ,&yymsp[0].minor.yy346);} 2946 {spanBinaryExpr(&yygotominor.yy346,pParse,yymsp[-1].major,&yymsp[-2].minor.yy346 ,&yymsp[0].minor.yy346);}
2947 #line 2948 "parse.c" 2947 #line 2948 "parse.c"
2948 break; 2948 break;
2949 case 207: /* likeop ::= LIKE_KW */ 2949 case 207: /* likeop ::= LIKE_KW */
2950 case 209: /* likeop ::= MATCH */ yytestcase(yyruleno==209); 2950 case 209: /* likeop ::= MATCH */ yytestcase(yyruleno==209);
2951 #line 853 "parse.y" 2951 #line 848 "parse.y"
2952 {yygotominor.yy96.eOperator = yymsp[0].minor.yy0; yygotominor.yy96.not = 0;} 2952 {yygotominor.yy96.eOperator = yymsp[0].minor.yy0; yygotominor.yy96.not = 0;}
2953 #line 2954 "parse.c" 2953 #line 2954 "parse.c"
2954 break; 2954 break;
2955 case 208: /* likeop ::= NOT LIKE_KW */ 2955 case 208: /* likeop ::= NOT LIKE_KW */
2956 case 210: /* likeop ::= NOT MATCH */ yytestcase(yyruleno==210); 2956 case 210: /* likeop ::= NOT MATCH */ yytestcase(yyruleno==210);
2957 #line 854 "parse.y" 2957 #line 849 "parse.y"
2958 {yygotominor.yy96.eOperator = yymsp[0].minor.yy0; yygotominor.yy96.not = 1;} 2958 {yygotominor.yy96.eOperator = yymsp[0].minor.yy0; yygotominor.yy96.not = 1;}
2959 #line 2960 "parse.c" 2959 #line 2960 "parse.c"
2960 break; 2960 break;
2961 case 212: /* escape ::= */ 2961 case 212: /* escape ::= */
2962 #line 860 "parse.y" 2962 #line 855 "parse.y"
2963 {memset(&yygotominor.yy346,0,sizeof(yygotominor.yy346));} 2963 {memset(&yygotominor.yy346,0,sizeof(yygotominor.yy346));}
2964 #line 2965 "parse.c" 2964 #line 2965 "parse.c"
2965 break; 2965 break;
2966 case 213: /* expr ::= expr likeop expr escape */ 2966 case 213: /* expr ::= expr likeop expr escape */
2967 #line 861 "parse.y" 2967 #line 856 "parse.y"
2968 { 2968 {
2969 ExprList *pList; 2969 ExprList *pList;
2970 pList = sqlite3ExprListAppend(pParse,0, yymsp[-1].minor.yy346.pExpr); 2970 pList = sqlite3ExprListAppend(pParse,0, yymsp[-1].minor.yy346.pExpr);
2971 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-3].minor.yy346.pExpr); 2971 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-3].minor.yy346.pExpr);
2972 if( yymsp[0].minor.yy346.pExpr ){ 2972 if( yymsp[0].minor.yy346.pExpr ){
2973 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy346.pExpr); 2973 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy346.pExpr);
2974 } 2974 }
2975 yygotominor.yy346.pExpr = sqlite3ExprFunction(pParse, pList, &yymsp[-2].minor. yy96.eOperator); 2975 yygotominor.yy346.pExpr = sqlite3ExprFunction(pParse, pList, &yymsp[-2].minor. yy96.eOperator);
2976 if( yymsp[-2].minor.yy96.not ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy346.pExpr, 0, 0); 2976 if( yymsp[-2].minor.yy96.not ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy346.pExpr, 0, 0);
2977 yygotominor.yy346.zStart = yymsp[-3].minor.yy346.zStart; 2977 yygotominor.yy346.zStart = yymsp[-3].minor.yy346.zStart;
2978 yygotominor.yy346.zEnd = yymsp[-1].minor.yy346.zEnd; 2978 yygotominor.yy346.zEnd = yymsp[-1].minor.yy346.zEnd;
2979 if( yygotominor.yy346.pExpr ) yygotominor.yy346.pExpr->flags |= EP_InfixFunc; 2979 if( yygotominor.yy346.pExpr ) yygotominor.yy346.pExpr->flags |= EP_InfixFunc;
2980 } 2980 }
2981 #line 2982 "parse.c" 2981 #line 2982 "parse.c"
2982 break; 2982 break;
2983 case 214: /* expr ::= expr ISNULL|NOTNULL */ 2983 case 214: /* expr ::= expr ISNULL|NOTNULL */
2984 #line 891 "parse.y" 2984 #line 886 "parse.y"
2985 {spanUnaryPostfix(&yygotominor.yy346,pParse,yymsp[0].major,&yymsp[-1].minor.yy34 6,&yymsp[0].minor.yy0);} 2985 {spanUnaryPostfix(&yygotominor.yy346,pParse,yymsp[0].major,&yymsp[-1].minor.yy34 6,&yymsp[0].minor.yy0);}
2986 #line 2987 "parse.c" 2986 #line 2987 "parse.c"
2987 break; 2987 break;
2988 case 215: /* expr ::= expr IS NULL */ 2988 case 215: /* expr ::= expr IS NULL */
2989 #line 892 "parse.y" 2989 #line 887 "parse.y"
2990 {spanUnaryPostfix(&yygotominor.yy346,pParse,TK_ISNULL,&yymsp[-2].minor.yy346,&yy msp[0].minor.yy0);} 2990 {spanUnaryPostfix(&yygotominor.yy346,pParse,TK_ISNULL,&yymsp[-2].minor.yy346,&yy msp[0].minor.yy0);}
2991 #line 2992 "parse.c" 2991 #line 2992 "parse.c"
2992 break; 2992 break;
2993 case 216: /* expr ::= expr NOT NULL */ 2993 case 216: /* expr ::= expr NOT NULL */
2994 #line 893 "parse.y" 2994 #line 888 "parse.y"
2995 {spanUnaryPostfix(&yygotominor.yy346,pParse,TK_NOTNULL,&yymsp[-2].minor.yy346,&y ymsp[0].minor.yy0);} 2995 {spanUnaryPostfix(&yygotominor.yy346,pParse,TK_NOTNULL,&yymsp[-2].minor.yy346,&y ymsp[0].minor.yy0);}
2996 #line 2997 "parse.c" 2996 #line 2997 "parse.c"
2997 break; 2997 break;
2998 case 217: /* expr ::= expr IS NOT NULL */ 2998 case 217: /* expr ::= expr IS NOT NULL */
2999 #line 895 "parse.y" 2999 #line 890 "parse.y"
3000 {spanUnaryPostfix(&yygotominor.yy346,pParse,TK_NOTNULL,&yymsp[-3].minor.yy346,&y ymsp[0].minor.yy0);} 3000 {spanUnaryPostfix(&yygotominor.yy346,pParse,TK_NOTNULL,&yymsp[-3].minor.yy346,&y ymsp[0].minor.yy0);}
3001 #line 3002 "parse.c" 3001 #line 3002 "parse.c"
3002 break; 3002 break;
3003 case 218: /* expr ::= NOT expr */ 3003 case 218: /* expr ::= NOT expr */
3004 case 219: /* expr ::= BITNOT expr */ yytestcase(yyruleno==219); 3004 case 219: /* expr ::= BITNOT expr */ yytestcase(yyruleno==219);
3005 #line 915 "parse.y" 3005 #line 910 "parse.y"
3006 {spanUnaryPrefix(&yygotominor.yy346,pParse,yymsp[-1].major,&yymsp[0].minor.yy346 ,&yymsp[-1].minor.yy0);} 3006 {spanUnaryPrefix(&yygotominor.yy346,pParse,yymsp[-1].major,&yymsp[0].minor.yy346 ,&yymsp[-1].minor.yy0);}
3007 #line 3008 "parse.c" 3007 #line 3008 "parse.c"
3008 break; 3008 break;
3009 case 220: /* expr ::= MINUS expr */ 3009 case 220: /* expr ::= MINUS expr */
3010 #line 918 "parse.y" 3010 #line 913 "parse.y"
3011 {spanUnaryPrefix(&yygotominor.yy346,pParse,TK_UMINUS,&yymsp[0].minor.yy346,&yyms p[-1].minor.yy0);} 3011 {spanUnaryPrefix(&yygotominor.yy346,pParse,TK_UMINUS,&yymsp[0].minor.yy346,&yyms p[-1].minor.yy0);}
3012 #line 3013 "parse.c" 3012 #line 3013 "parse.c"
3013 break; 3013 break;
3014 case 221: /* expr ::= PLUS expr */ 3014 case 221: /* expr ::= PLUS expr */
3015 #line 920 "parse.y" 3015 #line 915 "parse.y"
3016 {spanUnaryPrefix(&yygotominor.yy346,pParse,TK_UPLUS,&yymsp[0].minor.yy346,&yymsp [-1].minor.yy0);} 3016 {spanUnaryPrefix(&yygotominor.yy346,pParse,TK_UPLUS,&yymsp[0].minor.yy346,&yymsp [-1].minor.yy0);}
3017 #line 3018 "parse.c" 3017 #line 3018 "parse.c"
3018 break; 3018 break;
3019 case 224: /* expr ::= expr between_op expr AND expr */ 3019 case 224: /* expr ::= expr between_op expr AND expr */
3020 #line 925 "parse.y" 3020 #line 920 "parse.y"
3021 { 3021 {
3022 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy346.pExpr) ; 3022 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy346.pExpr) ;
3023 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy346.pExpr); 3023 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy346.pExpr);
3024 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy3 46.pExpr, 0, 0); 3024 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy3 46.pExpr, 0, 0);
3025 if( yygotominor.yy346.pExpr ){ 3025 if( yygotominor.yy346.pExpr ){
3026 yygotominor.yy346.pExpr->x.pList = pList; 3026 yygotominor.yy346.pExpr->x.pList = pList;
3027 }else{ 3027 }else{
3028 sqlite3ExprListDelete(pParse->db, pList); 3028 sqlite3ExprListDelete(pParse->db, pList);
3029 } 3029 }
3030 if( yymsp[-3].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_ NOT, yygotominor.yy346.pExpr, 0, 0); 3030 if( yymsp[-3].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_ NOT, yygotominor.yy346.pExpr, 0, 0);
3031 yygotominor.yy346.zStart = yymsp[-4].minor.yy346.zStart; 3031 yygotominor.yy346.zStart = yymsp[-4].minor.yy346.zStart;
3032 yygotominor.yy346.zEnd = yymsp[0].minor.yy346.zEnd; 3032 yygotominor.yy346.zEnd = yymsp[0].minor.yy346.zEnd;
3033 } 3033 }
3034 #line 3035 "parse.c" 3034 #line 3035 "parse.c"
3035 break; 3035 break;
3036 case 227: /* expr ::= expr in_op LP exprlist RP */ 3036 case 227: /* expr ::= expr in_op LP exprlist RP */
3037 #line 942 "parse.y" 3037 #line 937 "parse.y"
3038 { 3038 {
3039 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy346. pExpr, 0, 0); 3039 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy346. pExpr, 0, 0);
3040 if( yygotominor.yy346.pExpr ){ 3040 if( yygotominor.yy346.pExpr ){
3041 yygotominor.yy346.pExpr->x.pList = yymsp[-1].minor.yy14; 3041 yygotominor.yy346.pExpr->x.pList = yymsp[-1].minor.yy14;
3042 sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr); 3042 sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr);
3043 }else{ 3043 }else{
3044 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy14); 3044 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy14);
3045 } 3045 }
3046 if( yymsp[-3].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, T K_NOT, yygotominor.yy346.pExpr, 0, 0); 3046 if( yymsp[-3].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, T K_NOT, yygotominor.yy346.pExpr, 0, 0);
3047 yygotominor.yy346.zStart = yymsp[-4].minor.yy346.zStart; 3047 yygotominor.yy346.zStart = yymsp[-4].minor.yy346.zStart;
3048 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n]; 3048 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
3049 } 3049 }
3050 #line 3051 "parse.c" 3050 #line 3051 "parse.c"
3051 break; 3051 break;
3052 case 228: /* expr ::= LP select RP */ 3052 case 228: /* expr ::= LP select RP */
3053 #line 954 "parse.y" 3053 #line 949 "parse.y"
3054 { 3054 {
3055 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_SELECT, 0, 0, 0); 3055 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_SELECT, 0, 0, 0);
3056 if( yygotominor.yy346.pExpr ){ 3056 if( yygotominor.yy346.pExpr ){
3057 yygotominor.yy346.pExpr->x.pSelect = yymsp[-1].minor.yy3; 3057 yygotominor.yy346.pExpr->x.pSelect = yymsp[-1].minor.yy3;
3058 ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect); 3058 ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect);
3059 sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr); 3059 sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr);
3060 }else{ 3060 }else{
3061 sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy3); 3061 sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy3);
3062 } 3062 }
3063 yygotominor.yy346.zStart = yymsp[-2].minor.yy0.z; 3063 yygotominor.yy346.zStart = yymsp[-2].minor.yy0.z;
3064 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n]; 3064 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
3065 } 3065 }
3066 #line 3067 "parse.c" 3066 #line 3067 "parse.c"
3067 break; 3067 break;
3068 case 229: /* expr ::= expr in_op LP select RP */ 3068 case 229: /* expr ::= expr in_op LP select RP */
3069 #line 966 "parse.y" 3069 #line 961 "parse.y"
3070 { 3070 {
3071 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy346. pExpr, 0, 0); 3071 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy346. pExpr, 0, 0);
3072 if( yygotominor.yy346.pExpr ){ 3072 if( yygotominor.yy346.pExpr ){
3073 yygotominor.yy346.pExpr->x.pSelect = yymsp[-1].minor.yy3; 3073 yygotominor.yy346.pExpr->x.pSelect = yymsp[-1].minor.yy3;
3074 ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect); 3074 ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect);
3075 sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr); 3075 sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr);
3076 }else{ 3076 }else{
3077 sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy3); 3077 sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy3);
3078 } 3078 }
3079 if( yymsp[-3].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, T K_NOT, yygotominor.yy346.pExpr, 0, 0); 3079 if( yymsp[-3].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, T K_NOT, yygotominor.yy346.pExpr, 0, 0);
3080 yygotominor.yy346.zStart = yymsp[-4].minor.yy346.zStart; 3080 yygotominor.yy346.zStart = yymsp[-4].minor.yy346.zStart;
3081 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n]; 3081 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
3082 } 3082 }
3083 #line 3084 "parse.c" 3083 #line 3084 "parse.c"
3084 break; 3084 break;
3085 case 230: /* expr ::= expr in_op nm dbnm */ 3085 case 230: /* expr ::= expr in_op nm dbnm */
3086 #line 979 "parse.y" 3086 #line 974 "parse.y"
3087 { 3087 {
3088 SrcList *pSrc = sqlite3SrcListAppend(pParse->db, 0,&yymsp[-1].minor.yy0,&yym sp[0].minor.yy0); 3088 SrcList *pSrc = sqlite3SrcListAppend(pParse->db, 0,&yymsp[-1].minor.yy0,&yym sp[0].minor.yy0);
3089 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-3].minor.yy346. pExpr, 0, 0); 3089 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-3].minor.yy346. pExpr, 0, 0);
3090 if( yygotominor.yy346.pExpr ){ 3090 if( yygotominor.yy346.pExpr ){
3091 yygotominor.yy346.pExpr->x.pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0 ,0,0,0,0); 3091 yygotominor.yy346.pExpr->x.pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0 ,0,0,0,0);
3092 ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect); 3092 ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect);
3093 sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr); 3093 sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr);
3094 }else{ 3094 }else{
3095 sqlite3SrcListDelete(pParse->db, pSrc); 3095 sqlite3SrcListDelete(pParse->db, pSrc);
3096 } 3096 }
3097 if( yymsp[-2].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, T K_NOT, yygotominor.yy346.pExpr, 0, 0); 3097 if( yymsp[-2].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, T K_NOT, yygotominor.yy346.pExpr, 0, 0);
3098 yygotominor.yy346.zStart = yymsp[-3].minor.yy346.zStart; 3098 yygotominor.yy346.zStart = yymsp[-3].minor.yy346.zStart;
3099 yygotominor.yy346.zEnd = yymsp[0].minor.yy0.z ? &yymsp[0].minor.yy0.z[yymsp[ 0].minor.yy0.n] : &yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]; 3099 yygotominor.yy346.zEnd = yymsp[0].minor.yy0.z ? &yymsp[0].minor.yy0.z[yymsp[ 0].minor.yy0.n] : &yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n];
3100 } 3100 }
3101 #line 3102 "parse.c" 3101 #line 3102 "parse.c"
3102 break; 3102 break;
3103 case 231: /* expr ::= EXISTS LP select RP */ 3103 case 231: /* expr ::= EXISTS LP select RP */
3104 #line 993 "parse.y" 3104 #line 988 "parse.y"
3105 { 3105 {
3106 Expr *p = yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_EXISTS, 0, 0, 0) ; 3106 Expr *p = yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_EXISTS, 0, 0, 0) ;
3107 if( p ){ 3107 if( p ){
3108 p->x.pSelect = yymsp[-1].minor.yy3; 3108 p->x.pSelect = yymsp[-1].minor.yy3;
3109 ExprSetProperty(p, EP_xIsSelect); 3109 ExprSetProperty(p, EP_xIsSelect);
3110 sqlite3ExprSetHeight(pParse, p); 3110 sqlite3ExprSetHeight(pParse, p);
3111 }else{ 3111 }else{
3112 sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy3); 3112 sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy3);
3113 } 3113 }
3114 yygotominor.yy346.zStart = yymsp[-3].minor.yy0.z; 3114 yygotominor.yy346.zStart = yymsp[-3].minor.yy0.z;
3115 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n]; 3115 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
3116 } 3116 }
3117 #line 3118 "parse.c" 3117 #line 3118 "parse.c"
3118 break; 3118 break;
3119 case 232: /* expr ::= CASE case_operand case_exprlist case_else END */ 3119 case 232: /* expr ::= CASE case_operand case_exprlist case_else END */
3120 #line 1008 "parse.y" 3120 #line 1003 "parse.y"
3121 { 3121 {
3122 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy132, yymsp[-1].minor.yy132, 0); 3122 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy132, yymsp[-1].minor.yy132, 0);
3123 if( yygotominor.yy346.pExpr ){ 3123 if( yygotominor.yy346.pExpr ){
3124 yygotominor.yy346.pExpr->x.pList = yymsp[-2].minor.yy14; 3124 yygotominor.yy346.pExpr->x.pList = yymsp[-2].minor.yy14;
3125 sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr); 3125 sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr);
3126 }else{ 3126 }else{
3127 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy14); 3127 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy14);
3128 } 3128 }
3129 yygotominor.yy346.zStart = yymsp[-4].minor.yy0.z; 3129 yygotominor.yy346.zStart = yymsp[-4].minor.yy0.z;
3130 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n]; 3130 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
3131 } 3131 }
3132 #line 3133 "parse.c" 3132 #line 3133 "parse.c"
3133 break; 3133 break;
3134 case 233: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ 3134 case 233: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
3135 #line 1021 "parse.y" 3135 #line 1016 "parse.y"
3136 { 3136 {
3137 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, yymsp[-2 ].minor.yy346.pExpr); 3137 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, yymsp[-2 ].minor.yy346.pExpr);
3138 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yygotominor.yy14, yymsp[0].min or.yy346.pExpr); 3138 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yygotominor.yy14, yymsp[0].min or.yy346.pExpr);
3139 } 3139 }
3140 #line 3141 "parse.c" 3140 #line 3141 "parse.c"
3141 break; 3141 break;
3142 case 234: /* case_exprlist ::= WHEN expr THEN expr */ 3142 case 234: /* case_exprlist ::= WHEN expr THEN expr */
3143 #line 1025 "parse.y" 3143 #line 1020 "parse.y"
3144 { 3144 {
3145 yygotominor.yy14 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy346.pExpr ); 3145 yygotominor.yy14 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy346.pExpr );
3146 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yygotominor.yy14, yymsp[0].min or.yy346.pExpr); 3146 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yygotominor.yy14, yymsp[0].min or.yy346.pExpr);
3147 } 3147 }
3148 #line 3149 "parse.c" 3148 #line 3149 "parse.c"
3149 break; 3149 break;
3150 case 243: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm L P idxlist RP */ 3150 case 243: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm L P idxlist RP */
3151 #line 1054 "parse.y" 3151 #line 1049 "parse.y"
3152 { 3152 {
3153 sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy0, &yymsp[-5].minor.yy0, 3153 sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy0, &yymsp[-5].minor.yy0,
3154 sqlite3SrcListAppend(pParse->db,0,&yymsp[-3].minor.yy0,0), yymsp[-1].minor.yy14, yymsp[-9].minor.yy328, 3154 sqlite3SrcListAppend(pParse->db,0,&yymsp[-3].minor.yy0,0), yymsp[-1].minor.yy14, yymsp[-9].minor.yy328,
3155 &yymsp[-10].minor.yy0, &yymsp[0].minor.yy0, SQLITE_SO_ASC, yymsp[-7].minor.yy328); 3155 &yymsp[-10].minor.yy0, &yymsp[0].minor.yy0, SQLITE_SO_ASC, yymsp[-7].minor.yy328);
3156 } 3156 }
3157 #line 3158 "parse.c" 3157 #line 3158 "parse.c"
3158 break; 3158 break;
3159 case 244: /* uniqueflag ::= UNIQUE */ 3159 case 244: /* uniqueflag ::= UNIQUE */
3160 case 298: /* raisetype ::= ABORT */ yytestcase(yyruleno==298); 3160 case 298: /* raisetype ::= ABORT */ yytestcase(yyruleno==298);
3161 #line 1061 "parse.y" 3161 #line 1056 "parse.y"
3162 {yygotominor.yy328 = OE_Abort;} 3162 {yygotominor.yy328 = OE_Abort;}
3163 #line 3164 "parse.c" 3163 #line 3164 "parse.c"
3164 break; 3164 break;
3165 case 245: /* uniqueflag ::= */ 3165 case 245: /* uniqueflag ::= */
3166 #line 1062 "parse.y" 3166 #line 1057 "parse.y"
3167 {yygotominor.yy328 = OE_None;} 3167 {yygotominor.yy328 = OE_None;}
3168 #line 3169 "parse.c" 3168 #line 3169 "parse.c"
3169 break; 3169 break;
3170 case 248: /* idxlist ::= idxlist COMMA nm collate sortorder */ 3170 case 248: /* idxlist ::= idxlist COMMA nm collate sortorder */
3171 #line 1071 "parse.y" 3171 #line 1066 "parse.y"
3172 { 3172 {
3173 Expr *p = 0; 3173 Expr *p = 0;
3174 if( yymsp[-1].minor.yy0.n>0 ){ 3174 if( yymsp[-1].minor.yy0.n>0 ){
3175 p = sqlite3Expr(pParse->db, TK_COLUMN, 0); 3175 p = sqlite3Expr(pParse->db, TK_COLUMN, 0);
3176 sqlite3ExprSetColl(pParse, p, &yymsp[-1].minor.yy0); 3176 sqlite3ExprSetColl(pParse, p, &yymsp[-1].minor.yy0);
3177 } 3177 }
3178 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, p); 3178 yygotominor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, p);
3179 sqlite3ExprListSetName(pParse,yygotominor.yy14,&yymsp[-2].minor.yy0,1); 3179 sqlite3ExprListSetName(pParse,yygotominor.yy14,&yymsp[-2].minor.yy0,1);
3180 sqlite3ExprListCheckLength(pParse, yygotominor.yy14, "index"); 3180 sqlite3ExprListCheckLength(pParse, yygotominor.yy14, "index");
3181 if( yygotominor.yy14 ) yygotominor.yy14->a[yygotominor.yy14->nExpr-1].sortOrde r = (u8)yymsp[0].minor.yy328; 3181 if( yygotominor.yy14 ) yygotominor.yy14->a[yygotominor.yy14->nExpr-1].sortOrde r = (u8)yymsp[0].minor.yy328;
3182 } 3182 }
3183 #line 3184 "parse.c" 3183 #line 3184 "parse.c"
3184 break; 3184 break;
3185 case 249: /* idxlist ::= nm collate sortorder */ 3185 case 249: /* idxlist ::= nm collate sortorder */
3186 #line 1082 "parse.y" 3186 #line 1077 "parse.y"
3187 { 3187 {
3188 Expr *p = 0; 3188 Expr *p = 0;
3189 if( yymsp[-1].minor.yy0.n>0 ){ 3189 if( yymsp[-1].minor.yy0.n>0 ){
3190 p = sqlite3PExpr(pParse, TK_COLUMN, 0, 0, 0); 3190 p = sqlite3PExpr(pParse, TK_COLUMN, 0, 0, 0);
3191 sqlite3ExprSetColl(pParse, p, &yymsp[-1].minor.yy0); 3191 sqlite3ExprSetColl(pParse, p, &yymsp[-1].minor.yy0);
3192 } 3192 }
3193 yygotominor.yy14 = sqlite3ExprListAppend(pParse,0, p); 3193 yygotominor.yy14 = sqlite3ExprListAppend(pParse,0, p);
3194 sqlite3ExprListSetName(pParse, yygotominor.yy14, &yymsp[-2].minor.yy0, 1); 3194 sqlite3ExprListSetName(pParse, yygotominor.yy14, &yymsp[-2].minor.yy0, 1);
3195 sqlite3ExprListCheckLength(pParse, yygotominor.yy14, "index"); 3195 sqlite3ExprListCheckLength(pParse, yygotominor.yy14, "index");
3196 if( yygotominor.yy14 ) yygotominor.yy14->a[yygotominor.yy14->nExpr-1].sortOrde r = (u8)yymsp[0].minor.yy328; 3196 if( yygotominor.yy14 ) yygotominor.yy14->a[yygotominor.yy14->nExpr-1].sortOrde r = (u8)yymsp[0].minor.yy328;
3197 } 3197 }
3198 #line 3199 "parse.c" 3198 #line 3199 "parse.c"
3199 break; 3199 break;
3200 case 250: /* collate ::= */ 3200 case 250: /* collate ::= */
3201 #line 1095 "parse.y" 3201 #line 1090 "parse.y"
3202 {yygotominor.yy0.z = 0; yygotominor.yy0.n = 0;} 3202 {yygotominor.yy0.z = 0; yygotominor.yy0.n = 0;}
3203 #line 3204 "parse.c" 3203 #line 3204 "parse.c"
3204 break; 3204 break;
3205 case 252: /* cmd ::= DROP INDEX ifexists fullname */ 3205 case 252: /* cmd ::= DROP INDEX ifexists fullname */
3206 #line 1101 "parse.y" 3206 #line 1096 "parse.y"
3207 {sqlite3DropIndex(pParse, yymsp[0].minor.yy65, yymsp[-1].minor.yy328);} 3207 {sqlite3DropIndex(pParse, yymsp[0].minor.yy65, yymsp[-1].minor.yy328);}
3208 #line 3209 "parse.c" 3208 #line 3209 "parse.c"
3209 break; 3209 break;
3210 case 253: /* cmd ::= VACUUM */ 3210 case 253: /* cmd ::= VACUUM */
3211 case 254: /* cmd ::= VACUUM nm */ yytestcase(yyruleno==254); 3211 case 254: /* cmd ::= VACUUM nm */ yytestcase(yyruleno==254);
3212 #line 1107 "parse.y" 3212 #line 1102 "parse.y"
3213 {sqlite3Vacuum(pParse);} 3213 {sqlite3Vacuum(pParse);}
3214 #line 3215 "parse.c" 3214 #line 3215 "parse.c"
3215 break; 3215 break;
3216 case 255: /* cmd ::= PRAGMA nm dbnm */ 3216 case 255: /* cmd ::= PRAGMA nm dbnm */
3217 #line 1115 "parse.y" 3217 #line 1110 "parse.y"
3218 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);} 3218 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
3219 #line 3220 "parse.c" 3219 #line 3220 "parse.c"
3220 break; 3220 break;
3221 case 256: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ 3221 case 256: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
3222 #line 1116 "parse.y" 3222 #line 1111 "parse.y"
3223 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor. yy0,0);} 3223 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor. yy0,0);}
3224 #line 3225 "parse.c" 3224 #line 3225 "parse.c"
3225 break; 3225 break;
3226 case 257: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ 3226 case 257: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
3227 #line 1117 "parse.y" 3227 #line 1112 "parse.y"
3228 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor .yy0,0);} 3228 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor .yy0,0);}
3229 #line 3230 "parse.c" 3229 #line 3230 "parse.c"
3230 break; 3230 break;
3231 case 258: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ 3231 case 258: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
3232 #line 1119 "parse.y" 3232 #line 1114 "parse.y"
3233 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor. yy0,1);} 3233 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor. yy0,1);}
3234 #line 3235 "parse.c" 3234 #line 3235 "parse.c"
3235 break; 3235 break;
3236 case 259: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ 3236 case 259: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
3237 #line 1121 "parse.y" 3237 #line 1116 "parse.y"
3238 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor .yy0,1);} 3238 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor .yy0,1);}
3239 #line 3240 "parse.c" 3239 #line 3240 "parse.c"
3240 break; 3240 break;
3241 case 270: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ 3241 case 270: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
3242 #line 1139 "parse.y" 3242 #line 1134 "parse.y"
3243 { 3243 {
3244 Token all; 3244 Token all;
3245 all.z = yymsp[-3].minor.yy0.z; 3245 all.z = yymsp[-3].minor.yy0.z;
3246 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.y y0.n; 3246 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.y y0.n;
3247 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy473, &all); 3247 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy473, &all);
3248 } 3248 }
3249 #line 3250 "parse.c" 3249 #line 3250 "parse.c"
3250 break; 3250 break;
3251 case 271: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_tim e trigger_event ON fullname foreach_clause when_clause */ 3251 case 271: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_tim e trigger_event ON fullname foreach_clause when_clause */
3252 #line 1148 "parse.y" 3252 #line 1143 "parse.y"
3253 { 3253 {
3254 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[ -5].minor.yy328, yymsp[-4].minor.yy378.a, yymsp[-4].minor.yy378.b, yymsp[-2].min or.yy65, yymsp[0].minor.yy132, yymsp[-10].minor.yy328, yymsp[-8].minor.yy328); 3254 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[ -5].minor.yy328, yymsp[-4].minor.yy378.a, yymsp[-4].minor.yy378.b, yymsp[-2].min or.yy65, yymsp[0].minor.yy132, yymsp[-10].minor.yy328, yymsp[-8].minor.yy328);
3255 yygotominor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].mino r.yy0); 3255 yygotominor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].mino r.yy0);
3256 } 3256 }
3257 #line 3258 "parse.c" 3257 #line 3258 "parse.c"
3258 break; 3258 break;
3259 case 272: /* trigger_time ::= BEFORE */ 3259 case 272: /* trigger_time ::= BEFORE */
3260 case 275: /* trigger_time ::= */ yytestcase(yyruleno==275); 3260 case 275: /* trigger_time ::= */ yytestcase(yyruleno==275);
3261 #line 1154 "parse.y" 3261 #line 1149 "parse.y"
3262 { yygotominor.yy328 = TK_BEFORE; } 3262 { yygotominor.yy328 = TK_BEFORE; }
3263 #line 3264 "parse.c" 3263 #line 3264 "parse.c"
3264 break; 3264 break;
3265 case 273: /* trigger_time ::= AFTER */ 3265 case 273: /* trigger_time ::= AFTER */
3266 #line 1155 "parse.y" 3266 #line 1150 "parse.y"
3267 { yygotominor.yy328 = TK_AFTER; } 3267 { yygotominor.yy328 = TK_AFTER; }
3268 #line 3269 "parse.c" 3268 #line 3269 "parse.c"
3269 break; 3269 break;
3270 case 274: /* trigger_time ::= INSTEAD OF */ 3270 case 274: /* trigger_time ::= INSTEAD OF */
3271 #line 1156 "parse.y" 3271 #line 1151 "parse.y"
3272 { yygotominor.yy328 = TK_INSTEAD;} 3272 { yygotominor.yy328 = TK_INSTEAD;}
3273 #line 3274 "parse.c" 3273 #line 3274 "parse.c"
3274 break; 3274 break;
3275 case 276: /* trigger_event ::= DELETE|INSERT */ 3275 case 276: /* trigger_event ::= DELETE|INSERT */
3276 case 277: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==277); 3276 case 277: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==277);
3277 #line 1161 "parse.y" 3277 #line 1156 "parse.y"
3278 {yygotominor.yy378.a = yymsp[0].major; yygotominor.yy378.b = 0;} 3278 {yygotominor.yy378.a = yymsp[0].major; yygotominor.yy378.b = 0;}
3279 #line 3280 "parse.c" 3279 #line 3280 "parse.c"
3280 break; 3280 break;
3281 case 278: /* trigger_event ::= UPDATE OF inscollist */ 3281 case 278: /* trigger_event ::= UPDATE OF inscollist */
3282 #line 1163 "parse.y" 3282 #line 1158 "parse.y"
3283 {yygotominor.yy378.a = TK_UPDATE; yygotominor.yy378.b = yymsp[0].minor.yy408;} 3283 {yygotominor.yy378.a = TK_UPDATE; yygotominor.yy378.b = yymsp[0].minor.yy408;}
3284 #line 3285 "parse.c" 3284 #line 3285 "parse.c"
3285 break; 3285 break;
3286 case 281: /* when_clause ::= */ 3286 case 281: /* when_clause ::= */
3287 case 303: /* key_opt ::= */ yytestcase(yyruleno==303); 3287 case 303: /* key_opt ::= */ yytestcase(yyruleno==303);
3288 #line 1170 "parse.y" 3288 #line 1165 "parse.y"
3289 { yygotominor.yy132 = 0; } 3289 { yygotominor.yy132 = 0; }
3290 #line 3291 "parse.c" 3290 #line 3291 "parse.c"
3291 break; 3291 break;
3292 case 282: /* when_clause ::= WHEN expr */ 3292 case 282: /* when_clause ::= WHEN expr */
3293 case 304: /* key_opt ::= KEY expr */ yytestcase(yyruleno==304); 3293 case 304: /* key_opt ::= KEY expr */ yytestcase(yyruleno==304);
3294 #line 1171 "parse.y" 3294 #line 1166 "parse.y"
3295 { yygotominor.yy132 = yymsp[0].minor.yy346.pExpr; } 3295 { yygotominor.yy132 = yymsp[0].minor.yy346.pExpr; }
3296 #line 3297 "parse.c" 3296 #line 3297 "parse.c"
3297 break; 3297 break;
3298 case 283: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ 3298 case 283: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
3299 #line 1175 "parse.y" 3299 #line 1170 "parse.y"
3300 { 3300 {
3301 assert( yymsp[-2].minor.yy473!=0 ); 3301 assert( yymsp[-2].minor.yy473!=0 );
3302 yymsp[-2].minor.yy473->pLast->pNext = yymsp[-1].minor.yy473; 3302 yymsp[-2].minor.yy473->pLast->pNext = yymsp[-1].minor.yy473;
3303 yymsp[-2].minor.yy473->pLast = yymsp[-1].minor.yy473; 3303 yymsp[-2].minor.yy473->pLast = yymsp[-1].minor.yy473;
3304 yygotominor.yy473 = yymsp[-2].minor.yy473; 3304 yygotominor.yy473 = yymsp[-2].minor.yy473;
3305 } 3305 }
3306 #line 3307 "parse.c" 3306 #line 3307 "parse.c"
3307 break; 3307 break;
3308 case 284: /* trigger_cmd_list ::= trigger_cmd SEMI */ 3308 case 284: /* trigger_cmd_list ::= trigger_cmd SEMI */
3309 #line 1181 "parse.y" 3309 #line 1176 "parse.y"
3310 { 3310 {
3311 assert( yymsp[-1].minor.yy473!=0 ); 3311 assert( yymsp[-1].minor.yy473!=0 );
3312 yymsp[-1].minor.yy473->pLast = yymsp[-1].minor.yy473; 3312 yymsp[-1].minor.yy473->pLast = yymsp[-1].minor.yy473;
3313 yygotominor.yy473 = yymsp[-1].minor.yy473; 3313 yygotominor.yy473 = yymsp[-1].minor.yy473;
3314 } 3314 }
3315 #line 3316 "parse.c" 3315 #line 3316 "parse.c"
3316 break; 3316 break;
3317 case 286: /* trnm ::= nm DOT nm */ 3317 case 286: /* trnm ::= nm DOT nm */
3318 #line 1193 "parse.y" 3318 #line 1188 "parse.y"
3319 { 3319 {
3320 yygotominor.yy0 = yymsp[0].minor.yy0; 3320 yygotominor.yy0 = yymsp[0].minor.yy0;
3321 sqlite3ErrorMsg(pParse, 3321 sqlite3ErrorMsg(pParse,
3322 "qualified table names are not allowed on INSERT, UPDATE, and DELETE " 3322 "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
3323 "statements within triggers"); 3323 "statements within triggers");
3324 } 3324 }
3325 #line 3326 "parse.c" 3325 #line 3326 "parse.c"
3326 break; 3326 break;
3327 case 288: /* tridxby ::= INDEXED BY nm */ 3327 case 288: /* tridxby ::= INDEXED BY nm */
3328 #line 1205 "parse.y" 3328 #line 1200 "parse.y"
3329 { 3329 {
3330 sqlite3ErrorMsg(pParse, 3330 sqlite3ErrorMsg(pParse,
3331 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements " 3331 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
3332 "within triggers"); 3332 "within triggers");
3333 } 3333 }
3334 #line 3335 "parse.c" 3334 #line 3335 "parse.c"
3335 break; 3335 break;
3336 case 289: /* tridxby ::= NOT INDEXED */ 3336 case 289: /* tridxby ::= NOT INDEXED */
3337 #line 1210 "parse.y" 3337 #line 1205 "parse.y"
3338 { 3338 {
3339 sqlite3ErrorMsg(pParse, 3339 sqlite3ErrorMsg(pParse,
3340 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements " 3340 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
3341 "within triggers"); 3341 "within triggers");
3342 } 3342 }
3343 #line 3344 "parse.c" 3343 #line 3344 "parse.c"
3344 break; 3344 break;
3345 case 290: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_ opt */ 3345 case 290: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_ opt */
3346 #line 1223 "parse.y" 3346 #line 1218 "parse.y"
3347 { yygotominor.yy473 = sqlite3TriggerUpdateStep(pParse->db, &yymsp[-4].minor.yy0, yymsp[-1].minor.yy14, yymsp[0].minor.yy132, yymsp[-5].minor.yy186); } 3347 { yygotominor.yy473 = sqlite3TriggerUpdateStep(pParse->db, &yymsp[-4].minor.yy0, yymsp[-1].minor.yy14, yymsp[0].minor.yy132, yymsp[-5].minor.yy186); }
3348 #line 3349 "parse.c" 3348 #line 3349 "parse.c"
3349 break; 3349 break;
3350 case 291: /* trigger_cmd ::= insert_cmd INTO trnm inscollist_opt VALUES LP itemlist RP */ 3350 case 291: /* trigger_cmd ::= insert_cmd INTO trnm inscollist_opt VALUES LP itemlist RP */
3351 #line 1228 "parse.y" 3351 #line 1223 "parse.y"
3352 {yygotominor.yy473 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy408, yymsp[-1].minor.yy14, 0, yymsp[-7].minor.yy186);} 3352 {yygotominor.yy473 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy408, yymsp[-1].minor.yy14, 0, yymsp[-7].minor.yy186);}
3353 #line 3354 "parse.c" 3353 #line 3354 "parse.c"
3354 break; 3354 break;
3355 case 292: /* trigger_cmd ::= insert_cmd INTO trnm inscollist_opt select */ 3355 case 292: /* trigger_cmd ::= insert_cmd INTO trnm inscollist_opt select */
3356 #line 1231 "parse.y" 3356 #line 1226 "parse.y"
3357 {yygotominor.yy473 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy408, 0, yymsp[0].minor.yy3, yymsp[-4].minor.yy186);} 3357 {yygotominor.yy473 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy408, 0, yymsp[0].minor.yy3, yymsp[-4].minor.yy186);}
3358 #line 3359 "parse.c" 3358 #line 3359 "parse.c"
3359 break; 3359 break;
3360 case 293: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt */ 3360 case 293: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt */
3361 #line 1235 "parse.y" 3361 #line 1230 "parse.y"
3362 {yygotominor.yy473 = sqlite3TriggerDeleteStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[0].minor.yy132);} 3362 {yygotominor.yy473 = sqlite3TriggerDeleteStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[0].minor.yy132);}
3363 #line 3364 "parse.c" 3363 #line 3364 "parse.c"
3364 break; 3364 break;
3365 case 294: /* trigger_cmd ::= select */ 3365 case 294: /* trigger_cmd ::= select */
3366 #line 1238 "parse.y" 3366 #line 1233 "parse.y"
3367 {yygotominor.yy473 = sqlite3TriggerSelectStep(pParse->db, yymsp[0].minor.yy3); } 3367 {yygotominor.yy473 = sqlite3TriggerSelectStep(pParse->db, yymsp[0].minor.yy3); }
3368 #line 3369 "parse.c" 3368 #line 3369 "parse.c"
3369 break; 3369 break;
3370 case 295: /* expr ::= RAISE LP IGNORE RP */ 3370 case 295: /* expr ::= RAISE LP IGNORE RP */
3371 #line 1241 "parse.y" 3371 #line 1236 "parse.y"
3372 { 3372 {
3373 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, 0); 3373 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, 0);
3374 if( yygotominor.yy346.pExpr ){ 3374 if( yygotominor.yy346.pExpr ){
3375 yygotominor.yy346.pExpr->affinity = OE_Ignore; 3375 yygotominor.yy346.pExpr->affinity = OE_Ignore;
3376 } 3376 }
3377 yygotominor.yy346.zStart = yymsp[-3].minor.yy0.z; 3377 yygotominor.yy346.zStart = yymsp[-3].minor.yy0.z;
3378 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n]; 3378 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
3379 } 3379 }
3380 #line 3381 "parse.c" 3380 #line 3381 "parse.c"
3381 break; 3381 break;
3382 case 296: /* expr ::= RAISE LP raisetype COMMA nm RP */ 3382 case 296: /* expr ::= RAISE LP raisetype COMMA nm RP */
3383 #line 1249 "parse.y" 3383 #line 1244 "parse.y"
3384 { 3384 {
3385 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, &yymsp[-1].mino r.yy0); 3385 yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, &yymsp[-1].mino r.yy0);
3386 if( yygotominor.yy346.pExpr ) { 3386 if( yygotominor.yy346.pExpr ) {
3387 yygotominor.yy346.pExpr->affinity = (char)yymsp[-3].minor.yy328; 3387 yygotominor.yy346.pExpr->affinity = (char)yymsp[-3].minor.yy328;
3388 } 3388 }
3389 yygotominor.yy346.zStart = yymsp[-5].minor.yy0.z; 3389 yygotominor.yy346.zStart = yymsp[-5].minor.yy0.z;
3390 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n]; 3390 yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
3391 } 3391 }
3392 #line 3393 "parse.c" 3392 #line 3393 "parse.c"
3393 break; 3393 break;
3394 case 297: /* raisetype ::= ROLLBACK */ 3394 case 297: /* raisetype ::= ROLLBACK */
3395 #line 1260 "parse.y" 3395 #line 1255 "parse.y"
3396 {yygotominor.yy328 = OE_Rollback;} 3396 {yygotominor.yy328 = OE_Rollback;}
3397 #line 3398 "parse.c" 3397 #line 3398 "parse.c"
3398 break; 3398 break;
3399 case 299: /* raisetype ::= FAIL */ 3399 case 299: /* raisetype ::= FAIL */
3400 #line 1262 "parse.y" 3400 #line 1257 "parse.y"
3401 {yygotominor.yy328 = OE_Fail;} 3401 {yygotominor.yy328 = OE_Fail;}
3402 #line 3403 "parse.c" 3402 #line 3403 "parse.c"
3403 break; 3403 break;
3404 case 300: /* cmd ::= DROP TRIGGER ifexists fullname */ 3404 case 300: /* cmd ::= DROP TRIGGER ifexists fullname */
3405 #line 1267 "parse.y" 3405 #line 1262 "parse.y"
3406 { 3406 {
3407 sqlite3DropTrigger(pParse,yymsp[0].minor.yy65,yymsp[-1].minor.yy328); 3407 sqlite3DropTrigger(pParse,yymsp[0].minor.yy65,yymsp[-1].minor.yy328);
3408 } 3408 }
3409 #line 3410 "parse.c" 3409 #line 3410 "parse.c"
3410 break; 3410 break;
3411 case 301: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ 3411 case 301: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
3412 #line 1274 "parse.y" 3412 #line 1269 "parse.y"
3413 { 3413 {
3414 sqlite3Attach(pParse, yymsp[-3].minor.yy346.pExpr, yymsp[-1].minor.yy346.pExpr , yymsp[0].minor.yy132); 3414 sqlite3Attach(pParse, yymsp[-3].minor.yy346.pExpr, yymsp[-1].minor.yy346.pExpr , yymsp[0].minor.yy132);
3415 } 3415 }
3416 #line 3417 "parse.c" 3416 #line 3417 "parse.c"
3417 break; 3417 break;
3418 case 302: /* cmd ::= DETACH database_kw_opt expr */ 3418 case 302: /* cmd ::= DETACH database_kw_opt expr */
3419 #line 1277 "parse.y" 3419 #line 1272 "parse.y"
3420 { 3420 {
3421 sqlite3Detach(pParse, yymsp[0].minor.yy346.pExpr); 3421 sqlite3Detach(pParse, yymsp[0].minor.yy346.pExpr);
3422 } 3422 }
3423 #line 3424 "parse.c" 3423 #line 3424 "parse.c"
3424 break; 3424 break;
3425 case 307: /* cmd ::= REINDEX */ 3425 case 307: /* cmd ::= REINDEX */
3426 #line 1292 "parse.y" 3426 #line 1287 "parse.y"
3427 {sqlite3Reindex(pParse, 0, 0);} 3427 {sqlite3Reindex(pParse, 0, 0);}
3428 #line 3429 "parse.c" 3428 #line 3429 "parse.c"
3429 break; 3429 break;
3430 case 308: /* cmd ::= REINDEX nm dbnm */ 3430 case 308: /* cmd ::= REINDEX nm dbnm */
3431 #line 1293 "parse.y" 3431 #line 1288 "parse.y"
3432 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} 3432 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
3433 #line 3434 "parse.c" 3433 #line 3434 "parse.c"
3434 break; 3434 break;
3435 case 309: /* cmd ::= ANALYZE */ 3435 case 309: /* cmd ::= ANALYZE */
3436 #line 1298 "parse.y" 3436 #line 1293 "parse.y"
3437 {sqlite3Analyze(pParse, 0, 0);} 3437 {sqlite3Analyze(pParse, 0, 0);}
3438 #line 3439 "parse.c" 3438 #line 3439 "parse.c"
3439 break; 3439 break;
3440 case 310: /* cmd ::= ANALYZE nm dbnm */ 3440 case 310: /* cmd ::= ANALYZE nm dbnm */
3441 #line 1299 "parse.y" 3441 #line 1294 "parse.y"
3442 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} 3442 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
3443 #line 3444 "parse.c" 3443 #line 3444 "parse.c"
3444 break; 3444 break;
3445 case 311: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ 3445 case 311: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
3446 #line 1304 "parse.y" 3446 #line 1299 "parse.y"
3447 { 3447 {
3448 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy65,&yymsp[0].minor.yy0); 3448 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy65,&yymsp[0].minor.yy0);
3449 } 3449 }
3450 #line 3451 "parse.c" 3450 #line 3451 "parse.c"
3451 break; 3451 break;
3452 case 312: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt colu mn */ 3452 case 312: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt colu mn */
3453 #line 1307 "parse.y" 3453 #line 1302 "parse.y"
3454 { 3454 {
3455 sqlite3AlterFinishAddColumn(pParse, &yymsp[0].minor.yy0); 3455 sqlite3AlterFinishAddColumn(pParse, &yymsp[0].minor.yy0);
3456 } 3456 }
3457 #line 3458 "parse.c" 3457 #line 3458 "parse.c"
3458 break; 3458 break;
3459 case 313: /* add_column_fullname ::= fullname */ 3459 case 313: /* add_column_fullname ::= fullname */
3460 #line 1310 "parse.y" 3460 #line 1305 "parse.y"
3461 { 3461 {
3462 pParse->db->lookaside.bEnabled = 0; 3462 pParse->db->lookaside.bEnabled = 0;
3463 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy65); 3463 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy65);
3464 } 3464 }
3465 #line 3466 "parse.c" 3465 #line 3466 "parse.c"
3466 break; 3466 break;
3467 case 316: /* cmd ::= create_vtab */ 3467 case 316: /* cmd ::= create_vtab */
3468 #line 1320 "parse.y" 3468 #line 1315 "parse.y"
3469 {sqlite3VtabFinishParse(pParse,0);} 3469 {sqlite3VtabFinishParse(pParse,0);}
3470 #line 3471 "parse.c" 3470 #line 3471 "parse.c"
3471 break; 3471 break;
3472 case 317: /* cmd ::= create_vtab LP vtabarglist RP */ 3472 case 317: /* cmd ::= create_vtab LP vtabarglist RP */
3473 #line 1321 "parse.y" 3473 #line 1316 "parse.y"
3474 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);} 3474 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
3475 #line 3476 "parse.c" 3475 #line 3476 "parse.c"
3476 break; 3476 break;
3477 case 318: /* create_vtab ::= createkw VIRTUAL TABLE nm dbnm USING nm */ 3477 case 318: /* create_vtab ::= createkw VIRTUAL TABLE nm dbnm USING nm */
3478 #line 1322 "parse.y" 3478 #line 1317 "parse.y"
3479 { 3479 {
3480 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &y ymsp[0].minor.yy0); 3480 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &y ymsp[0].minor.yy0);
3481 } 3481 }
3482 #line 3483 "parse.c" 3482 #line 3483 "parse.c"
3483 break; 3483 break;
3484 case 321: /* vtabarg ::= */ 3484 case 321: /* vtabarg ::= */
3485 #line 1327 "parse.y" 3485 #line 1322 "parse.y"
3486 {sqlite3VtabArgInit(pParse);} 3486 {sqlite3VtabArgInit(pParse);}
3487 #line 3488 "parse.c" 3487 #line 3488 "parse.c"
3488 break; 3488 break;
3489 case 323: /* vtabargtoken ::= ANY */ 3489 case 323: /* vtabargtoken ::= ANY */
3490 case 324: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==324); 3490 case 324: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==324);
3491 case 325: /* lp ::= LP */ yytestcase(yyruleno==325); 3491 case 325: /* lp ::= LP */ yytestcase(yyruleno==325);
3492 #line 1329 "parse.y" 3492 #line 1324 "parse.y"
3493 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);} 3493 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
3494 #line 3495 "parse.c" 3494 #line 3495 "parse.c"
3495 break; 3495 break;
3496 default: 3496 default:
3497 /* (0) input ::= cmdlist */ yytestcase(yyruleno==0); 3497 /* (0) input ::= cmdlist */ yytestcase(yyruleno==0);
3498 /* (1) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==1); 3498 /* (1) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==1);
3499 /* (2) cmdlist ::= ecmd */ yytestcase(yyruleno==2); 3499 /* (2) cmdlist ::= ecmd */ yytestcase(yyruleno==2);
3500 /* (3) ecmd ::= SEMI */ yytestcase(yyruleno==3); 3500 /* (3) ecmd ::= SEMI */ yytestcase(yyruleno==3);
3501 /* (4) ecmd ::= explain cmdx SEMI */ yytestcase(yyruleno==4); 3501 /* (4) ecmd ::= explain cmdx SEMI */ yytestcase(yyruleno==4);
3502 /* (10) trans_opt ::= */ yytestcase(yyruleno==10); 3502 /* (10) trans_opt ::= */ yytestcase(yyruleno==10);
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
3783 yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); 3783 yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
3784 if( yyendofinput ){ 3784 if( yyendofinput ){
3785 yy_parse_failed(yypParser); 3785 yy_parse_failed(yypParser);
3786 } 3786 }
3787 yymajor = YYNOCODE; 3787 yymajor = YYNOCODE;
3788 #endif 3788 #endif
3789 } 3789 }
3790 }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); 3790 }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
3791 return; 3791 return;
3792 } 3792 }
OLDNEW
« no previous file with comments | « third_party/sqlite/misc.patch ('k') | third_party/sqlite/src/parse.y » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698