| 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 |