OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |