diff options
| author | 2015-01-30 17:00:07 -0500 | |
|---|---|---|
| committer | 2015-01-30 17:00:07 -0500 | |
| commit | 016003905ca0e8e459e3dc33e786beda8ec92f45 (patch) | |
| tree | 34aba2d2e0d66fbf2c3821ee8358f56e40c4c95e /SQLiteStudio3/coreSQLiteStudio/parser | |
| parent | 724c012ada23ef480c61fe99e3c9784b91aeb1ca (diff) | |
Imported Upstream version 3.0.2upstream/3.0.2
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/parser')
7 files changed, 656 insertions, 615 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp index 969f029..1429cef 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp @@ -457,7 +457,11 @@ TokenList SqliteExpr::rebuildTokensFromContents() builder.withStatement(expr1).withSpace().withOperator(binaryOp).withSpace().withStatement(expr2); break; case SqliteExpr::Mode::FUNCTION: - builder.withOther(function).withParLeft().withStatementList(exprList).withParRight(); + builder.withOther(function).withParLeft(); + if (distinctKw) + builder.withKeyword("DISTINCT"); + + builder.withStatementList(exprList).withParRight(); break; case SqliteExpr::Mode::SUB_EXPR: builder.withParLeft().withStatement(expr1).withParRight(); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp index 039c9a5..9299c52 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp @@ -21,6 +21,7 @@ ParserIndexedBy::ParserIndexedBy(bool notIndexed) ParserStubInsertOrReplace::ParserStubInsertOrReplace(bool replace) { this->replace = replace; + this->orConflict = SqliteConflictAlgo::null; } ParserStubInsertOrReplace::ParserStubInsertOrReplace(bool replace, SqliteConflictAlgo orConflict) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp index 7394e75..e9444e5 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp @@ -27,7 +27,12 @@ void ParserContext::error(TokenPtr token, const QString &text) void ParserContext::error(Token* token, const QString& text) { - error(getTokenPtr(token), text); + if (token->type != Token::INVALID) + error(getTokenPtr(token), text); + else if (managedTokens.size() > 0) + error(managedTokens.last(), text); + else + error(text); } void ParserContext::error(const QString &text) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp index fa61c21..656444a 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp @@ -165,7 +165,7 @@ typedef union { #define sqlite2_parseARG_FETCH ParserContext* parserContext = yypParser->parserContext #define sqlite2_parseARG_STORE yypParser->parserContext = parserContext #define YYNSTATE 584 -#define YYNRULE 352 +#define YYNRULE 353 #define YYFALLBACK 1 #define YY_NO_ACTION (YYNSTATE+YYNRULE+2) #define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) @@ -241,16 +241,16 @@ static const YYMINORTYPE yyzerominor = { 0 }; static const YYACTIONTYPE yy_action[] = { /* 0 */ 338, 191, 186, 242, 476, 511, 576, 193, 332, 16, /* 10 */ 511, 384, 189, 322, 239, 519, 518, 570, 337, 450, - /* 20 */ 15, 851, 125, 58, 575, 179, 851, 574, 63, 143, + /* 20 */ 15, 852, 125, 58, 575, 179, 852, 574, 63, 143, /* 30 */ 401, 581, 328, 26, 84, 569, 114, 322, 573, 519, - /* 40 */ 518, 851, 851, 35, 851, 851, 851, 851, 851, 851, - /* 50 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 32, - /* 60 */ 33, 851, 851, 851, 851, 320, 379, 34, 240, 238, + /* 40 */ 518, 852, 852, 35, 852, 852, 852, 852, 852, 852, + /* 50 */ 852, 852, 852, 852, 852, 852, 852, 852, 852, 32, + /* 60 */ 33, 852, 852, 852, 852, 320, 379, 34, 240, 238, /* 70 */ 121, 556, 291, 251, 57, 7, 217, 577, 265, 264, /* 80 */ 523, 179, 555, 336, 335, 338, 569, 549, 548, 550, /* 90 */ 271, 569, 10, 724, 199, 297, 203, 489, 459, 332, /* 100 */ 568, 567, 451, 253, 158, 523, 449, 444, 443, 337, - /* 110 */ 187, 870, 266, 187, 580, 517, 168, 328, 505, 343, + /* 110 */ 187, 871, 266, 187, 580, 517, 168, 328, 505, 343, /* 120 */ 143, 235, 490, 108, 101, 489, 523, 164, 35, 531, /* 130 */ 187, 13, 523, 252, 234, 547, 236, 119, 340, 232, /* 140 */ 339, 120, 216, 155, 32, 33, 481, 547, 322, 215, @@ -258,23 +258,23 @@ static const YYACTIONTYPE yy_action[] = { /* 160 */ 7, 714, 400, 321, 251, 523, 714, 563, 336, 335, /* 170 */ 500, 553, 549, 548, 550, 188, 465, 500, 401, 466, /* 180 */ 366, 365, 552, 364, 293, 435, 39, 39, 39, 38, - /* 190 */ 523, 562, 60, 255, 714, 569, 714, 714, 852, 570, - /* 200 */ 271, 714, 502, 852, 500, 714, 570, 714, 714, 714, + /* 190 */ 523, 562, 60, 255, 714, 569, 714, 714, 853, 570, + /* 200 */ 271, 714, 502, 853, 500, 714, 570, 714, 714, 714, /* 210 */ 714, 523, 569, 178, 531, 422, 13, 523, 44, 45, - /* 220 */ 330, 42, 42, 530, 530, 223, 852, 852, 43, 43, + /* 220 */ 330, 42, 42, 530, 530, 223, 853, 853, 43, 43, /* 230 */ 43, 43, 41, 41, 41, 41, 40, 40, 39, 39, /* 240 */ 39, 38, 199, 297, 203, 55, 236, 92, 340, 232, /* 250 */ 339, 120, 216, 500, 106, 570, 268, 19, 187, 215, /* 260 */ 500, 105, 553, 41, 41, 41, 41, 40, 40, 39, /* 270 */ 39, 39, 38, 552, 40, 40, 39, 39, 39, 38, - /* 280 */ 852, 3, 568, 567, 187, 852, 512, 500, 219, 568, + /* 280 */ 853, 3, 568, 567, 187, 853, 512, 500, 219, 568, /* 290 */ 567, 17, 496, 156, 322, 345, 519, 518, 569, 292, - /* 300 */ 44, 45, 330, 42, 42, 530, 530, 223, 852, 852, + /* 300 */ 44, 45, 330, 42, 42, 530, 530, 223, 853, 853, /* 310 */ 43, 43, 43, 43, 41, 41, 41, 41, 40, 40, - /* 320 */ 39, 39, 39, 38, 547, 533, 852, 100, 308, 306, - /* 330 */ 305, 852, 448, 447, 418, 418, 316, 245, 568, 567, - /* 340 */ 304, 937, 122, 344, 1, 582, 44, 45, 330, 42, - /* 350 */ 42, 530, 530, 223, 852, 852, 43, 43, 43, 43, + /* 320 */ 39, 39, 39, 38, 547, 533, 853, 100, 308, 306, + /* 330 */ 305, 853, 448, 447, 418, 418, 316, 245, 568, 567, + /* 340 */ 304, 938, 122, 344, 1, 582, 44, 45, 330, 42, + /* 350 */ 42, 530, 530, 223, 853, 853, 43, 43, 43, 43, /* 360 */ 41, 41, 41, 41, 40, 40, 39, 39, 39, 38, /* 370 */ 338, 442, 44, 45, 330, 42, 42, 530, 530, 223, /* 380 */ 524, 569, 43, 43, 43, 43, 41, 41, 41, 41, @@ -287,14 +287,14 @@ static const YYACTIONTYPE yy_action[] = { /* 450 */ 523, 524, 569, 336, 335, 285, 781, 549, 548, 550, /* 460 */ 43, 43, 43, 43, 41, 41, 41, 41, 40, 40, /* 470 */ 39, 39, 39, 38, 332, 523, 332, 425, 470, 774, - /* 480 */ 560, 774, 774, 850, 337, 426, 337, 455, 850, 613, + /* 480 */ 560, 774, 774, 851, 337, 426, 337, 455, 851, 613, /* 490 */ 774, 181, 774, 774, 774, 143, 523, 143, 30, 531, - /* 500 */ 614, 13, 523, 850, 850, 850, 850, 850, 850, 850, - /* 510 */ 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, - /* 520 */ 850, 850, 850, 850, 850, 850, 850, 852, 500, 460, - /* 530 */ 357, 320, 852, 318, 75, 570, 401, 570, 311, 251, + /* 500 */ 614, 13, 523, 851, 851, 851, 851, 851, 851, 851, + /* 510 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, + /* 520 */ 851, 851, 851, 851, 851, 851, 851, 853, 500, 460, + /* 530 */ 357, 320, 853, 318, 75, 570, 401, 570, 311, 251, /* 540 */ 569, 251, 446, 445, 570, 358, 359, 44, 45, 330, - /* 550 */ 42, 42, 530, 530, 223, 852, 852, 43, 43, 43, + /* 550 */ 42, 42, 530, 530, 223, 853, 853, 43, 43, 43, /* 560 */ 43, 41, 41, 41, 41, 40, 40, 39, 39, 39, /* 570 */ 38, 338, 44, 45, 330, 42, 42, 530, 530, 223, /* 580 */ 615, 570, 43, 43, 43, 43, 41, 41, 41, 41, @@ -305,14 +305,14 @@ static const YYACTIONTYPE yy_action[] = { /* 630 */ 32, 33, 337, 356, 482, 355, 569, 85, 34, 759, /* 640 */ 532, 111, 70, 78, 487, 483, 7, 759, 90, 494, /* 650 */ 508, 523, 493, 160, 336, 335, 782, 528, 549, 548, - /* 660 */ 550, 532, 440, 434, 568, 567, 118, 54, 332, 919, + /* 660 */ 550, 532, 440, 434, 568, 567, 118, 54, 332, 920, /* 670 */ 214, 100, 308, 306, 305, 75, 523, 333, 337, 571, /* 680 */ 759, 529, 759, 759, 304, 48, 177, 522, 31, 143, /* 690 */ 29, 759, 568, 567, 759, 759, 159, 523, 568, 567, /* 700 */ 531, 464, 13, 523, 44, 45, 330, 42, 42, 530, /* 710 */ 530, 223, 568, 567, 43, 43, 43, 43, 41, 41, /* 720 */ 41, 41, 40, 40, 39, 39, 39, 38, 463, 570, - /* 730 */ 498, 919, 570, 323, 514, 570, 222, 44, 45, 330, + /* 730 */ 498, 920, 570, 323, 514, 570, 222, 44, 45, 330, /* 740 */ 42, 42, 530, 530, 223, 393, 392, 43, 43, 43, /* 750 */ 43, 41, 41, 41, 41, 40, 40, 39, 39, 39, /* 760 */ 38, 44, 45, 330, 42, 42, 530, 530, 223, 540, @@ -324,7 +324,7 @@ static const YYACTIONTYPE yy_action[] = { /* 820 */ 110, 570, 218, 44, 45, 330, 42, 42, 530, 530, /* 830 */ 223, 27, 468, 43, 43, 43, 43, 41, 41, 41, /* 840 */ 41, 40, 40, 39, 39, 39, 38, 486, 547, 44, - /* 850 */ 45, 330, 42, 42, 530, 530, 223, 859, 212, 43, + /* 850 */ 45, 330, 42, 42, 530, 530, 223, 860, 212, 43, /* 860 */ 43, 43, 43, 41, 41, 41, 41, 40, 40, 39, /* 870 */ 39, 39, 38, 44, 47, 330, 42, 42, 530, 530, /* 880 */ 223, 535, 284, 43, 43, 43, 43, 41, 41, 41, @@ -339,7 +339,7 @@ static const YYACTIONTYPE yy_action[] = { /* 970 */ 520, 569, 395, 547, 569, 569, 23, 328, 213, 254, /* 980 */ 358, 275, 547, 75, 182, 32, 33, 310, 35, 569, /* 990 */ 361, 66, 164, 34, 160, 396, 398, 317, 397, 293, - /* 1000 */ 570, 7, 862, 516, 32, 33, 523, 570, 538, 336, + /* 1000 */ 570, 7, 863, 516, 32, 33, 523, 570, 538, 336, /* 1010 */ 335, 522, 34, 549, 548, 550, 25, 4, 289, 338, /* 1020 */ 7, 471, 395, 547, 12, 523, 568, 567, 336, 335, /* 1030 */ 302, 523, 549, 548, 550, 75, 570, 404, 338, 276, @@ -356,7 +356,7 @@ static const YYACTIONTYPE yy_action[] = { /* 1140 */ 312, 391, 202, 523, 296, 523, 568, 567, 531, 198, /* 1150 */ 13, 523, 569, 413, 345, 328, 568, 567, 532, 569, /* 1160 */ 474, 570, 307, 570, 523, 495, 35, 531, 53, 13, - /* 1170 */ 523, 496, 860, 456, 473, 568, 567, 570, 413, 532, + /* 1170 */ 523, 496, 861, 456, 473, 568, 567, 570, 413, 532, /* 1180 */ 570, 485, 32, 33, 407, 439, 10, 568, 567, 500, /* 1190 */ 34, 489, 730, 570, 568, 567, 431, 403, 7, 52, /* 1200 */ 568, 567, 570, 523, 582, 234, 336, 335, 338, 407, @@ -367,7 +367,7 @@ static const YYACTIONTYPE yy_action[] = { /* 1250 */ 99, 35, 531, 124, 13, 523, 492, 368, 497, 148, /* 1260 */ 568, 567, 570, 568, 567, 82, 376, 32, 33, 350, /* 1270 */ 2, 570, 568, 567, 570, 34, 568, 567, 570, 73, - /* 1280 */ 179, 259, 570, 7, 862, 568, 567, 417, 523, 338, + /* 1280 */ 179, 259, 570, 7, 863, 568, 567, 417, 523, 338, /* 1290 */ 569, 336, 335, 22, 491, 549, 548, 550, 416, 69, /* 1300 */ 568, 567, 371, 522, 568, 567, 570, 415, 405, 568, /* 1310 */ 567, 261, 21, 523, 568, 567, 568, 567, 196, 368, @@ -411,8 +411,8 @@ static const YYACTIONTYPE yy_action[] = { /* 1690 */ 283, 402, 382, 117, 89, 87, 86, 116, 175, 280, /* 1700 */ 347, 349, 173, 233, 113, 126, 230, 509, 541, 470, /* 1710 */ 506, 537, 458, 282, 154, 410, 273, 190, 348, 438, - /* 1720 */ 467, 462, 329, 461, 578, 231, 62, 938, 37, 412, - /* 1730 */ 165, 433, 938, 938, 938, 327, 299, + /* 1720 */ 467, 462, 329, 461, 578, 231, 62, 939, 37, 412, + /* 1730 */ 165, 433, 939, 939, 939, 327, 299, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 4, 8, 195, 10, 80, 25, 5, 14, 156, 202, @@ -664,61 +664,61 @@ static const short yy_reduce_ofst[] = { /* 250 */ 1242, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 589, 936, 936, 862, 903, 851, 851, 851, 936, 936, - /* 10 */ 730, 936, 851, 851, 851, 936, 851, 851, 851, 851, - /* 20 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, - /* 30 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, - /* 40 */ 851, 851, 851, 851, 851, 851, 851, 841, 724, 608, - /* 50 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, - /* 60 */ 616, 720, 730, 936, 936, 936, 936, 790, 777, 768, - /* 70 */ 936, 800, 800, 783, 679, 936, 800, 756, 752, 936, - /* 80 */ 839, 936, 936, 731, 936, 839, 936, 936, 936, 936, - /* 90 */ 936, 791, 784, 778, 769, 936, 936, 936, 936, 936, - /* 100 */ 936, 936, 936, 936, 720, 720, 936, 720, 936, 936, - /* 110 */ 936, 840, 594, 936, 882, 936, 936, 936, 936, 936, - /* 120 */ 936, 605, 589, 936, 936, 936, 710, 736, 773, 761, - /* 130 */ 863, 856, 857, 855, 852, 852, 852, 852, 852, 852, - /* 140 */ 852, 852, 852, 852, 823, 816, 827, 815, 831, 826, - /* 150 */ 818, 817, 819, 936, 936, 936, 936, 723, 936, 936, - /* 160 */ 936, 820, 936, 789, 698, 936, 910, 693, 601, 618, - /* 170 */ 936, 936, 936, 936, 936, 936, 936, 772, 670, 756, - /* 180 */ 645, 738, 756, 858, 936, 936, 721, 708, 756, 934, - /* 190 */ 931, 934, 739, 683, 739, 739, 739, 681, 739, 683, - /* 200 */ 796, 739, 739, 683, 772, 739, 918, 915, 739, 739, - /* 210 */ 871, 681, 681, 681, 681, 662, 936, 871, 681, 739, - /* 220 */ 936, 739, 936, 852, 821, 752, 762, 748, 760, 757, - /* 230 */ 772, 936, 681, 681, 662, 681, 681, 665, 593, 593, + /* 0 */ 589, 937, 937, 863, 904, 852, 852, 852, 937, 937, + /* 10 */ 730, 937, 852, 852, 852, 937, 852, 852, 852, 852, + /* 20 */ 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, + /* 30 */ 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, + /* 40 */ 852, 852, 852, 852, 852, 852, 852, 841, 724, 608, + /* 50 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + /* 60 */ 616, 720, 730, 937, 937, 937, 937, 790, 777, 768, + /* 70 */ 937, 800, 800, 783, 679, 937, 800, 756, 752, 937, + /* 80 */ 839, 937, 937, 731, 937, 839, 937, 937, 937, 937, + /* 90 */ 937, 791, 784, 778, 769, 937, 937, 937, 937, 937, + /* 100 */ 937, 937, 937, 937, 720, 720, 937, 720, 937, 937, + /* 110 */ 937, 840, 594, 937, 883, 937, 937, 937, 937, 937, + /* 120 */ 937, 605, 589, 937, 937, 937, 710, 736, 773, 761, + /* 130 */ 864, 857, 858, 856, 853, 853, 853, 853, 853, 844, + /* 140 */ 853, 853, 853, 853, 823, 816, 827, 815, 831, 826, + /* 150 */ 818, 817, 819, 937, 937, 937, 937, 723, 937, 937, + /* 160 */ 937, 820, 937, 789, 698, 937, 911, 693, 601, 618, + /* 170 */ 937, 937, 937, 937, 937, 937, 937, 772, 670, 756, + /* 180 */ 645, 738, 756, 859, 937, 937, 721, 708, 756, 935, + /* 190 */ 932, 935, 739, 683, 739, 739, 739, 681, 739, 683, + /* 200 */ 796, 739, 739, 683, 772, 739, 919, 916, 739, 739, + /* 210 */ 872, 681, 681, 681, 681, 662, 937, 872, 681, 739, + /* 220 */ 937, 739, 937, 853, 821, 752, 762, 748, 760, 757, + /* 230 */ 772, 937, 681, 681, 662, 681, 681, 665, 593, 593, /* 240 */ 593, 681, 593, 649, 649, 726, 830, 829, 828, 822, - /* 250 */ 629, 864, 936, 936, 936, 936, 936, 936, 936, 936, - /* 260 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 763, - /* 270 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 881, - /* 280 */ 936, 936, 936, 936, 936, 936, 914, 913, 936, 936, - /* 290 */ 936, 936, 936, 936, 936, 936, 936, 936, 902, 936, - /* 300 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, - /* 310 */ 936, 936, 936, 936, 936, 936, 936, 936, 758, 936, - /* 320 */ 861, 843, 701, 850, 936, 936, 936, 936, 936, 842, - /* 330 */ 853, 810, 936, 749, 936, 809, 806, 808, 611, 936, - /* 340 */ 936, 936, 936, 936, 586, 590, 935, 933, 932, 930, - /* 350 */ 890, 889, 888, 886, 895, 894, 893, 892, 891, 887, - /* 360 */ 885, 884, 883, 880, 787, 775, 766, 697, 929, 927, - /* 370 */ 928, 879, 877, 878, 696, 695, 692, 691, 690, 869, - /* 380 */ 868, 866, 865, 867, 604, 906, 909, 908, 907, 912, - /* 390 */ 911, 904, 917, 916, 921, 925, 924, 923, 922, 920, - /* 400 */ 901, 795, 794, 792, 797, 788, 793, 780, 786, 785, - /* 410 */ 776, 779, 684, 771, 767, 770, 905, 694, 603, 741, + /* 250 */ 629, 865, 937, 937, 937, 937, 937, 937, 937, 937, + /* 260 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 763, + /* 270 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 882, + /* 280 */ 937, 937, 937, 937, 937, 937, 915, 914, 937, 937, + /* 290 */ 937, 937, 937, 937, 937, 937, 937, 937, 903, 937, + /* 300 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + /* 310 */ 937, 937, 937, 937, 937, 937, 937, 937, 758, 937, + /* 320 */ 862, 843, 701, 851, 937, 937, 937, 937, 937, 842, + /* 330 */ 854, 810, 937, 749, 937, 809, 806, 808, 611, 937, + /* 340 */ 937, 937, 937, 937, 586, 590, 936, 934, 933, 931, + /* 350 */ 891, 890, 889, 887, 896, 895, 894, 893, 892, 888, + /* 360 */ 886, 885, 884, 881, 787, 775, 766, 697, 930, 928, + /* 370 */ 929, 880, 878, 879, 696, 695, 692, 691, 690, 870, + /* 380 */ 869, 867, 866, 868, 604, 907, 910, 909, 908, 913, + /* 390 */ 912, 905, 918, 917, 922, 926, 925, 924, 923, 921, + /* 400 */ 902, 795, 794, 792, 797, 788, 793, 780, 786, 785, + /* 410 */ 776, 779, 684, 771, 767, 770, 906, 694, 603, 741, /* 420 */ 602, 607, 668, 669, 677, 680, 675, 678, 674, 673, /* 430 */ 672, 676, 671, 667, 610, 609, 623, 621, 622, 620, /* 440 */ 619, 617, 639, 638, 635, 637, 634, 636, 633, 632, - /* 450 */ 631, 630, 628, 661, 647, 646, 874, 876, 875, 873, - /* 460 */ 872, 654, 653, 659, 658, 657, 656, 652, 655, 651, + /* 450 */ 631, 630, 628, 661, 647, 646, 875, 877, 876, 874, + /* 460 */ 873, 654, 653, 659, 658, 657, 656, 652, 655, 651, /* 470 */ 650, 648, 644, 814, 813, 807, 835, 707, 706, 715, /* 480 */ 713, 712, 711, 747, 746, 745, 744, 743, 742, 735, /* 490 */ 733, 729, 728, 734, 732, 727, 719, 717, 718, 716, /* 500 */ 612, 802, 799, 801, 798, 737, 725, 722, 709, 751, - /* 510 */ 753, 854, 844, 834, 845, 740, 832, 833, 704, 703, - /* 520 */ 702, 853, 850, 846, 926, 838, 849, 837, 836, 825, - /* 530 */ 824, 812, 847, 848, 811, 750, 765, 898, 897, 900, - /* 540 */ 899, 896, 764, 625, 624, 705, 700, 699, 805, 804, + /* 510 */ 753, 855, 845, 834, 846, 740, 832, 833, 704, 703, + /* 520 */ 702, 854, 851, 847, 927, 838, 850, 837, 836, 825, + /* 530 */ 824, 812, 848, 849, 811, 750, 765, 899, 898, 901, + /* 540 */ 900, 897, 764, 625, 624, 705, 700, 699, 805, 804, /* 550 */ 803, 643, 755, 754, 642, 664, 663, 660, 641, 640, /* 560 */ 627, 626, 606, 600, 599, 598, 597, 615, 614, 613, /* 570 */ 611, 596, 595, 689, 688, 687, 686, 685, 682, 592, @@ -1258,98 +1258,99 @@ static const char *const yyRuleName[] = { /* 257 */ "exprx ::= expr not_opt BETWEEN expr AND", /* 258 */ "exprx ::= CASE case_operand case_exprlist case_else", /* 259 */ "exprx ::= expr not_opt IN LP exprlist", - /* 260 */ "exprx ::= expr not_opt IN ID_DB", - /* 261 */ "exprx ::= expr not_opt IN nm DOT ID_TAB", - /* 262 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN", - /* 263 */ "exprx ::= nm DOT ID_TAB|ID_COL", - /* 264 */ "exprx ::= nm DOT nm DOT ID_COL", - /* 265 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP", - /* 266 */ "expr ::= exprx", - /* 267 */ "expr ::=", - /* 268 */ "not_opt ::=", - /* 269 */ "not_opt ::= NOT", - /* 270 */ "likeop ::= LIKE|GLOB", - /* 271 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", - /* 272 */ "case_exprlist ::= WHEN expr THEN expr", - /* 273 */ "case_else ::= ELSE expr", - /* 274 */ "case_else ::=", - /* 275 */ "case_operand ::= exprx", - /* 276 */ "case_operand ::=", - /* 277 */ "exprlist ::= nexprlist", - /* 278 */ "exprlist ::=", - /* 279 */ "nexprlist ::= nexprlist COMMA expr", - /* 280 */ "nexprlist ::= exprx", - /* 281 */ "cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf", - /* 282 */ "cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB", - /* 283 */ "cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW", - /* 284 */ "cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW", - /* 285 */ "uniqueflag ::= UNIQUE", - /* 286 */ "uniqueflag ::=", - /* 287 */ "idxlist_opt ::=", - /* 288 */ "idxlist_opt ::= LP idxlist RP", - /* 289 */ "idxlist ::= idxlist COMMA idxlist_single", - /* 290 */ "idxlist ::= idxlist_single", - /* 291 */ "idxlist_single ::= nm sortorder", - /* 292 */ "idxlist_single ::= ID_COL", - /* 293 */ "cmd ::= DROP INDEX fullname", - /* 294 */ "cmd ::= DROP INDEX nm DOT ID_IDX", - /* 295 */ "cmd ::= DROP INDEX ID_DB|ID_IDX", - /* 296 */ "cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING", - /* 297 */ "cmd ::= COPY orconf nm dbnm FROM nm", - /* 298 */ "cmd ::= VACUUM", - /* 299 */ "cmd ::= VACUUM nm", - /* 300 */ "cmd ::= PRAGMA ids", - /* 301 */ "cmd ::= PRAGMA nm EQ nmnum", - /* 302 */ "cmd ::= PRAGMA nm LP nmnum RP", - /* 303 */ "cmd ::= PRAGMA nm EQ minus_num", - /* 304 */ "cmd ::= PRAGMA nm LP minus_num RP", - /* 305 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA", - /* 306 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA", - /* 307 */ "nmnum ::= plus_num", - /* 308 */ "nmnum ::= nm", - /* 309 */ "nmnum ::= ON", - /* 310 */ "nmnum ::= DELETE", - /* 311 */ "nmnum ::= DEFAULT", - /* 312 */ "plus_num ::= PLUS number", - /* 313 */ "plus_num ::= number", - /* 314 */ "minus_num ::= MINUS number", - /* 315 */ "number ::= INTEGER", - /* 316 */ "number ::= FLOAT", - /* 317 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END", - /* 318 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause", - /* 319 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list", - /* 320 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB", - /* 321 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB", - /* 322 */ "cmd ::= CREATE temp TRIGGER ID_TRIG_NEW", - /* 323 */ "trigger_time ::= BEFORE", - /* 324 */ "trigger_time ::= AFTER", - /* 325 */ "trigger_time ::= INSTEAD OF", - /* 326 */ "trigger_time ::=", - /* 327 */ "trigger_event ::= DELETE", - /* 328 */ "trigger_event ::= INSERT", - /* 329 */ "trigger_event ::= UPDATE", - /* 330 */ "trigger_event ::= UPDATE OF inscollist", - /* 331 */ "foreach_clause ::=", - /* 332 */ "foreach_clause ::= FOR EACH ROW", - /* 333 */ "foreach_clause ::= FOR EACH STATEMENT", - /* 334 */ "when_clause ::=", - /* 335 */ "when_clause ::= WHEN expr", - /* 336 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", - /* 337 */ "trigger_cmd_list ::= trigger_cmd SEMI", - /* 338 */ "trigger_cmd ::= update_stmt", - /* 339 */ "trigger_cmd ::= insert_stmt", - /* 340 */ "trigger_cmd ::= delete_stmt", - /* 341 */ "trigger_cmd ::= select_stmt", - /* 342 */ "raisetype ::= ROLLBACK|ABORT|FAIL", - /* 343 */ "cmd ::= DROP TRIGGER fullname", - /* 344 */ "cmd ::= DROP TRIGGER nm DOT ID_TRIG", - /* 345 */ "cmd ::= DROP TRIGGER ID_DB|ID_TRIG", - /* 346 */ "cmd ::= ATTACH database_kw_opt ids AS ids key_opt", - /* 347 */ "key_opt ::=", - /* 348 */ "key_opt ::= USING ids", - /* 349 */ "database_kw_opt ::= DATABASE", - /* 350 */ "database_kw_opt ::=", - /* 351 */ "cmd ::= DETACH database_kw_opt nm", + /* 260 */ "exprx ::= LP expr", + /* 261 */ "exprx ::= expr not_opt IN ID_DB", + /* 262 */ "exprx ::= expr not_opt IN nm DOT ID_TAB", + /* 263 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN", + /* 264 */ "exprx ::= nm DOT ID_TAB|ID_COL", + /* 265 */ "exprx ::= nm DOT nm DOT ID_COL", + /* 266 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP", + /* 267 */ "expr ::= exprx", + /* 268 */ "expr ::=", + /* 269 */ "not_opt ::=", + /* 270 */ "not_opt ::= NOT", + /* 271 */ "likeop ::= LIKE|GLOB", + /* 272 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", + /* 273 */ "case_exprlist ::= WHEN expr THEN expr", + /* 274 */ "case_else ::= ELSE expr", + /* 275 */ "case_else ::=", + /* 276 */ "case_operand ::= exprx", + /* 277 */ "case_operand ::=", + /* 278 */ "exprlist ::= nexprlist", + /* 279 */ "exprlist ::=", + /* 280 */ "nexprlist ::= nexprlist COMMA expr", + /* 281 */ "nexprlist ::= exprx", + /* 282 */ "cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf", + /* 283 */ "cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB", + /* 284 */ "cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW", + /* 285 */ "cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW", + /* 286 */ "uniqueflag ::= UNIQUE", + /* 287 */ "uniqueflag ::=", + /* 288 */ "idxlist_opt ::=", + /* 289 */ "idxlist_opt ::= LP idxlist RP", + /* 290 */ "idxlist ::= idxlist COMMA idxlist_single", + /* 291 */ "idxlist ::= idxlist_single", + /* 292 */ "idxlist_single ::= nm sortorder", + /* 293 */ "idxlist_single ::= ID_COL", + /* 294 */ "cmd ::= DROP INDEX fullname", + /* 295 */ "cmd ::= DROP INDEX nm DOT ID_IDX", + /* 296 */ "cmd ::= DROP INDEX ID_DB|ID_IDX", + /* 297 */ "cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING", + /* 298 */ "cmd ::= COPY orconf nm dbnm FROM nm", + /* 299 */ "cmd ::= VACUUM", + /* 300 */ "cmd ::= VACUUM nm", + /* 301 */ "cmd ::= PRAGMA ids", + /* 302 */ "cmd ::= PRAGMA nm EQ nmnum", + /* 303 */ "cmd ::= PRAGMA nm LP nmnum RP", + /* 304 */ "cmd ::= PRAGMA nm EQ minus_num", + /* 305 */ "cmd ::= PRAGMA nm LP minus_num RP", + /* 306 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA", + /* 307 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA", + /* 308 */ "nmnum ::= plus_num", + /* 309 */ "nmnum ::= nm", + /* 310 */ "nmnum ::= ON", + /* 311 */ "nmnum ::= DELETE", + /* 312 */ "nmnum ::= DEFAULT", + /* 313 */ "plus_num ::= PLUS number", + /* 314 */ "plus_num ::= number", + /* 315 */ "minus_num ::= MINUS number", + /* 316 */ "number ::= INTEGER", + /* 317 */ "number ::= FLOAT", + /* 318 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END", + /* 319 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause", + /* 320 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list", + /* 321 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB", + /* 322 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB", + /* 323 */ "cmd ::= CREATE temp TRIGGER ID_TRIG_NEW", + /* 324 */ "trigger_time ::= BEFORE", + /* 325 */ "trigger_time ::= AFTER", + /* 326 */ "trigger_time ::= INSTEAD OF", + /* 327 */ "trigger_time ::=", + /* 328 */ "trigger_event ::= DELETE", + /* 329 */ "trigger_event ::= INSERT", + /* 330 */ "trigger_event ::= UPDATE", + /* 331 */ "trigger_event ::= UPDATE OF inscollist", + /* 332 */ "foreach_clause ::=", + /* 333 */ "foreach_clause ::= FOR EACH ROW", + /* 334 */ "foreach_clause ::= FOR EACH STATEMENT", + /* 335 */ "when_clause ::=", + /* 336 */ "when_clause ::= WHEN expr", + /* 337 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", + /* 338 */ "trigger_cmd_list ::= trigger_cmd SEMI", + /* 339 */ "trigger_cmd ::= update_stmt", + /* 340 */ "trigger_cmd ::= insert_stmt", + /* 341 */ "trigger_cmd ::= delete_stmt", + /* 342 */ "trigger_cmd ::= select_stmt", + /* 343 */ "raisetype ::= ROLLBACK|ABORT|FAIL", + /* 344 */ "cmd ::= DROP TRIGGER fullname", + /* 345 */ "cmd ::= DROP TRIGGER nm DOT ID_TRIG", + /* 346 */ "cmd ::= DROP TRIGGER ID_DB|ID_TRIG", + /* 347 */ "cmd ::= ATTACH database_kw_opt ids AS ids key_opt", + /* 348 */ "key_opt ::=", + /* 349 */ "key_opt ::= USING ids", + /* 350 */ "database_kw_opt ::= DATABASE", + /* 351 */ "database_kw_opt ::=", + /* 352 */ "cmd ::= DETACH database_kw_opt nm", }; #endif /* NDEBUG */ @@ -2219,6 +2220,7 @@ static const struct { { 221, 5 }, { 221, 4 }, { 221, 5 }, + { 221, 2 }, { 221, 4 }, { 221, 6 }, { 221, 1 }, @@ -2394,10 +2396,10 @@ static void yy_reduce( {yygotominor.yy91 = new ParserStubExplain(true, false);} break; case 7: /* cmdx ::= cmd */ - case 338: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==338); - case 339: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==339); - case 340: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==340); - case 341: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==341); + case 339: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==339); + case 340: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==340); + case 341: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==341); + case 342: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==342); {yygotominor.yy203 = yymsp[0].minor.yy203;} break; case 8: /* cmd ::= BEGIN trans_opt onconf */ @@ -2500,7 +2502,7 @@ static void yy_reduce( break; case 19: /* cmd ::= CREATE temp TABLE ID_DB|ID_TAB_NEW */ case 110: /* cmd ::= CREATE temp VIEW ID_VIEW_NEW */ yytestcase(yyruleno==110); - case 322: /* cmd ::= CREATE temp TRIGGER ID_TRIG_NEW */ yytestcase(yyruleno==322); + case 323: /* cmd ::= CREATE temp TRIGGER ID_TRIG_NEW */ yytestcase(yyruleno==323); { yy_destructor(yypParser,157,&yymsp[-2].minor); } break; @@ -2597,9 +2599,9 @@ static void yy_reduce( break; case 40: /* signed ::= plus_num */ case 41: /* signed ::= minus_num */ yytestcase(yyruleno==41); - case 307: /* nmnum ::= plus_num */ yytestcase(yyruleno==307); - case 312: /* plus_num ::= PLUS number */ yytestcase(yyruleno==312); - case 313: /* plus_num ::= number */ yytestcase(yyruleno==313); + case 308: /* nmnum ::= plus_num */ yytestcase(yyruleno==308); + case 313: /* plus_num ::= PLUS number */ yytestcase(yyruleno==313); + case 314: /* plus_num ::= number */ yytestcase(yyruleno==314); {yygotominor.yy69 = yymsp[0].minor.yy69;} break; case 42: /* carglist ::= carglist ccons */ @@ -2847,15 +2849,15 @@ static void yy_reduce( } break; case 85: /* tconscomma ::= COMMA */ - case 269: /* not_opt ::= NOT */ yytestcase(yyruleno==269); - case 285: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==285); - case 349: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==349); + case 270: /* not_opt ::= NOT */ yytestcase(yyruleno==270); + case 286: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==286); + case 350: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==350); {yygotominor.yy291 = new bool(true);} break; case 86: /* tconscomma ::= */ - case 268: /* not_opt ::= */ yytestcase(yyruleno==268); - case 286: /* uniqueflag ::= */ yytestcase(yyruleno==286); - case 350: /* database_kw_opt ::= */ yytestcase(yyruleno==350); + case 269: /* not_opt ::= */ yytestcase(yyruleno==269); + case 287: /* uniqueflag ::= */ yytestcase(yyruleno==287); + case 351: /* database_kw_opt ::= */ yytestcase(yyruleno==351); {yygotominor.yy291 = new bool(false);} break; case 87: /* tcons ::= CONSTRAINT nm */ @@ -2959,15 +2961,15 @@ static void yy_reduce( case 187: /* delete_stmt ::= DELETE FROM ID_DB|ID_TAB */ yytestcase(yyruleno==187); case 195: /* update_stmt ::= UPDATE orconf nm DOT ID_TAB */ yytestcase(yyruleno==195); case 196: /* update_stmt ::= UPDATE orconf ID_DB|ID_TAB */ yytestcase(yyruleno==196); - case 263: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==263); - case 283: /* cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW */ yytestcase(yyruleno==283); - case 284: /* cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==284); - case 294: /* cmd ::= DROP INDEX nm DOT ID_IDX */ yytestcase(yyruleno==294); - case 295: /* cmd ::= DROP INDEX ID_DB|ID_IDX */ yytestcase(yyruleno==295); - case 305: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==305); - case 306: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==306); - case 344: /* cmd ::= DROP TRIGGER nm DOT ID_TRIG */ yytestcase(yyruleno==344); - case 345: /* cmd ::= DROP TRIGGER ID_DB|ID_TRIG */ yytestcase(yyruleno==345); + case 264: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==264); + case 284: /* cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW */ yytestcase(yyruleno==284); + case 285: /* cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==285); + case 295: /* cmd ::= DROP INDEX nm DOT ID_IDX */ yytestcase(yyruleno==295); + case 296: /* cmd ::= DROP INDEX ID_DB|ID_IDX */ yytestcase(yyruleno==296); + case 306: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==306); + case 307: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==307); + case 345: /* cmd ::= DROP TRIGGER nm DOT ID_TRIG */ yytestcase(yyruleno==345); + case 346: /* cmd ::= DROP TRIGGER ID_DB|ID_TRIG */ yytestcase(yyruleno==346); { yy_destructor(yypParser,156,&yymsp[-2].minor); } break; @@ -3339,11 +3341,11 @@ static void yy_reduce( {yygotominor.yy389 = new SqliteSortOrder(SqliteSortOrder::null);} break; case 173: /* groupby_opt ::= */ - case 278: /* exprlist ::= */ yytestcase(yyruleno==278); + case 279: /* exprlist ::= */ yytestcase(yyruleno==279); {yygotominor.yy231 = new ParserExprList();} break; case 174: /* groupby_opt ::= GROUP BY nexprlist */ - case 277: /* exprlist ::= nexprlist */ yytestcase(yyruleno==277); + case 278: /* exprlist ::= nexprlist */ yytestcase(yyruleno==278); {yygotominor.yy231 = yymsp[0].minor.yy231;} break; case 175: /* groupby_opt ::= GROUP BY */ @@ -3354,18 +3356,18 @@ static void yy_reduce( break; case 176: /* having_opt ::= */ case 188: /* where_opt ::= */ yytestcase(yyruleno==188); - case 274: /* case_else ::= */ yytestcase(yyruleno==274); - case 276: /* case_operand ::= */ yytestcase(yyruleno==276); - case 334: /* when_clause ::= */ yytestcase(yyruleno==334); - case 347: /* key_opt ::= */ yytestcase(yyruleno==347); + case 275: /* case_else ::= */ yytestcase(yyruleno==275); + case 277: /* case_operand ::= */ yytestcase(yyruleno==277); + case 335: /* when_clause ::= */ yytestcase(yyruleno==335); + case 348: /* key_opt ::= */ yytestcase(yyruleno==348); {yygotominor.yy192 = nullptr;} break; case 177: /* having_opt ::= HAVING expr */ case 189: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==189); - case 266: /* expr ::= exprx */ yytestcase(yyruleno==266); - case 273: /* case_else ::= ELSE expr */ yytestcase(yyruleno==273); - case 275: /* case_operand ::= exprx */ yytestcase(yyruleno==275); - case 335: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==335); + case 267: /* expr ::= exprx */ yytestcase(yyruleno==267); + case 274: /* case_else ::= ELSE expr */ yytestcase(yyruleno==274); + case 276: /* case_operand ::= exprx */ yytestcase(yyruleno==276); + case 336: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==336); {yygotominor.yy192 = yymsp[0].minor.yy192;} break; case 178: /* limit_opt ::= */ @@ -3917,60 +3919,68 @@ static void yy_reduce( parserContext->minorErrorBeforeNextToken("Syntax error"); } break; - case 260: /* exprx ::= expr not_opt IN ID_DB */ + case 260: /* exprx ::= LP expr */ +{ + yygotominor.yy192 = new SqliteExpr(); + yygotominor.yy192->initSubExpr(yymsp[0].minor.yy192); + objectForTokens = yygotominor.yy192; + parserContext->minorErrorBeforeNextToken("Syntax error"); + } + break; + case 261: /* exprx ::= expr not_opt IN ID_DB */ { yy_destructor(yypParser,177,&yymsp[-3].minor); } break; - case 261: /* exprx ::= expr not_opt IN nm DOT ID_TAB */ - case 262: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==262); + case 262: /* exprx ::= expr not_opt IN nm DOT ID_TAB */ + case 263: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==263); { yy_destructor(yypParser,177,&yymsp[-5].minor); yy_destructor(yypParser,156,&yymsp[-2].minor); } break; - case 264: /* exprx ::= nm DOT nm DOT ID_COL */ - case 265: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==265); + case 265: /* exprx ::= nm DOT nm DOT ID_COL */ + case 266: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==266); { yy_destructor(yypParser,156,&yymsp[-4].minor); yy_destructor(yypParser,156,&yymsp[-2].minor); } break; - case 267: /* expr ::= */ + case 268: /* expr ::= */ { yygotominor.yy192 = new SqliteExpr(); objectForTokens = yygotominor.yy192; parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 270: /* likeop ::= LIKE|GLOB */ + case 271: /* likeop ::= LIKE|GLOB */ {yygotominor.yy41 = new SqliteExpr::LikeOp(SqliteExpr::likeOp(yymsp[0].minor.yy0->value));} break; - case 271: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ + case 272: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ { yymsp[-4].minor.yy231->append(yymsp[-2].minor.yy192); yymsp[-4].minor.yy231->append(yymsp[0].minor.yy192); yygotominor.yy231 = yymsp[-4].minor.yy231; } break; - case 272: /* case_exprlist ::= WHEN expr THEN expr */ + case 273: /* case_exprlist ::= WHEN expr THEN expr */ { yygotominor.yy231 = new ParserExprList(); yygotominor.yy231->append(yymsp[-2].minor.yy192); yygotominor.yy231->append(yymsp[0].minor.yy192); } break; - case 279: /* nexprlist ::= nexprlist COMMA expr */ + case 280: /* nexprlist ::= nexprlist COMMA expr */ { yymsp[-2].minor.yy231->append(yymsp[0].minor.yy192); yygotominor.yy231 = yymsp[-2].minor.yy231; DONT_INHERIT_TOKENS("nexprlist"); } break; - case 280: /* nexprlist ::= exprx */ + case 281: /* nexprlist ::= exprx */ { yygotominor.yy231 = new ParserExprList(); yygotominor.yy231->append(yymsp[0].minor.yy192); } break; - case 281: /* cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf */ + case 282: /* cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf */ { yygotominor.yy203 = new SqliteCreateIndex( *(yymsp[-9].minor.yy291), @@ -3990,31 +4000,31 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 282: /* cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB */ + case 283: /* cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB */ { yy_destructor(yypParser,156,&yymsp[-3].minor); } break; - case 287: /* idxlist_opt ::= */ + case 288: /* idxlist_opt ::= */ {yygotominor.yy63 = new ParserIndexedColumnList();} break; - case 288: /* idxlist_opt ::= LP idxlist RP */ + case 289: /* idxlist_opt ::= LP idxlist RP */ {yygotominor.yy63 = yymsp[-1].minor.yy63;} break; - case 289: /* idxlist ::= idxlist COMMA idxlist_single */ + case 290: /* idxlist ::= idxlist COMMA idxlist_single */ { yymsp[-2].minor.yy63->append(yymsp[0].minor.yy428); yygotominor.yy63 = yymsp[-2].minor.yy63; DONT_INHERIT_TOKENS("idxlist"); } break; - case 290: /* idxlist ::= idxlist_single */ + case 291: /* idxlist ::= idxlist_single */ { yygotominor.yy63 = new ParserIndexedColumnList(); yygotominor.yy63->append(yymsp[0].minor.yy428); } break; - case 291: /* idxlist_single ::= nm sortorder */ - case 292: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==292); + case 292: /* idxlist_single ::= nm sortorder */ + case 293: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==293); { SqliteIndexedColumn* obj = new SqliteIndexedColumn( @@ -4028,14 +4038,14 @@ static void yy_reduce( objectForTokens = yygotominor.yy428; } break; - case 293: /* cmd ::= DROP INDEX fullname */ + case 294: /* cmd ::= DROP INDEX fullname */ { yygotominor.yy203 = new SqliteDropIndex(false, yymsp[0].minor.yy120->name1, yymsp[0].minor.yy120->name2); delete yymsp[0].minor.yy120; objectForTokens = yygotominor.yy203; } break; - case 296: /* cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING */ + case 297: /* cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING */ { yygotominor.yy203 = new SqliteCopy( *(yymsp[-7].minor.yy418), @@ -4051,7 +4061,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 297: /* cmd ::= COPY orconf nm dbnm FROM nm */ + case 298: /* cmd ::= COPY orconf nm dbnm FROM nm */ { yygotominor.yy203 = new SqliteCopy( *(yymsp[-4].minor.yy418), @@ -4066,28 +4076,28 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 298: /* cmd ::= VACUUM */ + case 299: /* cmd ::= VACUUM */ { yygotominor.yy203 = new SqliteVacuum(); objectForTokens = yygotominor.yy203; } break; - case 299: /* cmd ::= VACUUM nm */ + case 300: /* cmd ::= VACUUM nm */ { yygotominor.yy203 = new SqliteVacuum(*(yymsp[0].minor.yy319)); delete yymsp[0].minor.yy319; objectForTokens = yygotominor.yy203; } break; - case 300: /* cmd ::= PRAGMA ids */ + case 301: /* cmd ::= PRAGMA ids */ { yygotominor.yy203 = new SqlitePragma(*(yymsp[0].minor.yy319), QString::null); delete yymsp[0].minor.yy319; objectForTokens = yygotominor.yy203; } break; - case 301: /* cmd ::= PRAGMA nm EQ nmnum */ - case 303: /* cmd ::= PRAGMA nm EQ minus_num */ yytestcase(yyruleno==303); + case 302: /* cmd ::= PRAGMA nm EQ nmnum */ + case 304: /* cmd ::= PRAGMA nm EQ minus_num */ yytestcase(yyruleno==304); { yygotominor.yy203 = new SqlitePragma(*(yymsp[-2].minor.yy319), QString::null, *(yymsp[0].minor.yy69), true); delete yymsp[-2].minor.yy319; @@ -4095,8 +4105,8 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 302: /* cmd ::= PRAGMA nm LP nmnum RP */ - case 304: /* cmd ::= PRAGMA nm LP minus_num RP */ yytestcase(yyruleno==304); + case 303: /* cmd ::= PRAGMA nm LP nmnum RP */ + case 305: /* cmd ::= PRAGMA nm LP minus_num RP */ yytestcase(yyruleno==305); { yygotominor.yy203 = new SqlitePragma(*(yymsp[-3].minor.yy319), QString::null, *(yymsp[-1].minor.yy69), false); delete yymsp[-3].minor.yy319; @@ -4104,18 +4114,18 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 308: /* nmnum ::= nm */ + case 309: /* nmnum ::= nm */ { yygotominor.yy69 = new QVariant(*(yymsp[0].minor.yy319)); delete yymsp[0].minor.yy319; } break; - case 309: /* nmnum ::= ON */ - case 310: /* nmnum ::= DELETE */ yytestcase(yyruleno==310); - case 311: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==311); + case 310: /* nmnum ::= ON */ + case 311: /* nmnum ::= DELETE */ yytestcase(yyruleno==311); + case 312: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==312); {yygotominor.yy69 = new QVariant(yymsp[0].minor.yy0->value);} break; - case 314: /* minus_num ::= MINUS number */ + case 315: /* minus_num ::= MINUS number */ { if (yymsp[0].minor.yy69->type() == QVariant::Double) *(yymsp[0].minor.yy69) = -(yymsp[0].minor.yy69->toDouble()); @@ -4127,13 +4137,13 @@ static void yy_reduce( yygotominor.yy69 = yymsp[0].minor.yy69; } break; - case 315: /* number ::= INTEGER */ + case 316: /* number ::= INTEGER */ {yygotominor.yy69 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toLongLong());} break; - case 316: /* number ::= FLOAT */ + case 317: /* number ::= FLOAT */ {yygotominor.yy69 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble());} break; - case 317: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END */ + case 318: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END */ { yygotominor.yy203 = new SqliteCreateTrigger( *(yymsp[-12].minor.yy226), @@ -4158,7 +4168,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 318: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause */ + case 319: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause */ { QList<SqliteQuery *> CL; @@ -4185,7 +4195,7 @@ static void yy_reduce( parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 319: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list */ + case 320: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list */ { yygotominor.yy203 = new SqliteCreateTrigger( *(yymsp[-11].minor.yy226), @@ -4211,14 +4221,14 @@ static void yy_reduce( parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 320: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB */ + case 321: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB */ { yy_destructor(yypParser,157,&yymsp[-6].minor); yy_destructor(yypParser,156,&yymsp[-4].minor); yy_destructor(yypParser,232,&yymsp[-3].minor); yy_destructor(yypParser,233,&yymsp[-2].minor); } break; - case 321: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB */ + case 322: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB */ { yy_destructor(yypParser,157,&yymsp[-8].minor); yy_destructor(yypParser,156,&yymsp[-6].minor); yy_destructor(yypParser,232,&yymsp[-5].minor); @@ -4226,76 +4236,76 @@ static void yy_reduce( yy_destructor(yypParser,156,&yymsp[-2].minor); } break; - case 323: /* trigger_time ::= BEFORE */ + case 324: /* trigger_time ::= BEFORE */ {yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::BEFORE);} break; - case 324: /* trigger_time ::= AFTER */ + case 325: /* trigger_time ::= AFTER */ {yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::AFTER);} break; - case 325: /* trigger_time ::= INSTEAD OF */ + case 326: /* trigger_time ::= INSTEAD OF */ {yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::INSTEAD_OF);} break; - case 326: /* trigger_time ::= */ + case 327: /* trigger_time ::= */ {yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::null);} break; - case 327: /* trigger_event ::= DELETE */ + case 328: /* trigger_event ::= DELETE */ { yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::DELETE); objectForTokens = yygotominor.yy151; } break; - case 328: /* trigger_event ::= INSERT */ + case 329: /* trigger_event ::= INSERT */ { yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::INSERT); objectForTokens = yygotominor.yy151; } break; - case 329: /* trigger_event ::= UPDATE */ + case 330: /* trigger_event ::= UPDATE */ { yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::UPDATE); objectForTokens = yygotominor.yy151; } break; - case 330: /* trigger_event ::= UPDATE OF inscollist */ + case 331: /* trigger_event ::= UPDATE OF inscollist */ { yygotominor.yy151 = new SqliteCreateTrigger::Event(*(yymsp[0].minor.yy207)); delete yymsp[0].minor.yy207; objectForTokens = yygotominor.yy151; } break; - case 331: /* foreach_clause ::= */ + case 332: /* foreach_clause ::= */ {yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::null);} break; - case 332: /* foreach_clause ::= FOR EACH ROW */ + case 333: /* foreach_clause ::= FOR EACH ROW */ {yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_ROW);} break; - case 333: /* foreach_clause ::= FOR EACH STATEMENT */ + case 334: /* foreach_clause ::= FOR EACH STATEMENT */ {yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_STATEMENT);} break; - case 336: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ + case 337: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ { yymsp[-2].minor.yy270->append(yymsp[-1].minor.yy203); yygotominor.yy270 = yymsp[-2].minor.yy270; DONT_INHERIT_TOKENS("trigger_cmd_list"); } break; - case 337: /* trigger_cmd_list ::= trigger_cmd SEMI */ + case 338: /* trigger_cmd_list ::= trigger_cmd SEMI */ { yygotominor.yy270 = new ParserQueryList(); yygotominor.yy270->append(yymsp[-1].minor.yy203); } break; - case 342: /* raisetype ::= ROLLBACK|ABORT|FAIL */ + case 343: /* raisetype ::= ROLLBACK|ABORT|FAIL */ {yygotominor.yy0 = yymsp[0].minor.yy0;} break; - case 343: /* cmd ::= DROP TRIGGER fullname */ + case 344: /* cmd ::= DROP TRIGGER fullname */ { yygotominor.yy203 = new SqliteDropTrigger(false, yymsp[0].minor.yy120->name1, yymsp[0].minor.yy120->name2); delete yymsp[0].minor.yy120; objectForTokens = yygotominor.yy203; } break; - case 346: /* cmd ::= ATTACH database_kw_opt ids AS ids key_opt */ + case 347: /* cmd ::= ATTACH database_kw_opt ids AS ids key_opt */ { SqliteExpr* e1 = new SqliteExpr(); SqliteExpr* e2 = new SqliteExpr(); @@ -4308,7 +4318,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 348: /* key_opt ::= USING ids */ + case 349: /* key_opt ::= USING ids */ { SqliteExpr* e = new SqliteExpr(); e->initLiteral(*(yymsp[0].minor.yy319)); @@ -4316,7 +4326,7 @@ static void yy_reduce( yygotominor.yy192 = e; } break; - case 351: /* cmd ::= DETACH database_kw_opt nm */ + case 352: /* cmd ::= DETACH database_kw_opt nm */ { SqliteExpr* e = new SqliteExpr(); e->initLiteral(*(yymsp[0].minor.yy319)); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y index 04da6cb..2fd9c0d 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y @@ -1586,6 +1586,12 @@ exprx(X) ::= expr(E) not_opt(N) IN LP objectForTokens = X; parserContext->minorErrorBeforeNextToken("Syntax error"); } +exprx(X) ::= LP expr(E). { + X = new SqliteExpr(); + X->initSubExpr(E); + objectForTokens = X; + parserContext->minorErrorBeforeNextToken("Syntax error"); + } exprx ::= expr not_opt IN ID_DB. [IN] {} exprx ::= expr not_opt IN nm DOT diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp index 8786832..7e4f3c0 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp @@ -170,7 +170,7 @@ typedef union { #define sqlite3_parseARG_FETCH ParserContext* parserContext = yypParser->parserContext #define sqlite3_parseARG_STORE yypParser->parserContext = parserContext #define YYNSTATE 724 -#define YYNRULE 424 +#define YYNRULE 425 #define YYFALLBACK 1 #define YY_NO_ACTION (YYNSTATE+YYNRULE+2) #define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) @@ -246,22 +246,22 @@ static const YYMINORTYPE yyzerominor = { 0 }; static const YYACTIONTYPE yy_action[] = { /* 0 */ 431, 48, 48, 47, 47, 47, 46, 216, 716, 339, /* 10 */ 643, 425, 51, 51, 51, 51, 44, 49, 49, 49, - /* 20 */ 49, 48, 48, 47, 47, 47, 46, 216, 721, 1026, - /* 30 */ 1026, 643, 131, 580, 51, 51, 51, 51, 411, 49, + /* 20 */ 49, 48, 48, 47, 47, 47, 46, 216, 721, 1027, + /* 30 */ 1027, 643, 131, 580, 51, 51, 51, 51, 411, 49, /* 40 */ 49, 49, 49, 48, 48, 47, 47, 47, 46, 216, - /* 50 */ 579, 81, 58, 643, 157, 685, 301, 282, 1026, 1026, - /* 60 */ 41, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - /* 70 */ 1026, 1026, 563, 1026, 1026, 1026, 1026, 38, 39, 1026, - /* 80 */ 1026, 1026, 1026, 1026, 40, 431, 528, 385, 716, 595, + /* 50 */ 579, 81, 58, 643, 157, 685, 301, 282, 1027, 1027, + /* 60 */ 41, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + /* 70 */ 1027, 1027, 563, 1027, 1027, 1027, 1027, 38, 39, 1027, + /* 80 */ 1027, 1027, 1027, 1027, 40, 431, 528, 385, 716, 595, /* 90 */ 594, 280, 4, 377, 716, 630, 425, 642, 608, 422, /* 100 */ 12, 134, 687, 429, 562, 609, 483, 690, 331, 279, /* 110 */ 714, 713, 564, 565, 642, 689, 688, 687, 235, 506, /* 120 */ 60, 320, 610, 411, 47, 47, 47, 46, 216, 122, - /* 130 */ 243, 213, 247, 59, 1142, 1142, 486, 609, 607, 603, + /* 130 */ 243, 213, 247, 59, 1143, 1143, 486, 609, 607, 603, /* 140 */ 685, 306, 485, 584, 716, 41, 507, 509, 642, 508, /* 150 */ 676, 9, 642, 144, 95, 281, 379, 276, 378, 132, /* 160 */ 297, 716, 38, 39, 601, 200, 199, 7, 355, 40, - /* 170 */ 884, 307, 1134, 274, 249, 716, 17, 4, 884, 1134, + /* 170 */ 884, 307, 1135, 274, 249, 716, 17, 4, 884, 1135, /* 180 */ 56, 717, 642, 431, 422, 884, 329, 687, 429, 716, /* 190 */ 687, 643, 690, 687, 425, 690, 714, 713, 690, 642, /* 200 */ 689, 688, 687, 689, 688, 687, 689, 688, 687, 98, @@ -269,16 +269,16 @@ static const YYACTIONTYPE yy_action[] = { /* 220 */ 716, 411, 239, 884, 303, 582, 512, 581, 884, 884, /* 230 */ 884, 884, 884, 642, 643, 676, 9, 642, 685, 217, /* 240 */ 245, 673, 102, 41, 287, 300, 714, 713, 67, 302, - /* 250 */ 148, 307, 1133, 151, 306, 484, 81, 715, 97, 1133, + /* 250 */ 148, 307, 1134, 151, 306, 484, 81, 715, 97, 1134, /* 260 */ 38, 39, 551, 714, 713, 771, 130, 40, 946, 376, /* 270 */ 373, 372, 447, 46, 216, 4, 946, 714, 713, 334, /* 280 */ 642, 682, 422, 946, 606, 687, 429, 371, 448, 447, /* 290 */ 690, 714, 713, 304, 265, 146, 267, 642, 689, 688, /* 300 */ 687, 287, 68, 677, 691, 255, 362, 259, 359, 692, - /* 310 */ 1027, 1027, 682, 946, 715, 946, 946, 447, 698, 234, + /* 310 */ 1028, 1028, 682, 946, 715, 946, 946, 447, 698, 234, /* 320 */ 386, 715, 714, 713, 773, 651, 946, 946, 946, 946, /* 330 */ 110, 642, 317, 676, 9, 642, 222, 677, 299, 52, - /* 340 */ 53, 426, 289, 1027, 1027, 675, 675, 50, 50, 51, + /* 340 */ 53, 426, 289, 1028, 1028, 675, 675, 50, 50, 51, /* 350 */ 51, 51, 51, 716, 49, 49, 49, 49, 48, 48, /* 360 */ 47, 47, 47, 46, 216, 431, 428, 340, 716, 335, /* 370 */ 671, 670, 287, 283, 716, 138, 425, 209, 219, 430, @@ -293,27 +293,27 @@ static const YYACTIONTYPE yy_action[] = { /* 460 */ 92, 143, 642, 358, 422, 931, 674, 687, 429, 14, /* 470 */ 714, 713, 690, 131, 456, 551, 714, 713, 953, 642, /* 480 */ 689, 688, 687, 668, 667, 210, 593, 458, 384, 457, - /* 490 */ 576, 88, 1027, 1027, 13, 931, 672, 931, 931, 54, + /* 490 */ 576, 88, 1028, 1028, 13, 931, 672, 931, 931, 54, /* 500 */ 575, 678, 42, 368, 37, 401, 35, 381, 931, 1, /* 510 */ 931, 931, 641, 642, 634, 676, 9, 642, 661, 714, - /* 520 */ 713, 52, 53, 426, 289, 1027, 1027, 675, 675, 50, + /* 520 */ 713, 52, 53, 426, 289, 1028, 1028, 675, 675, 50, /* 530 */ 50, 51, 51, 51, 51, 660, 49, 49, 49, 49, /* 540 */ 48, 48, 47, 47, 47, 46, 216, 657, 648, 714, /* 550 */ 713, 496, 542, 569, 714, 713, 714, 713, 656, 691, /* 560 */ 543, 614, 320, 30, 692, 27, 716, 585, 274, 682, - /* 570 */ 160, 1027, 1027, 426, 289, 693, 613, 675, 675, 50, + /* 570 */ 160, 1028, 1028, 426, 289, 693, 613, 675, 675, 50, /* 580 */ 50, 51, 51, 51, 51, 398, 49, 49, 49, 49, - /* 590 */ 48, 48, 47, 47, 47, 46, 216, 1025, 1025, 81, - /* 600 */ 52, 53, 426, 289, 1027, 1027, 675, 675, 50, 50, + /* 590 */ 48, 48, 47, 47, 47, 46, 216, 1026, 1026, 81, + /* 600 */ 52, 53, 426, 289, 1028, 1028, 675, 675, 50, 50, /* 610 */ 51, 51, 51, 51, 496, 49, 49, 49, 49, 48, - /* 620 */ 48, 47, 47, 47, 46, 216, 1025, 1025, 1025, 1025, - /* 630 */ 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, - /* 640 */ 716, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, - /* 650 */ 1025, 1025, 1027, 1027, 357, 49, 49, 49, 49, 48, + /* 620 */ 48, 47, 47, 47, 46, 216, 1026, 1026, 1026, 1026, + /* 630 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + /* 640 */ 716, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + /* 650 */ 1026, 1026, 1028, 1028, 357, 49, 49, 49, 49, 48, /* 660 */ 48, 47, 47, 47, 46, 216, 288, 552, 714, 713, /* 670 */ 495, 682, 298, 662, 346, 153, 538, 69, 694, 715, - /* 680 */ 715, 52, 53, 426, 289, 1027, 1027, 675, 675, 50, - /* 690 */ 50, 51, 51, 51, 51, 1094, 49, 49, 49, 49, + /* 680 */ 715, 52, 53, 426, 289, 1028, 1028, 675, 675, 50, + /* 690 */ 50, 51, 51, 51, 51, 1095, 49, 49, 49, 49, /* 700 */ 48, 48, 47, 47, 47, 46, 216, 52, 53, 426, /* 710 */ 289, 418, 511, 675, 675, 50, 50, 51, 51, 51, /* 720 */ 51, 159, 49, 49, 49, 49, 48, 48, 47, 47, @@ -321,12 +321,12 @@ static const YYACTIONTYPE yy_action[] = { /* 740 */ 215, 650, 714, 713, 81, 52, 53, 426, 289, 954, /* 750 */ 414, 675, 675, 50, 50, 51, 51, 51, 51, 397, /* 760 */ 49, 49, 49, 49, 48, 48, 47, 47, 47, 46, - /* 770 */ 216, 158, 1094, 21, 716, 627, 459, 716, 1079, 716, - /* 780 */ 647, 1045, 140, 89, 716, 1149, 154, 435, 2, 715, + /* 770 */ 216, 158, 1095, 21, 716, 627, 459, 716, 1080, 716, + /* 780 */ 647, 1046, 140, 89, 716, 1150, 154, 435, 2, 715, /* 790 */ 424, 671, 670, 396, 460, 461, 954, 52, 53, 426, /* 800 */ 289, 573, 716, 675, 675, 50, 50, 51, 51, 51, /* 810 */ 51, 321, 49, 49, 49, 49, 48, 48, 47, 47, - /* 820 */ 47, 46, 216, 431, 1108, 81, 206, 205, 204, 52, + /* 820 */ 47, 46, 216, 431, 1109, 81, 206, 205, 204, 52, /* 830 */ 53, 426, 289, 716, 425, 675, 675, 50, 50, 51, /* 840 */ 51, 51, 51, 344, 49, 49, 49, 49, 48, 48, /* 850 */ 47, 47, 47, 46, 216, 597, 715, 666, 600, 462, @@ -334,17 +334,17 @@ static const YYACTIONTYPE yy_action[] = { /* 870 */ 667, 609, 724, 434, 81, 656, 714, 713, 685, 714, /* 880 */ 713, 714, 713, 41, 528, 272, 714, 713, 610, 349, /* 890 */ 528, 450, 89, 677, 12, 633, 633, 338, 636, 609, - /* 900 */ 38, 39, 649, 609, 714, 713, 716, 40, 1142, 1142, + /* 900 */ 38, 39, 649, 609, 714, 713, 716, 40, 1143, 1143, /* 910 */ 716, 524, 682, 581, 716, 4, 610, 468, 60, 450, /* 920 */ 642, 208, 422, 506, 60, 687, 429, 677, 32, 109, /* 930 */ 690, 609, 500, 501, 352, 714, 713, 642, 689, 688, /* 940 */ 687, 428, 900, 900, 467, 466, 552, 465, 421, 383, - /* 950 */ 507, 509, 142, 508, 430, 440, 69, 1142, 1142, 715, + /* 950 */ 507, 509, 142, 508, 430, 440, 69, 1143, 1143, 715, /* 960 */ 444, 722, 686, 182, 646, 714, 713, 645, 231, 230, /* 970 */ 437, 642, 356, 676, 9, 642, 417, 444, 52, 53, /* 980 */ 426, 289, 91, 91, 675, 675, 50, 50, 51, 51, /* 990 */ 51, 51, 644, 49, 49, 49, 49, 48, 48, 47, - /* 1000 */ 47, 47, 46, 216, 1034, 444, 668, 667, 714, 713, + /* 1000 */ 47, 47, 46, 216, 1035, 444, 668, 667, 714, 713, /* 1010 */ 91, 453, 714, 713, 682, 641, 714, 713, 324, 202, /* 1020 */ 52, 53, 426, 289, 446, 680, 675, 675, 50, 50, /* 1030 */ 51, 51, 51, 51, 639, 49, 49, 49, 49, 48, @@ -367,10 +367,10 @@ static const YYACTIONTYPE yy_action[] = { /* 1200 */ 47, 47, 47, 46, 216, 532, 8, 517, 696, 87, /* 1210 */ 137, 52, 53, 426, 289, 22, 557, 675, 675, 50, /* 1220 */ 50, 51, 51, 51, 51, 135, 49, 49, 49, 49, - /* 1230 */ 48, 48, 47, 47, 47, 46, 216, 81, 1109, 91, + /* 1230 */ 48, 48, 47, 47, 47, 46, 216, 81, 1110, 91, /* 1240 */ 716, 91, 52, 53, 426, 289, 615, 722, 675, 675, /* 1250 */ 50, 50, 51, 51, 51, 51, 620, 49, 49, 49, - /* 1260 */ 49, 48, 48, 47, 47, 47, 46, 216, 604, 1107, + /* 1260 */ 49, 48, 48, 47, 47, 47, 46, 216, 604, 1108, /* 1270 */ 99, 504, 390, 491, 52, 53, 426, 289, 714, 713, /* 1280 */ 675, 675, 50, 50, 51, 51, 51, 51, 682, 49, /* 1290 */ 49, 49, 49, 48, 48, 47, 47, 47, 46, 216, @@ -395,7 +395,7 @@ static const YYACTIONTYPE yy_action[] = { /* 1480 */ 530, 714, 713, 651, 715, 714, 713, 38, 39, 64, /* 1490 */ 18, 399, 370, 431, 40, 129, 716, 366, 326, 534, /* 1500 */ 534, 63, 4, 270, 425, 714, 713, 642, 475, 422, - /* 1510 */ 316, 530, 687, 429, 716, 714, 713, 690, 279, 716, + /* 1510 */ 316, 530, 714, 429, 716, 714, 713, 690, 279, 716, /* 1520 */ 533, 716, 156, 624, 642, 689, 688, 687, 525, 716, /* 1530 */ 125, 411, 519, 714, 713, 514, 715, 714, 713, 3, /* 1540 */ 714, 713, 714, 713, 79, 525, 682, 85, 685, 519, @@ -408,9 +408,9 @@ static const YYACTIONTYPE yy_action[] = { /* 1610 */ 687, 438, 428, 411, 497, 62, 714, 713, 430, 119, /* 1620 */ 254, 714, 713, 714, 713, 430, 686, 181, 438, 704, /* 1630 */ 685, 714, 713, 686, 163, 41, 251, 629, 311, 161, - /* 1640 */ 138, 642, 715, 676, 9, 642, 455, 1035, 682, 531, + /* 1640 */ 138, 642, 715, 676, 9, 642, 455, 1036, 682, 531, /* 1650 */ 701, 702, 38, 39, 152, 641, 498, 469, 431, 40, - /* 1660 */ 499, 478, 699, 428, 715, 714, 713, 4, 1037, 425, + /* 1660 */ 499, 478, 699, 428, 715, 714, 713, 4, 1038, 425, /* 1670 */ 714, 713, 642, 416, 422, 715, 430, 687, 429, 641, /* 1680 */ 428, 350, 690, 619, 686, 172, 641, 494, 454, 642, /* 1690 */ 689, 688, 687, 430, 111, 428, 411, 286, 337, 714, @@ -794,59 +794,59 @@ static const short yy_reduce_ofst[] = { /* 310 */ 1573, 1506, 1462, 1462, 1462, 1540, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 729, 1037, 1142, 1142, 1026, 1026, 1026, 1142, 1026, 1026, - /* 10 */ 1026, 1026, 900, 1148, 1148, 1148, 1026, 1026, 1026, 1026, - /* 20 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - /* 30 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - /* 40 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - /* 50 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1015, 1148, 894, - /* 60 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 774, - /* 70 */ 890, 900, 1148, 1148, 1148, 1148, 1148, 962, 949, 940, - /* 80 */ 1148, 1148, 1148, 972, 972, 955, 842, 972, 1148, 1148, - /* 90 */ 1148, 1148, 928, 928, 1027, 1148, 766, 1112, 1117, 1013, - /* 100 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 901, 1148, - /* 110 */ 1013, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - /* 120 */ 1148, 963, 956, 950, 941, 1148, 1148, 1148, 1148, 1148, - /* 130 */ 1148, 1148, 1148, 1148, 1148, 890, 890, 1148, 1148, 890, - /* 140 */ 1148, 1148, 1148, 1014, 1148, 1148, 763, 1148, 1148, 1148, - /* 150 */ 735, 1058, 1148, 1148, 729, 1142, 1142, 1142, 1142, 1142, - /* 160 */ 1142, 1135, 880, 935, 906, 945, 933, 937, 1038, 1031, - /* 170 */ 1032, 1030, 936, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - /* 180 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 988, 1000, - /* 190 */ 987, 995, 1004, 999, 996, 990, 989, 991, 1148, 1148, - /* 200 */ 1148, 992, 1148, 1148, 1148, 1148, 1148, 893, 1148, 1148, - /* 210 */ 864, 1148, 1086, 1148, 1148, 776, 1148, 878, 738, 944, - /* 220 */ 918, 918, 809, 833, 798, 928, 918, 908, 1033, 928, - /* 230 */ 1148, 1148, 993, 891, 878, 1126, 909, 909, 909, 1111, - /* 240 */ 1111, 909, 909, 855, 909, 855, 909, 855, 909, 855, + /* 0 */ 729, 1038, 1143, 1143, 1027, 1027, 1027, 1143, 1027, 1027, + /* 10 */ 1027, 1027, 900, 1149, 1149, 1149, 1027, 1027, 1027, 1027, + /* 20 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + /* 30 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + /* 40 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + /* 50 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1015, 1149, 894, + /* 60 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 774, + /* 70 */ 890, 900, 1149, 1149, 1149, 1149, 1149, 962, 949, 940, + /* 80 */ 1149, 1149, 1149, 972, 972, 955, 842, 972, 1149, 1149, + /* 90 */ 1149, 1149, 928, 928, 1028, 1149, 766, 1113, 1118, 1013, + /* 100 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 901, 1149, + /* 110 */ 1013, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + /* 120 */ 1149, 963, 956, 950, 941, 1149, 1149, 1149, 1149, 1149, + /* 130 */ 1149, 1149, 1149, 1149, 1149, 890, 890, 1149, 1149, 890, + /* 140 */ 1149, 1149, 1149, 1014, 1149, 1149, 763, 1149, 1149, 1149, + /* 150 */ 735, 1059, 1149, 1149, 729, 1143, 1143, 1143, 1143, 1143, + /* 160 */ 1143, 1136, 880, 935, 906, 945, 933, 937, 1039, 1032, + /* 170 */ 1033, 1031, 936, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + /* 180 */ 1028, 1028, 1018, 1028, 1028, 1028, 1028, 1028, 988, 1000, + /* 190 */ 987, 995, 1004, 999, 996, 990, 989, 991, 1149, 1149, + /* 200 */ 1149, 992, 1149, 1149, 1149, 1149, 1149, 893, 1149, 1149, + /* 210 */ 864, 1149, 1087, 1149, 1149, 776, 1149, 878, 738, 944, + /* 220 */ 918, 918, 809, 833, 798, 928, 918, 908, 1034, 928, + /* 230 */ 1149, 1149, 993, 891, 878, 1127, 909, 909, 909, 1112, + /* 240 */ 1112, 909, 909, 855, 909, 855, 909, 855, 909, 855, /* 250 */ 909, 760, 944, 909, 760, 846, 968, 909, 909, 846, - /* 260 */ 944, 909, 1093, 1091, 909, 760, 909, 760, 909, 1046, - /* 270 */ 844, 844, 844, 844, 825, 1046, 844, 809, 844, 825, - /* 280 */ 844, 844, 1148, 909, 909, 1148, 1046, 1052, 1046, 1027, - /* 290 */ 994, 934, 922, 932, 929, 944, 1148, 757, 828, 760, - /* 300 */ 746, 746, 734, 734, 734, 734, 1139, 1139, 1135, 811, - /* 310 */ 811, 896, 1003, 1002, 1001, 785, 1039, 1148, 1148, 1148, - /* 320 */ 1148, 1148, 1148, 1060, 1148, 1148, 1148, 1148, 1148, 1148, - /* 330 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 730, 1148, - /* 340 */ 1148, 1148, 1148, 1148, 1129, 1148, 1148, 1148, 1148, 1148, - /* 350 */ 1148, 1090, 1089, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - /* 360 */ 1148, 1148, 1148, 1078, 1148, 1148, 1148, 1148, 1148, 1148, - /* 370 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - /* 380 */ 1148, 1148, 1148, 1148, 867, 869, 1148, 1148, 1148, 868, - /* 390 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 930, - /* 400 */ 1148, 923, 1148, 1036, 1148, 1017, 1025, 1148, 1148, 1148, - /* 410 */ 1148, 1148, 1016, 1148, 1148, 1148, 1144, 1148, 1148, 1148, - /* 420 */ 1143, 1148, 1148, 1148, 1148, 1148, 1028, 980, 1148, 979, - /* 430 */ 978, 769, 1148, 744, 1148, 726, 731, 1128, 1125, 1127, - /* 440 */ 1122, 1123, 1121, 1124, 1120, 1118, 1119, 1116, 1114, 1113, - /* 450 */ 1115, 1110, 1106, 1066, 1064, 1062, 1071, 1070, 1069, 1068, - /* 460 */ 1067, 1063, 1061, 1065, 1059, 959, 947, 938, 862, 1105, - /* 470 */ 1103, 1104, 1057, 1055, 1056, 861, 860, 859, 854, 853, - /* 480 */ 852, 851, 1132, 1141, 1140, 1138, 1137, 1136, 1130, 1131, - /* 490 */ 1044, 1043, 1041, 1040, 1042, 762, 1082, 1085, 1084, 1083, - /* 500 */ 1088, 1087, 1080, 1092, 1097, 1096, 1101, 1100, 1099, 1098, - /* 510 */ 1095, 1077, 967, 966, 964, 969, 961, 960, 965, 952, - /* 520 */ 958, 957, 948, 951, 847, 943, 939, 942, 863, 1081, + /* 260 */ 944, 909, 1094, 1092, 909, 760, 909, 760, 909, 1047, + /* 270 */ 844, 844, 844, 844, 825, 1047, 844, 809, 844, 825, + /* 280 */ 844, 844, 1149, 909, 909, 1149, 1047, 1053, 1047, 1028, + /* 290 */ 994, 934, 922, 932, 929, 944, 1149, 757, 828, 760, + /* 300 */ 746, 746, 734, 734, 734, 734, 1140, 1140, 1136, 811, + /* 310 */ 811, 896, 1003, 1002, 1001, 785, 1040, 1149, 1149, 1149, + /* 320 */ 1149, 1149, 1149, 1061, 1149, 1149, 1149, 1149, 1149, 1149, + /* 330 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 730, 1149, + /* 340 */ 1149, 1149, 1149, 1149, 1130, 1149, 1149, 1149, 1149, 1149, + /* 350 */ 1149, 1091, 1090, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + /* 360 */ 1149, 1149, 1149, 1079, 1149, 1149, 1149, 1149, 1149, 1149, + /* 370 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + /* 380 */ 1149, 1149, 1149, 1149, 867, 869, 1149, 1149, 1149, 868, + /* 390 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 930, + /* 400 */ 1149, 923, 1149, 1037, 1149, 1017, 1026, 1149, 1149, 1149, + /* 410 */ 1149, 1149, 1016, 1149, 1149, 1149, 1145, 1149, 1149, 1149, + /* 420 */ 1144, 1149, 1149, 1149, 1149, 1149, 1029, 980, 1149, 979, + /* 430 */ 978, 769, 1149, 744, 1149, 726, 731, 1129, 1126, 1128, + /* 440 */ 1123, 1124, 1122, 1125, 1121, 1119, 1120, 1117, 1115, 1114, + /* 450 */ 1116, 1111, 1107, 1067, 1065, 1063, 1072, 1071, 1070, 1069, + /* 460 */ 1068, 1064, 1062, 1066, 1060, 959, 947, 938, 862, 1106, + /* 470 */ 1104, 1105, 1058, 1056, 1057, 861, 860, 859, 854, 853, + /* 480 */ 852, 851, 1133, 1142, 1141, 1139, 1138, 1137, 1131, 1132, + /* 490 */ 1045, 1044, 1042, 1041, 1043, 762, 1083, 1086, 1085, 1084, + /* 500 */ 1089, 1088, 1081, 1093, 1098, 1097, 1102, 1101, 1100, 1099, + /* 510 */ 1096, 1078, 967, 966, 964, 969, 961, 960, 965, 952, + /* 520 */ 958, 957, 948, 951, 847, 943, 939, 942, 863, 1082, /* 530 */ 858, 857, 856, 761, 756, 911, 755, 754, 765, 831, /* 540 */ 832, 840, 843, 838, 841, 837, 836, 835, 839, 834, /* 550 */ 830, 768, 767, 775, 824, 802, 800, 799, 803, 816, @@ -857,12 +857,12 @@ static const YYACTIONTYPE yy_default[] = { /* 600 */ 883, 882, 881, 917, 916, 915, 914, 913, 912, 905, /* 610 */ 903, 899, 898, 904, 902, 920, 921, 919, 897, 889, /* 620 */ 887, 888, 886, 974, 971, 973, 970, 907, 895, 892, - /* 630 */ 879, 925, 924, 1029, 1018, 1008, 1019, 910, 1007, 1005, - /* 640 */ 1028, 1025, 1020, 1102, 1024, 1012, 1011, 1010, 1147, 1145, - /* 650 */ 1146, 1049, 1051, 1054, 1053, 1050, 927, 926, 1048, 1047, - /* 660 */ 1009, 984, 781, 779, 780, 1074, 1073, 1076, 1075, 1072, - /* 670 */ 783, 782, 778, 777, 998, 997, 982, 1021, 1022, 981, - /* 680 */ 1023, 983, 770, 873, 866, 976, 975, 808, 807, 806, + /* 630 */ 879, 925, 924, 1030, 1019, 1008, 1020, 910, 1007, 1005, + /* 640 */ 1029, 1026, 1021, 1103, 1025, 1012, 1011, 1010, 1148, 1146, + /* 650 */ 1147, 1050, 1052, 1055, 1054, 1051, 927, 926, 1049, 1048, + /* 660 */ 1009, 984, 781, 779, 780, 1075, 1074, 1077, 1076, 1073, + /* 670 */ 783, 782, 778, 777, 998, 997, 982, 1022, 1023, 981, + /* 680 */ 1024, 983, 770, 873, 866, 976, 975, 808, 807, 806, /* 690 */ 805, 877, 876, 787, 801, 786, 784, 764, 759, 758, /* 700 */ 753, 751, 748, 750, 747, 752, 749, 745, 743, 742, /* 710 */ 741, 740, 739, 773, 772, 771, 769, 737, 736, 733, @@ -1462,136 +1462,137 @@ static const char *const yyRuleName[] = { /* 291 */ "exprx ::= expr not_opt BETWEEN expr AND", /* 292 */ "exprx ::= CASE case_operand case_exprlist case_else", /* 293 */ "exprx ::= expr not_opt IN LP exprlist", - /* 294 */ "exprx ::= expr not_opt IN ID_DB", - /* 295 */ "exprx ::= expr not_opt IN nm DOT ID_TAB", - /* 296 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN", - /* 297 */ "exprx ::= nm DOT ID_TAB|ID_COL", - /* 298 */ "exprx ::= nm DOT nm DOT ID_COL", - /* 299 */ "exprx ::= expr COLLATE ID_COLLATE", - /* 300 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP", - /* 301 */ "expr ::= exprx", - /* 302 */ "expr ::=", - /* 303 */ "not_opt ::=", - /* 304 */ "not_opt ::= NOT", - /* 305 */ "likeop ::= LIKE_KW|MATCH", - /* 306 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", - /* 307 */ "case_exprlist ::= WHEN expr THEN expr", - /* 308 */ "case_else ::= ELSE expr", - /* 309 */ "case_else ::=", - /* 310 */ "case_operand ::= exprx", - /* 311 */ "case_operand ::=", - /* 312 */ "exprlist ::= nexprlist", - /* 313 */ "exprlist ::=", - /* 314 */ "nexprlist ::= nexprlist COMMA expr", - /* 315 */ "nexprlist ::= exprx", - /* 316 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt", - /* 317 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB", - /* 318 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW", - /* 319 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW", - /* 320 */ "uniqueflag ::= UNIQUE", - /* 321 */ "uniqueflag ::=", - /* 322 */ "idxlist_opt ::=", - /* 323 */ "idxlist_opt ::= LP idxlist RP", - /* 324 */ "idxlist ::= idxlist COMMA idxlist_single", - /* 325 */ "idxlist ::= idxlist_single", - /* 326 */ "idxlist_single ::= nm collate sortorder", - /* 327 */ "idxlist_single ::= ID_COL", - /* 328 */ "collate ::=", - /* 329 */ "collate ::= COLLATE ids", - /* 330 */ "collate ::= COLLATE ID_COLLATE", - /* 331 */ "cmd ::= DROP INDEX ifexists fullname", - /* 332 */ "cmd ::= DROP INDEX ifexists nm DOT ID_IDX", - /* 333 */ "cmd ::= DROP INDEX ifexists ID_DB|ID_IDX", - /* 334 */ "cmd ::= VACUUM", - /* 335 */ "cmd ::= VACUUM nm", - /* 336 */ "cmd ::= PRAGMA nm dbnm", - /* 337 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", - /* 338 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", - /* 339 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", - /* 340 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP", - /* 341 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA", - /* 342 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA", - /* 343 */ "nmnum ::= plus_num", - /* 344 */ "nmnum ::= nm", - /* 345 */ "nmnum ::= ON", - /* 346 */ "nmnum ::= DELETE", - /* 347 */ "nmnum ::= DEFAULT", - /* 348 */ "plus_num ::= PLUS number", - /* 349 */ "plus_num ::= number", - /* 350 */ "minus_num ::= MINUS number", - /* 351 */ "number ::= INTEGER", - /* 352 */ "number ::= FLOAT", - /* 353 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END", - /* 354 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause", - /* 355 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list", - /* 356 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB", - /* 357 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW", - /* 358 */ "cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW", - /* 359 */ "trigger_time ::= BEFORE", - /* 360 */ "trigger_time ::= AFTER", - /* 361 */ "trigger_time ::= INSTEAD OF", - /* 362 */ "trigger_time ::=", - /* 363 */ "trigger_event ::= DELETE", - /* 364 */ "trigger_event ::= INSERT", - /* 365 */ "trigger_event ::= UPDATE", - /* 366 */ "trigger_event ::= UPDATE OF inscollist", - /* 367 */ "foreach_clause ::=", - /* 368 */ "foreach_clause ::= FOR EACH ROW", - /* 369 */ "when_clause ::=", - /* 370 */ "when_clause ::= WHEN expr", - /* 371 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", - /* 372 */ "trigger_cmd_list ::= trigger_cmd SEMI", - /* 373 */ "trigger_cmd_list ::= SEMI", - /* 374 */ "trigger_cmd ::= update_stmt", - /* 375 */ "trigger_cmd ::= insert_stmt", - /* 376 */ "trigger_cmd ::= delete_stmt", - /* 377 */ "trigger_cmd ::= select_stmt", - /* 378 */ "raisetype ::= ROLLBACK|ABORT|FAIL", - /* 379 */ "cmd ::= DROP TRIGGER ifexists fullname", - /* 380 */ "cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG", - /* 381 */ "cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG", - /* 382 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", - /* 383 */ "cmd ::= DETACH database_kw_opt expr", - /* 384 */ "key_opt ::=", - /* 385 */ "key_opt ::= KEY expr", - /* 386 */ "database_kw_opt ::= DATABASE", - /* 387 */ "database_kw_opt ::=", - /* 388 */ "cmd ::= REINDEX", - /* 389 */ "cmd ::= REINDEX nm dbnm", - /* 390 */ "cmd ::= REINDEX ID_COLLATE", - /* 391 */ "cmd ::= REINDEX nm DOT ID_TAB|ID_IDX", - /* 392 */ "cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB", - /* 393 */ "cmd ::= ANALYZE", - /* 394 */ "cmd ::= ANALYZE nm dbnm", - /* 395 */ "cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX", - /* 396 */ "cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB", - /* 397 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", - /* 398 */ "cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column", - /* 399 */ "cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW", - /* 400 */ "cmd ::= ALTER TABLE nm DOT ID_TAB", - /* 401 */ "cmd ::= ALTER TABLE ID_DB|ID_TAB", - /* 402 */ "kwcolumn_opt ::=", - /* 403 */ "kwcolumn_opt ::= COLUMNKW", - /* 404 */ "cmd ::= create_vtab", - /* 405 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm", - /* 406 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP", - /* 407 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW", - /* 408 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW", - /* 409 */ "vtabarglist ::= vtabarg", - /* 410 */ "vtabarglist ::= vtabarglist COMMA vtabarg", - /* 411 */ "vtabarg ::=", - /* 412 */ "vtabarg ::= vtabarg vtabargtoken", - /* 413 */ "vtabargtoken ::= ANY", - /* 414 */ "vtabargtoken ::= LP anylist RP", - /* 415 */ "anylist ::=", - /* 416 */ "anylist ::= anylist LP anylist RP", - /* 417 */ "anylist ::= anylist ANY", - /* 418 */ "with ::=", - /* 419 */ "with ::= WITH wqlist", - /* 420 */ "with ::= WITH RECURSIVE wqlist", - /* 421 */ "wqlist ::= nm idxlist_opt AS LP select RP", - /* 422 */ "wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP", - /* 423 */ "wqlist ::= ID_TAB_NEW", + /* 294 */ "exprx ::= LP expr", + /* 295 */ "exprx ::= expr not_opt IN ID_DB", + /* 296 */ "exprx ::= expr not_opt IN nm DOT ID_TAB", + /* 297 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN", + /* 298 */ "exprx ::= nm DOT ID_TAB|ID_COL", + /* 299 */ "exprx ::= nm DOT nm DOT ID_COL", + /* 300 */ "exprx ::= expr COLLATE ID_COLLATE", + /* 301 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP", + /* 302 */ "expr ::= exprx", + /* 303 */ "expr ::=", + /* 304 */ "not_opt ::=", + /* 305 */ "not_opt ::= NOT", + /* 306 */ "likeop ::= LIKE_KW|MATCH", + /* 307 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", + /* 308 */ "case_exprlist ::= WHEN expr THEN expr", + /* 309 */ "case_else ::= ELSE expr", + /* 310 */ "case_else ::=", + /* 311 */ "case_operand ::= exprx", + /* 312 */ "case_operand ::=", + /* 313 */ "exprlist ::= nexprlist", + /* 314 */ "exprlist ::=", + /* 315 */ "nexprlist ::= nexprlist COMMA expr", + /* 316 */ "nexprlist ::= exprx", + /* 317 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt", + /* 318 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB", + /* 319 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW", + /* 320 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW", + /* 321 */ "uniqueflag ::= UNIQUE", + /* 322 */ "uniqueflag ::=", + /* 323 */ "idxlist_opt ::=", + /* 324 */ "idxlist_opt ::= LP idxlist RP", + /* 325 */ "idxlist ::= idxlist COMMA idxlist_single", + /* 326 */ "idxlist ::= idxlist_single", + /* 327 */ "idxlist_single ::= nm collate sortorder", + /* 328 */ "idxlist_single ::= ID_COL", + /* 329 */ "collate ::=", + /* 330 */ "collate ::= COLLATE ids", + /* 331 */ "collate ::= COLLATE ID_COLLATE", + /* 332 */ "cmd ::= DROP INDEX ifexists fullname", + /* 333 */ "cmd ::= DROP INDEX ifexists nm DOT ID_IDX", + /* 334 */ "cmd ::= DROP INDEX ifexists ID_DB|ID_IDX", + /* 335 */ "cmd ::= VACUUM", + /* 336 */ "cmd ::= VACUUM nm", + /* 337 */ "cmd ::= PRAGMA nm dbnm", + /* 338 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", + /* 339 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", + /* 340 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", + /* 341 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP", + /* 342 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA", + /* 343 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA", + /* 344 */ "nmnum ::= plus_num", + /* 345 */ "nmnum ::= nm", + /* 346 */ "nmnum ::= ON", + /* 347 */ "nmnum ::= DELETE", + /* 348 */ "nmnum ::= DEFAULT", + /* 349 */ "plus_num ::= PLUS number", + /* 350 */ "plus_num ::= number", + /* 351 */ "minus_num ::= MINUS number", + /* 352 */ "number ::= INTEGER", + /* 353 */ "number ::= FLOAT", + /* 354 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END", + /* 355 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause", + /* 356 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list", + /* 357 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB", + /* 358 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW", + /* 359 */ "cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW", + /* 360 */ "trigger_time ::= BEFORE", + /* 361 */ "trigger_time ::= AFTER", + /* 362 */ "trigger_time ::= INSTEAD OF", + /* 363 */ "trigger_time ::=", + /* 364 */ "trigger_event ::= DELETE", + /* 365 */ "trigger_event ::= INSERT", + /* 366 */ "trigger_event ::= UPDATE", + /* 367 */ "trigger_event ::= UPDATE OF inscollist", + /* 368 */ "foreach_clause ::=", + /* 369 */ "foreach_clause ::= FOR EACH ROW", + /* 370 */ "when_clause ::=", + /* 371 */ "when_clause ::= WHEN expr", + /* 372 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", + /* 373 */ "trigger_cmd_list ::= trigger_cmd SEMI", + /* 374 */ "trigger_cmd_list ::= SEMI", + /* 375 */ "trigger_cmd ::= update_stmt", + /* 376 */ "trigger_cmd ::= insert_stmt", + /* 377 */ "trigger_cmd ::= delete_stmt", + /* 378 */ "trigger_cmd ::= select_stmt", + /* 379 */ "raisetype ::= ROLLBACK|ABORT|FAIL", + /* 380 */ "cmd ::= DROP TRIGGER ifexists fullname", + /* 381 */ "cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG", + /* 382 */ "cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG", + /* 383 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", + /* 384 */ "cmd ::= DETACH database_kw_opt expr", + /* 385 */ "key_opt ::=", + /* 386 */ "key_opt ::= KEY expr", + /* 387 */ "database_kw_opt ::= DATABASE", + /* 388 */ "database_kw_opt ::=", + /* 389 */ "cmd ::= REINDEX", + /* 390 */ "cmd ::= REINDEX nm dbnm", + /* 391 */ "cmd ::= REINDEX ID_COLLATE", + /* 392 */ "cmd ::= REINDEX nm DOT ID_TAB|ID_IDX", + /* 393 */ "cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB", + /* 394 */ "cmd ::= ANALYZE", + /* 395 */ "cmd ::= ANALYZE nm dbnm", + /* 396 */ "cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX", + /* 397 */ "cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB", + /* 398 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", + /* 399 */ "cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column", + /* 400 */ "cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW", + /* 401 */ "cmd ::= ALTER TABLE nm DOT ID_TAB", + /* 402 */ "cmd ::= ALTER TABLE ID_DB|ID_TAB", + /* 403 */ "kwcolumn_opt ::=", + /* 404 */ "kwcolumn_opt ::= COLUMNKW", + /* 405 */ "cmd ::= create_vtab", + /* 406 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm", + /* 407 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP", + /* 408 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW", + /* 409 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW", + /* 410 */ "vtabarglist ::= vtabarg", + /* 411 */ "vtabarglist ::= vtabarglist COMMA vtabarg", + /* 412 */ "vtabarg ::=", + /* 413 */ "vtabarg ::= vtabarg vtabargtoken", + /* 414 */ "vtabargtoken ::= ANY", + /* 415 */ "vtabargtoken ::= LP anylist RP", + /* 416 */ "anylist ::=", + /* 417 */ "anylist ::= anylist LP anylist RP", + /* 418 */ "anylist ::= anylist ANY", + /* 419 */ "with ::=", + /* 420 */ "with ::= WITH wqlist", + /* 421 */ "with ::= WITH RECURSIVE wqlist", + /* 422 */ "wqlist ::= nm idxlist_opt AS LP select RP", + /* 423 */ "wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP", + /* 424 */ "wqlist ::= ID_TAB_NEW", }; #endif /* NDEBUG */ @@ -2519,6 +2520,7 @@ static const struct { { 251, 5 }, { 251, 4 }, { 251, 5 }, + { 251, 2 }, { 251, 4 }, { 251, 6 }, { 251, 1 }, @@ -2735,11 +2737,11 @@ static void yy_reduce( {yygotominor.yy225 = new ParserStubExplain(true, true);} break; case 8: /* cmdx ::= cmd */ - case 374: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==374); - case 375: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==375); - case 376: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==376); - case 377: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==377); - case 404: /* cmd ::= create_vtab */ yytestcase(yyruleno==404); + case 375: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==375); + case 376: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==376); + case 377: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==377); + case 378: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==378); + case 405: /* cmd ::= create_vtab */ yytestcase(yyruleno==405); {yygotominor.yy399 = yymsp[0].minor.yy399;} break; case 9: /* cmd ::= BEGIN transtype trans_opt */ @@ -2828,10 +2830,10 @@ static void yy_reduce( case 86: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==86); case 108: /* tconscomma ::= COMMA */ yytestcase(yyruleno==108); case 130: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==130); - case 304: /* not_opt ::= NOT */ yytestcase(yyruleno==304); - case 320: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==320); - case 386: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==386); - case 402: /* kwcolumn_opt ::= */ yytestcase(yyruleno==402); + case 305: /* not_opt ::= NOT */ yytestcase(yyruleno==305); + case 321: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==321); + case 387: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==387); + case 403: /* kwcolumn_opt ::= */ yytestcase(yyruleno==403); {yygotominor.yy237 = new bool(true);} break; case 22: /* savepoint_opt ::= */ @@ -2839,10 +2841,10 @@ static void yy_reduce( case 85: /* autoinc ::= */ yytestcase(yyruleno==85); case 109: /* tconscomma ::= */ yytestcase(yyruleno==109); case 131: /* ifexists ::= */ yytestcase(yyruleno==131); - case 303: /* not_opt ::= */ yytestcase(yyruleno==303); - case 321: /* uniqueflag ::= */ yytestcase(yyruleno==321); - case 387: /* database_kw_opt ::= */ yytestcase(yyruleno==387); - case 403: /* kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==403); + case 304: /* not_opt ::= */ yytestcase(yyruleno==304); + case 322: /* uniqueflag ::= */ yytestcase(yyruleno==322); + case 388: /* database_kw_opt ::= */ yytestcase(yyruleno==388); + case 404: /* kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==404); {yygotominor.yy237 = new bool(false);} break; case 23: /* cmd ::= SAVEPOINT nm */ @@ -2914,22 +2916,22 @@ static void yy_reduce( break; case 31: /* cmd ::= CREATE temp TABLE ifnotexists nm DOT ID_TAB_NEW */ case 133: /* cmd ::= CREATE temp VIEW ifnotexists nm DOT ID_VIEW_NEW */ yytestcase(yyruleno==133); - case 357: /* cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW */ yytestcase(yyruleno==357); + case 358: /* cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW */ yytestcase(yyruleno==358); { yy_destructor(yypParser,179,&yymsp[-5].minor); yy_destructor(yypParser,177,&yymsp[-2].minor); } break; case 32: /* cmd ::= CREATE temp TABLE ifnotexists ID_DB|ID_TAB_NEW */ case 134: /* cmd ::= CREATE temp VIEW ifnotexists ID_DB|ID_VIEW_NEW */ yytestcase(yyruleno==134); - case 358: /* cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW */ yytestcase(yyruleno==358); + case 359: /* cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW */ yytestcase(yyruleno==359); { yy_destructor(yypParser,179,&yymsp[-3].minor); } break; case 33: /* table_options ::= */ case 185: /* dbnm ::= */ yytestcase(yyruleno==185); - case 328: /* collate ::= */ yytestcase(yyruleno==328); - case 411: /* vtabarg ::= */ yytestcase(yyruleno==411); - case 415: /* anylist ::= */ yytestcase(yyruleno==415); + case 329: /* collate ::= */ yytestcase(yyruleno==329); + case 412: /* vtabarg ::= */ yytestcase(yyruleno==412); + case 416: /* anylist ::= */ yytestcase(yyruleno==416); {yygotominor.yy211 = new QString();} break; case 34: /* table_options ::= WITHOUT nm */ @@ -2974,8 +2976,8 @@ static void yy_reduce( case 47: /* nm ::= id */ yytestcase(yyruleno==47); case 55: /* typename ::= ids */ yytestcase(yyruleno==55); case 186: /* dbnm ::= DOT nm */ yytestcase(yyruleno==186); - case 329: /* collate ::= COLLATE ids */ yytestcase(yyruleno==329); - case 330: /* collate ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==330); + case 330: /* collate ::= COLLATE ids */ yytestcase(yyruleno==330); + case 331: /* collate ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==331); {yygotominor.yy211 = yymsp[0].minor.yy211;} break; case 45: /* id ::= ID */ @@ -3035,9 +3037,9 @@ static void yy_reduce( break; case 58: /* signed ::= plus_num */ case 59: /* signed ::= minus_num */ yytestcase(yyruleno==59); - case 343: /* nmnum ::= plus_num */ yytestcase(yyruleno==343); - case 348: /* plus_num ::= PLUS number */ yytestcase(yyruleno==348); - case 349: /* plus_num ::= number */ yytestcase(yyruleno==349); + case 344: /* nmnum ::= plus_num */ yytestcase(yyruleno==344); + case 349: /* plus_num ::= PLUS number */ yytestcase(yyruleno==349); + case 350: /* plus_num ::= number */ yytestcase(yyruleno==350); {yygotominor.yy21 = yymsp[0].minor.yy21;} break; case 60: /* carglist ::= carglist ccons */ @@ -3202,9 +3204,9 @@ static void yy_reduce( } break; case 84: /* term ::= STRING|BLOB */ - case 345: /* nmnum ::= ON */ yytestcase(yyruleno==345); - case 346: /* nmnum ::= DELETE */ yytestcase(yyruleno==346); - case 347: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==347); + case 346: /* nmnum ::= ON */ yytestcase(yyruleno==346); + case 347: /* nmnum ::= DELETE */ yytestcase(yyruleno==347); + case 348: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==348); {yygotominor.yy21 = new QVariant(yymsp[0].minor.yy0->value);} break; case 87: /* refargs ::= */ @@ -3389,23 +3391,23 @@ static void yy_reduce( case 179: /* singlesrc ::= ID_DB|ID_TAB */ yytestcase(yyruleno==179); case 180: /* singlesrc ::= nm DOT ID_VIEW */ yytestcase(yyruleno==180); case 181: /* singlesrc ::= ID_DB|ID_VIEW */ yytestcase(yyruleno==181); - case 297: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==297); - case 318: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW */ yytestcase(yyruleno==318); - case 319: /* cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==319); - case 332: /* cmd ::= DROP INDEX ifexists nm DOT ID_IDX */ yytestcase(yyruleno==332); - case 333: /* cmd ::= DROP INDEX ifexists ID_DB|ID_IDX */ yytestcase(yyruleno==333); - case 341: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==341); - case 342: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==342); - case 380: /* cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG */ yytestcase(yyruleno==380); - case 381: /* cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG */ yytestcase(yyruleno==381); - case 391: /* cmd ::= REINDEX nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==391); - case 392: /* cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==392); - case 395: /* cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==395); - case 396: /* cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==396); - case 400: /* cmd ::= ALTER TABLE nm DOT ID_TAB */ yytestcase(yyruleno==400); - case 401: /* cmd ::= ALTER TABLE ID_DB|ID_TAB */ yytestcase(yyruleno==401); - case 407: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW */ yytestcase(yyruleno==407); - case 408: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW */ yytestcase(yyruleno==408); + case 298: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==298); + case 319: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW */ yytestcase(yyruleno==319); + case 320: /* cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==320); + case 333: /* cmd ::= DROP INDEX ifexists nm DOT ID_IDX */ yytestcase(yyruleno==333); + case 334: /* cmd ::= DROP INDEX ifexists ID_DB|ID_IDX */ yytestcase(yyruleno==334); + case 342: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==342); + case 343: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==343); + case 381: /* cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG */ yytestcase(yyruleno==381); + case 382: /* cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG */ yytestcase(yyruleno==382); + case 392: /* cmd ::= REINDEX nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==392); + case 393: /* cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==393); + case 396: /* cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==396); + case 397: /* cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==397); + case 401: /* cmd ::= ALTER TABLE nm DOT ID_TAB */ yytestcase(yyruleno==401); + case 402: /* cmd ::= ALTER TABLE ID_DB|ID_TAB */ yytestcase(yyruleno==402); + case 408: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW */ yytestcase(yyruleno==408); + case 409: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW */ yytestcase(yyruleno==409); { yy_destructor(yypParser,177,&yymsp[-2].minor); } break; @@ -3801,11 +3803,11 @@ static void yy_reduce( {yygotominor.yy226 = new SqliteSortOrder(SqliteSortOrder::null);} break; case 205: /* groupby_opt ::= */ - case 313: /* exprlist ::= */ yytestcase(yyruleno==313); + case 314: /* exprlist ::= */ yytestcase(yyruleno==314); {yygotominor.yy13 = new ParserExprList();} break; case 206: /* groupby_opt ::= GROUP BY nexprlist */ - case 312: /* exprlist ::= nexprlist */ yytestcase(yyruleno==312); + case 313: /* exprlist ::= nexprlist */ yytestcase(yyruleno==313); {yygotominor.yy13 = yymsp[0].minor.yy13;} break; case 207: /* groupby_opt ::= GROUP BY */ @@ -3816,19 +3818,19 @@ static void yy_reduce( break; case 208: /* having_opt ::= */ case 220: /* where_opt ::= */ yytestcase(yyruleno==220); - case 309: /* case_else ::= */ yytestcase(yyruleno==309); - case 311: /* case_operand ::= */ yytestcase(yyruleno==311); - case 369: /* when_clause ::= */ yytestcase(yyruleno==369); - case 384: /* key_opt ::= */ yytestcase(yyruleno==384); + case 310: /* case_else ::= */ yytestcase(yyruleno==310); + case 312: /* case_operand ::= */ yytestcase(yyruleno==312); + case 370: /* when_clause ::= */ yytestcase(yyruleno==370); + case 385: /* key_opt ::= */ yytestcase(yyruleno==385); {yygotominor.yy490 = nullptr;} break; case 209: /* having_opt ::= HAVING expr */ case 221: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==221); - case 301: /* expr ::= exprx */ yytestcase(yyruleno==301); - case 308: /* case_else ::= ELSE expr */ yytestcase(yyruleno==308); - case 310: /* case_operand ::= exprx */ yytestcase(yyruleno==310); - case 370: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==370); - case 385: /* key_opt ::= KEY expr */ yytestcase(yyruleno==385); + case 302: /* expr ::= exprx */ yytestcase(yyruleno==302); + case 309: /* case_else ::= ELSE expr */ yytestcase(yyruleno==309); + case 311: /* case_operand ::= exprx */ yytestcase(yyruleno==311); + case 371: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==371); + case 386: /* key_opt ::= KEY expr */ yytestcase(yyruleno==386); {yygotominor.yy490 = yymsp[0].minor.yy490;} break; case 210: /* limit_opt ::= */ @@ -4401,64 +4403,72 @@ static void yy_reduce( parserContext->minorErrorBeforeNextToken("Syntax error"); } break; - case 294: /* exprx ::= expr not_opt IN ID_DB */ + case 294: /* exprx ::= LP expr */ +{ + yygotominor.yy490 = new SqliteExpr(); + yygotominor.yy490->initSubExpr(yymsp[0].minor.yy490); + objectForTokens = yygotominor.yy490; + parserContext->minorErrorBeforeNextToken("Syntax error"); + } + break; + case 295: /* exprx ::= expr not_opt IN ID_DB */ { yy_destructor(yypParser,199,&yymsp[-3].minor); } break; - case 295: /* exprx ::= expr not_opt IN nm DOT ID_TAB */ - case 296: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==296); + case 296: /* exprx ::= expr not_opt IN nm DOT ID_TAB */ + case 297: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==297); { yy_destructor(yypParser,199,&yymsp[-5].minor); yy_destructor(yypParser,177,&yymsp[-2].minor); } break; - case 298: /* exprx ::= nm DOT nm DOT ID_COL */ + case 299: /* exprx ::= nm DOT nm DOT ID_COL */ { yy_destructor(yypParser,177,&yymsp[-4].minor); yy_destructor(yypParser,177,&yymsp[-2].minor); } break; - case 299: /* exprx ::= expr COLLATE ID_COLLATE */ - case 300: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==300); + case 300: /* exprx ::= expr COLLATE ID_COLLATE */ + case 301: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==301); { yy_destructor(yypParser,199,&yymsp[-2].minor); } break; - case 302: /* expr ::= */ + case 303: /* expr ::= */ { yygotominor.yy490 = new SqliteExpr(); objectForTokens = yygotominor.yy490; parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 305: /* likeop ::= LIKE_KW|MATCH */ + case 306: /* likeop ::= LIKE_KW|MATCH */ {yygotominor.yy374 = new SqliteExpr::LikeOp(SqliteExpr::likeOp(yymsp[0].minor.yy0->value));} break; - case 306: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ + case 307: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ { yymsp[-4].minor.yy13->append(yymsp[-2].minor.yy490); yymsp[-4].minor.yy13->append(yymsp[0].minor.yy490); yygotominor.yy13 = yymsp[-4].minor.yy13; } break; - case 307: /* case_exprlist ::= WHEN expr THEN expr */ + case 308: /* case_exprlist ::= WHEN expr THEN expr */ { yygotominor.yy13 = new ParserExprList(); yygotominor.yy13->append(yymsp[-2].minor.yy490); yygotominor.yy13->append(yymsp[0].minor.yy490); } break; - case 314: /* nexprlist ::= nexprlist COMMA expr */ + case 315: /* nexprlist ::= nexprlist COMMA expr */ { yymsp[-2].minor.yy13->append(yymsp[0].minor.yy490); yygotominor.yy13 = yymsp[-2].minor.yy13; DONT_INHERIT_TOKENS("nexprlist"); } break; - case 315: /* nexprlist ::= exprx */ + case 316: /* nexprlist ::= exprx */ { yygotominor.yy13 = new ParserExprList(); yygotominor.yy13->append(yymsp[0].minor.yy490); } break; - case 316: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt */ + case 317: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt */ { yygotominor.yy399 = new SqliteCreateIndex( *(yymsp[-10].minor.yy237), @@ -4478,31 +4488,31 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 317: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB */ + case 318: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB */ { yy_destructor(yypParser,177,&yymsp[-3].minor); } break; - case 322: /* idxlist_opt ::= */ + case 323: /* idxlist_opt ::= */ {yygotominor.yy139 = new ParserIndexedColumnList();} break; - case 323: /* idxlist_opt ::= LP idxlist RP */ + case 324: /* idxlist_opt ::= LP idxlist RP */ {yygotominor.yy139 = yymsp[-1].minor.yy139;} break; - case 324: /* idxlist ::= idxlist COMMA idxlist_single */ + case 325: /* idxlist ::= idxlist COMMA idxlist_single */ { yymsp[-2].minor.yy139->append(yymsp[0].minor.yy90); yygotominor.yy139 = yymsp[-2].minor.yy139; DONT_INHERIT_TOKENS("idxlist"); } break; - case 325: /* idxlist ::= idxlist_single */ + case 326: /* idxlist ::= idxlist_single */ { yygotominor.yy139 = new ParserIndexedColumnList(); yygotominor.yy139->append(yymsp[0].minor.yy90); } break; - case 326: /* idxlist_single ::= nm collate sortorder */ - case 327: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==327); + case 327: /* idxlist_single ::= nm collate sortorder */ + case 328: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==328); { SqliteIndexedColumn* obj = new SqliteIndexedColumn( @@ -4517,7 +4527,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy90; } break; - case 331: /* cmd ::= DROP INDEX ifexists fullname */ + case 332: /* cmd ::= DROP INDEX ifexists fullname */ { yygotominor.yy399 = new SqliteDropIndex(*(yymsp[-1].minor.yy237), yymsp[0].minor.yy66->name1, yymsp[0].minor.yy66->name2); delete yymsp[-1].minor.yy237; @@ -4525,20 +4535,20 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 334: /* cmd ::= VACUUM */ + case 335: /* cmd ::= VACUUM */ { yygotominor.yy399 = new SqliteVacuum(); objectForTokens = yygotominor.yy399; } break; - case 335: /* cmd ::= VACUUM nm */ + case 336: /* cmd ::= VACUUM nm */ { yygotominor.yy399 = new SqliteVacuum(*(yymsp[0].minor.yy211)); delete yymsp[0].minor.yy211; objectForTokens = yygotominor.yy399; } break; - case 336: /* cmd ::= PRAGMA nm dbnm */ + case 337: /* cmd ::= PRAGMA nm dbnm */ { yygotominor.yy399 = new SqlitePragma(*(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211)); delete yymsp[-1].minor.yy211; @@ -4546,8 +4556,8 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 337: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ - case 339: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ yytestcase(yyruleno==339); + case 338: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ + case 340: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ yytestcase(yyruleno==340); { yygotominor.yy399 = new SqlitePragma(*(yymsp[-3].minor.yy211), *(yymsp[-2].minor.yy211), *(yymsp[0].minor.yy21), true); delete yymsp[-3].minor.yy211; @@ -4556,8 +4566,8 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 338: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ - case 340: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ yytestcase(yyruleno==340); + case 339: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ + case 341: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ yytestcase(yyruleno==341); { yygotominor.yy399 = new SqlitePragma(*(yymsp[-4].minor.yy211), *(yymsp[-3].minor.yy211), *(yymsp[-1].minor.yy21), false); delete yymsp[-4].minor.yy211; @@ -4566,13 +4576,13 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 344: /* nmnum ::= nm */ + case 345: /* nmnum ::= nm */ { yygotominor.yy21 = new QVariant(*(yymsp[0].minor.yy211)); delete yymsp[0].minor.yy211; } break; - case 350: /* minus_num ::= MINUS number */ + case 351: /* minus_num ::= MINUS number */ { if (yymsp[0].minor.yy21->type() == QVariant::Double) *(yymsp[0].minor.yy21) = -(yymsp[0].minor.yy21->toDouble()); @@ -4584,13 +4594,13 @@ static void yy_reduce( yygotominor.yy21 = yymsp[0].minor.yy21; } break; - case 351: /* number ::= INTEGER */ + case 352: /* number ::= INTEGER */ {yygotominor.yy21 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toLongLong());} break; - case 352: /* number ::= FLOAT */ + case 353: /* number ::= FLOAT */ {yygotominor.yy21 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble());} break; - case 353: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END */ + case 354: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END */ { yygotominor.yy399 = new SqliteCreateTrigger( *(yymsp[-13].minor.yy376), @@ -4616,7 +4626,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 354: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause */ + case 355: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause */ { QList<SqliteQuery *> CL; @@ -4644,7 +4654,7 @@ static void yy_reduce( parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 355: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list */ + case 356: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list */ { yygotominor.yy399 = new SqliteCreateTrigger( *(yymsp[-12].minor.yy376), @@ -4671,79 +4681,79 @@ static void yy_reduce( parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 356: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB */ + case 357: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB */ { yy_destructor(yypParser,179,&yymsp[-8].minor); yy_destructor(yypParser,177,&yymsp[-5].minor); yy_destructor(yypParser,262,&yymsp[-3].minor); yy_destructor(yypParser,263,&yymsp[-2].minor); } break; - case 359: /* trigger_time ::= BEFORE */ + case 360: /* trigger_time ::= BEFORE */ {yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::BEFORE);} break; - case 360: /* trigger_time ::= AFTER */ + case 361: /* trigger_time ::= AFTER */ {yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::AFTER);} break; - case 361: /* trigger_time ::= INSTEAD OF */ + case 362: /* trigger_time ::= INSTEAD OF */ {yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::INSTEAD_OF);} break; - case 362: /* trigger_time ::= */ + case 363: /* trigger_time ::= */ {yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::null);} break; - case 363: /* trigger_event ::= DELETE */ + case 364: /* trigger_event ::= DELETE */ { yygotominor.yy309 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::DELETE); objectForTokens = yygotominor.yy309; } break; - case 364: /* trigger_event ::= INSERT */ + case 365: /* trigger_event ::= INSERT */ { yygotominor.yy309 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::INSERT); objectForTokens = yygotominor.yy309; } break; - case 365: /* trigger_event ::= UPDATE */ + case 366: /* trigger_event ::= UPDATE */ { yygotominor.yy309 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::UPDATE); objectForTokens = yygotominor.yy309; } break; - case 366: /* trigger_event ::= UPDATE OF inscollist */ + case 367: /* trigger_event ::= UPDATE OF inscollist */ { yygotominor.yy309 = new SqliteCreateTrigger::Event(*(yymsp[0].minor.yy445)); delete yymsp[0].minor.yy445; objectForTokens = yygotominor.yy309; } break; - case 367: /* foreach_clause ::= */ + case 368: /* foreach_clause ::= */ {yygotominor.yy409 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::null);} break; - case 368: /* foreach_clause ::= FOR EACH ROW */ + case 369: /* foreach_clause ::= FOR EACH ROW */ {yygotominor.yy409 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_ROW);} break; - case 371: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ + case 372: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ { yymsp[-2].minor.yy214->append(yymsp[-1].minor.yy399); yygotominor.yy214 = yymsp[-2].minor.yy214; DONT_INHERIT_TOKENS("trigger_cmd_list"); } break; - case 372: /* trigger_cmd_list ::= trigger_cmd SEMI */ + case 373: /* trigger_cmd_list ::= trigger_cmd SEMI */ { yygotominor.yy214 = new ParserQueryList(); yygotominor.yy214->append(yymsp[-1].minor.yy399); } break; - case 373: /* trigger_cmd_list ::= SEMI */ + case 374: /* trigger_cmd_list ::= SEMI */ { yygotominor.yy214 = new ParserQueryList(); parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 378: /* raisetype ::= ROLLBACK|ABORT|FAIL */ + case 379: /* raisetype ::= ROLLBACK|ABORT|FAIL */ {yygotominor.yy0 = yymsp[0].minor.yy0;} break; - case 379: /* cmd ::= DROP TRIGGER ifexists fullname */ + case 380: /* cmd ::= DROP TRIGGER ifexists fullname */ { yygotominor.yy399 = new SqliteDropTrigger(*(yymsp[-1].minor.yy237), yymsp[0].minor.yy66->name1, yymsp[0].minor.yy66->name2); delete yymsp[-1].minor.yy237; @@ -4751,25 +4761,25 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 382: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ + case 383: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ { yygotominor.yy399 = new SqliteAttach(*(yymsp[-4].minor.yy237), yymsp[-3].minor.yy490, yymsp[-1].minor.yy490, yymsp[0].minor.yy490); delete yymsp[-4].minor.yy237; objectForTokens = yygotominor.yy399; } break; - case 383: /* cmd ::= DETACH database_kw_opt expr */ + case 384: /* cmd ::= DETACH database_kw_opt expr */ { yygotominor.yy399 = new SqliteDetach(*(yymsp[-1].minor.yy237), yymsp[0].minor.yy490); delete yymsp[-1].minor.yy237; objectForTokens = yygotominor.yy399; } break; - case 388: /* cmd ::= REINDEX */ + case 389: /* cmd ::= REINDEX */ {yygotominor.yy399 = new SqliteReindex();} break; - case 389: /* cmd ::= REINDEX nm dbnm */ - case 390: /* cmd ::= REINDEX ID_COLLATE */ yytestcase(yyruleno==390); + case 390: /* cmd ::= REINDEX nm dbnm */ + case 391: /* cmd ::= REINDEX ID_COLLATE */ yytestcase(yyruleno==391); { yygotominor.yy399 = new SqliteReindex(*(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211)); delete yymsp[-1].minor.yy211; @@ -4777,13 +4787,13 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 393: /* cmd ::= ANALYZE */ + case 394: /* cmd ::= ANALYZE */ { yygotominor.yy399 = new SqliteAnalyze(); objectForTokens = yygotominor.yy399; } break; - case 394: /* cmd ::= ANALYZE nm dbnm */ + case 395: /* cmd ::= ANALYZE nm dbnm */ { yygotominor.yy399 = new SqliteAnalyze(*(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211)); delete yymsp[-1].minor.yy211; @@ -4791,7 +4801,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 397: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ + case 398: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ { yygotominor.yy399 = new SqliteAlterTable( yymsp[-3].minor.yy66->name1, @@ -4803,7 +4813,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 398: /* cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column */ + case 399: /* cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column */ { yygotominor.yy399 = new SqliteAlterTable( yymsp[-3].minor.yy66->name1, @@ -4816,11 +4826,11 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 399: /* cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW */ + case 400: /* cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW */ { yy_destructor(yypParser,181,&yymsp[-3].minor); } break; - case 405: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm */ + case 406: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm */ { yygotominor.yy399 = new SqliteCreateVirtualTable( *(yymsp[-4].minor.yy237), @@ -4835,7 +4845,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 406: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP */ + case 407: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP */ { yygotominor.yy399 = new SqliteCreateVirtualTable( *(yymsp[-7].minor.yy237), @@ -4852,14 +4862,14 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 409: /* vtabarglist ::= vtabarg */ + case 410: /* vtabarglist ::= vtabarg */ { yygotominor.yy445 = new ParserStringList(); yygotominor.yy445->append((yymsp[0].minor.yy211)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg delete yymsp[0].minor.yy211; } break; - case 410: /* vtabarglist ::= vtabarglist COMMA vtabarg */ + case 411: /* vtabarglist ::= vtabarglist COMMA vtabarg */ { yymsp[-2].minor.yy445->append((yymsp[0].minor.yy211)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg yygotominor.yy445 = yymsp[-2].minor.yy445; @@ -4867,19 +4877,19 @@ static void yy_reduce( DONT_INHERIT_TOKENS("vtabarglist"); } break; - case 412: /* vtabarg ::= vtabarg vtabargtoken */ + case 413: /* vtabarg ::= vtabarg vtabargtoken */ { yymsp[-1].minor.yy211->append(" "+ *(yymsp[0].minor.yy211)); yygotominor.yy211 = yymsp[-1].minor.yy211; delete yymsp[0].minor.yy211; } break; - case 413: /* vtabargtoken ::= ANY */ + case 414: /* vtabargtoken ::= ANY */ { yygotominor.yy211 = new QString(yymsp[0].minor.yy0->value); } break; - case 414: /* vtabargtoken ::= LP anylist RP */ + case 415: /* vtabargtoken ::= LP anylist RP */ { yygotominor.yy211 = new QString("("); yygotominor.yy211->append(*(yymsp[-1].minor.yy211)); @@ -4887,7 +4897,7 @@ static void yy_reduce( delete yymsp[-1].minor.yy211; } break; - case 416: /* anylist ::= anylist LP anylist RP */ + case 417: /* anylist ::= anylist LP anylist RP */ { yygotominor.yy211 = yymsp[-3].minor.yy211; yygotominor.yy211->append("("); @@ -4897,37 +4907,37 @@ static void yy_reduce( DONT_INHERIT_TOKENS("anylist"); } break; - case 417: /* anylist ::= anylist ANY */ + case 418: /* anylist ::= anylist ANY */ { yygotominor.yy211 = yymsp[-1].minor.yy211; yygotominor.yy211->append(yymsp[0].minor.yy0->value); DONT_INHERIT_TOKENS("anylist"); } break; - case 418: /* with ::= */ + case 419: /* with ::= */ {yygotominor.yy367 = nullptr;} break; - case 419: /* with ::= WITH wqlist */ + case 420: /* with ::= WITH wqlist */ { yygotominor.yy367 = yymsp[0].minor.yy367; objectForTokens = yygotominor.yy367; } break; - case 420: /* with ::= WITH RECURSIVE wqlist */ + case 421: /* with ::= WITH RECURSIVE wqlist */ { yygotominor.yy367 = yymsp[0].minor.yy367; yygotominor.yy367->recursive = true; objectForTokens = yygotominor.yy367; } break; - case 421: /* wqlist ::= nm idxlist_opt AS LP select RP */ + case 422: /* wqlist ::= nm idxlist_opt AS LP select RP */ { yygotominor.yy367 = SqliteWith::append(*(yymsp[-5].minor.yy211), *(yymsp[-4].minor.yy139), yymsp[-1].minor.yy123); delete yymsp[-5].minor.yy211; delete yymsp[-4].minor.yy139; } break; - case 422: /* wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP */ + case 423: /* wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP */ { yygotominor.yy367 = SqliteWith::append(yymsp[-7].minor.yy367, *(yymsp[-5].minor.yy211), *(yymsp[-4].minor.yy139), yymsp[-1].minor.yy123); delete yymsp[-5].minor.yy211; @@ -4935,7 +4945,7 @@ static void yy_reduce( DONT_INHERIT_TOKENS("wqlist"); } break; - case 423: /* wqlist ::= ID_TAB_NEW */ + case 424: /* wqlist ::= ID_TAB_NEW */ { parserContext->minorErrorBeforeNextToken("Syntax error"); yygotominor.yy367 = new SqliteWith(); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y index a249f6e..65a4dd7 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y @@ -1738,7 +1738,12 @@ exprx(X) ::= expr(E) not_opt(N) IN LP objectForTokens = X; parserContext->minorErrorBeforeNextToken("Syntax error"); } - +exprx(X) ::= LP expr(E). { + X = new SqliteExpr(); + X->initSubExpr(E); + objectForTokens = X; + parserContext->minorErrorBeforeNextToken("Syntax error"); + } exprx ::= expr not_opt IN ID_DB. [IN] {} exprx ::= expr not_opt IN nm DOT ID_TAB. [IN] {} |
