diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index d1039ef..7aae055 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -344,6 +344,7 @@ union HSQL_STYPE hsql::Expr* expr; hsql::OrderDescription* order; hsql::OrderType order_type; + hsql::WithDescription* with_description_t; hsql::DatetimeField datetime_field; hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; @@ -360,8 +361,9 @@ union HSQL_STYPE std::vector* update_vec; std::vector* expr_vec; std::vector* order_vec; + std::vector* with_description_vec; -#line 365 "bison_parser.cpp" /* yacc.c:355 */ +#line 367 "bison_parser.cpp" /* yacc.c:355 */ }; typedef union HSQL_STYPE HSQL_STYPE; @@ -391,7 +393,7 @@ int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); /* Copy the second part of user declarations. */ -#line 395 "bison_parser.cpp" /* yacc.c:358 */ +#line 397 "bison_parser.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -633,18 +635,18 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 52 +#define YYFINAL 49 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 653 +#define YYLAST 696 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 163 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 96 +#define YYNNTS 100 /* YYNRULES -- Number of rules. */ -#define YYNRULES 237 +#define YYNRULES 243 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 428 +#define YYNSTATES 438 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -705,30 +707,31 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 254, 254, 275, 281, 290, 294, 298, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 322, 323, 328, - 329, 333, 337, 349, 356, 359, 363, 375, 384, 388, - 398, 401, 415, 422, 429, 440, 441, 445, 446, 450, - 456, 457, 458, 459, 460, 461, 462, 463, 467, 468, - 469, 479, 485, 491, 499, 500, 509, 518, 531, 538, - 549, 550, 560, 569, 570, 574, 586, 587, 588, 605, - 606, 610, 611, 615, 625, 642, 646, 647, 648, 652, - 653, 657, 669, 670, 674, 678, 679, 682, 687, 688, - 692, 697, 701, 702, 705, 706, 710, 711, 715, 719, - 720, 721, 727, 728, 732, 733, 734, 735, 736, 737, - 744, 745, 749, 750, 754, 755, 759, 769, 770, 771, - 772, 773, 777, 778, 779, 780, 781, 782, 783, 784, - 785, 786, 790, 791, 795, 796, 797, 798, 799, 803, - 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, - 817, 818, 822, 823, 824, 825, 831, 832, 833, 834, - 838, 839, 843, 844, 848, 849, 850, 851, 852, 853, - 854, 858, 859, 863, 867, 868, 869, 870, 871, 872, - 875, 879, 883, 887, 888, 889, 890, 894, 895, 896, - 897, 898, 902, 906, 907, 911, 912, 916, 920, 924, - 936, 937, 947, 948, 952, 953, 962, 963, 968, 979, - 988, 989, 994, 995, 1000, 1001, 1005, 1006, 1011, 1012, - 1020, 1028, 1038, 1057, 1058, 1059, 1060, 1061, 1062, 1063, - 1064, 1065, 1066, 1071, 1080, 1081, 1086, 1087 + 0, 258, 258, 279, 285, 294, 298, 302, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 326, 327, 332, + 333, 337, 341, 353, 360, 363, 367, 379, 388, 392, + 402, 405, 419, 426, 433, 444, 445, 449, 450, 454, + 460, 461, 462, 463, 464, 465, 466, 467, 471, 472, + 473, 483, 489, 495, 503, 504, 513, 522, 535, 542, + 553, 554, 564, 573, 574, 578, 590, 594, 598, 616, + 617, 621, 622, 626, 636, 653, 657, 658, 659, 663, + 664, 668, 680, 681, 685, 689, 690, 693, 698, 699, + 703, 708, 712, 713, 716, 717, 721, 722, 726, 730, + 731, 732, 738, 739, 743, 744, 745, 746, 747, 748, + 755, 756, 760, 761, 765, 766, 770, 780, 781, 782, + 783, 784, 788, 789, 790, 791, 792, 793, 794, 795, + 796, 797, 801, 802, 806, 807, 808, 809, 810, 814, + 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, + 828, 829, 833, 834, 835, 836, 842, 843, 844, 845, + 849, 850, 854, 855, 859, 860, 861, 862, 863, 864, + 865, 869, 870, 874, 878, 879, 880, 881, 882, 883, + 886, 890, 894, 898, 899, 900, 901, 905, 906, 907, + 908, 909, 913, 917, 918, 922, 923, 927, 931, 935, + 947, 948, 958, 959, 963, 964, 973, 974, 979, 990, + 999, 1000, 1005, 1006, 1011, 1012, 1016, 1017, 1022, 1023, + 1031, 1032, 1036, 1040, 1044, 1051, 1064, 1072, 1082, 1101, + 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1115, + 1124, 1125, 1130, 1131 }; #endif @@ -781,8 +784,10 @@ static const char *const yytname[] = "param_expr", "table_ref", "table_ref_atomic", "nonjoin_table_ref_atomic", "table_ref_commalist", "table_ref_name", "table_ref_name_no_alias", "table_name", "table_alias", - "opt_table_alias", "alias", "opt_alias", "join_clause", "opt_join_type", - "join_condition", "opt_semicolon", "ident_commalist", YY_NULLPTR + "opt_table_alias", "alias", "opt_alias", "opt_with_clause", + "with_clause", "with_description_list", "with_description", + "join_clause", "opt_join_type", "join_condition", "opt_semicolon", + "ident_commalist", YY_NULLPTR }; #endif @@ -811,63 +816,64 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -331 +#define YYPACT_NINF -358 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-331))) + (!!((Yystate) == (-358))) -#define YYTABLE_NINF -233 +#define YYTABLE_NINF -241 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-233))) + (!!((Yytable_value) == (-241))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 7, 11, 73, 103, 133, -42, 99, 138, 57, 98, - 73, -37, 26, -39, 225, 75, -331, 139, 139, -331, - -331, -331, -331, -331, -331, -331, -331, -331, -331, 37, - -331, 17, 234, 101, -331, 93, 171, 156, 156, 73, - 150, 73, 271, 274, 181, -331, 178, 178, 73, -331, - 136, 147, -331, 7, -331, 219, -331, -331, -331, -331, - -331, -39, 212, 199, -39, -4, -331, 324, 45, 325, - 220, 73, 73, 256, -331, 250, 184, -331, -331, -331, - 226, 332, 301, 73, 73, -331, -331, -331, -331, 186, - -331, 276, -331, -331, -331, 226, 276, 226, 91, -331, - -331, -331, -331, -331, -331, -331, -331, 189, 187, -331, - -331, -331, -331, -331, -331, -331, -331, -331, 308, -69, - 184, 226, -331, 348, 354, 63, 62, 201, 203, 97, - 260, 209, 266, -331, 125, 282, 207, -331, 16, 298, - -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, - -331, -331, -331, -331, -331, 231, -63, -331, -331, -331, - -331, 367, -4, 210, -331, -51, -4, 19, 326, -33, - -331, 45, -331, 261, 369, 263, 19, 289, -331, -331, - 27, 229, -331, 13, 18, 331, 179, 226, -20, 96, - 235, 266, 409, 226, 61, 233, -88, 8, 256, -331, - 226, -331, 226, 391, 226, -331, -331, 266, -331, 266, - -60, 238, -28, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 271, 226, - 332, -331, 241, 33, -331, -331, 226, -331, -331, -331, - -331, 226, 226, -331, 315, 542, 39, -331, -39, 73, - -331, 397, 45, -331, 226, -331, -331, 243, -331, -331, - -331, -331, -331, -331, 319, 81, 100, 226, 226, -331, - 331, 313, 122, -331, -331, -39, -331, 294, -331, 245, - -331, 6, -331, 344, -331, -331, -331, 302, 366, 443, - 266, 255, 125, -331, 329, 259, 443, 443, 443, 443, - 477, 477, 477, 477, 61, 61, -38, -38, -38, -74, - 269, 19, -331, 45, -331, 367, -331, 19, 19, 348, - -331, 264, -331, -331, 272, -331, -331, -331, 82, -331, - 369, -331, -331, -331, 127, 132, -331, 226, 226, 226, - -331, 130, 174, 273, -331, 275, 340, -331, -331, -331, - 361, 363, 364, 351, 8, 439, -331, -331, -331, 335, - -331, 266, 443, 125, 287, 134, -331, -331, 145, -331, - -331, 453, 454, -331, 370, -331, -331, -331, -331, -78, - 19, 175, -331, 226, -331, 6, 8, -331, -331, -331, - 8, 392, 304, 226, 409, 309, 158, -331, -331, -331, - 310, 311, -331, -331, -331, 19, -331, -331, 265, 354, - -24, -331, -331, -331, -331, 305, 226, 165, 226, -331, - 20, 19, -331, -331, 19, 307, 312, -331 + 593, 92, 120, 132, 166, -50, 107, 109, 119, 120, + 95, 0, 213, 225, 67, -358, 126, 126, -358, -358, + -358, -358, -358, -358, -358, -358, -358, -358, -35, -358, + 251, 100, -358, 122, 205, 182, 182, 120, 195, 120, + 193, -358, 196, 196, 120, -358, 197, 156, -358, -358, + 576, -358, 233, -358, -358, 210, -35, 54, -358, 148, + -358, 319, 25, 324, 217, 120, 120, 257, -358, 252, + 180, 335, 302, 120, 120, -358, 187, 213, -358, 188, + 340, 337, 192, 194, -358, -358, -358, -35, 248, 232, + -35, -4, -358, -358, -358, -358, -358, -358, -358, -358, + 200, 201, -358, -358, -358, -358, -358, -358, -358, -358, + -358, 313, -49, 180, 198, -358, 352, 358, 75, 226, + -48, -358, -358, -358, -358, -358, -358, 360, -358, -358, + 198, -358, -358, -358, 295, -358, -358, -358, 198, 295, + 198, 29, -358, -358, 25, -358, 250, 364, 253, 26, + 211, 212, 135, 246, 219, 262, -358, 169, -8, 292, + -358, -358, -358, -358, -358, -358, -358, -358, -358, -358, + -358, -358, -358, -358, -358, 283, -358, -358, -15, 220, + -358, 198, 335, -358, 221, 56, -358, 294, 224, -358, + 19, -4, 229, -358, 64, -4, -8, 338, -9, -358, + 307, 159, 102, -358, 289, -3, -1, 342, -76, 198, + -65, 97, 237, 262, 376, 198, 81, 239, -10, 198, + 198, 262, -358, 262, -72, 243, 128, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 340, 120, -358, 398, 25, -8, -358, 25, + -358, 360, 7, 257, -358, 198, -358, 401, -358, -358, + -358, 198, -358, -358, -358, -358, 198, 198, 352, -358, + 258, -358, -358, 259, -358, -358, -358, 160, -358, 364, + -358, -358, 198, -358, -358, 260, -358, -358, -358, -358, + -358, -358, 325, 4, 110, 198, 198, -358, 342, 317, + -111, -358, -358, -358, 311, 333, 410, 262, 265, 169, + -358, 331, 272, 410, 410, 410, 410, 444, 444, 444, + 444, 81, 81, -107, -107, -107, -28, 273, -358, -358, + 117, 133, -358, 289, -358, 209, -358, 267, -358, 15, + -358, 372, -358, -358, -358, -8, -8, -358, 430, 442, + -358, 354, -358, -358, 140, -358, 198, 198, 198, -358, + 5, 101, 293, -358, 262, 410, 169, 296, 149, -358, + -358, -358, -358, 298, 362, -358, -358, -358, 379, 382, + 387, 369, 7, 457, -358, -358, -358, 344, -358, 306, + 308, -358, -358, -7, -8, 152, -358, 198, -358, 376, + 309, 162, -358, -358, 15, 7, -358, -358, -358, 7, + 316, 312, 198, -358, -358, -358, -358, -8, -358, -358, + -358, -358, 482, 358, -30, 323, 198, 171, 198, -358, + 10, -8, -358, -358, -8, 328, 318, -358 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -875,79 +881,80 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, - 0, 0, 0, 0, 0, 235, 3, 18, 18, 16, - 9, 7, 10, 15, 12, 13, 11, 14, 8, 66, - 67, 95, 0, 210, 57, 25, 0, 36, 36, 0, - 0, 0, 0, 83, 0, 209, 55, 55, 0, 30, - 0, 0, 1, 234, 2, 0, 6, 5, 77, 78, - 76, 0, 80, 0, 0, 109, 53, 0, 113, 0, - 0, 0, 0, 89, 28, 0, 61, 197, 102, 82, - 0, 0, 0, 0, 0, 31, 70, 69, 4, 0, - 71, 95, 72, 79, 75, 0, 95, 0, 0, 73, - 211, 192, 195, 198, 193, 194, 199, 0, 112, 114, - 187, 188, 189, 196, 190, 191, 24, 23, 0, 0, - 61, 0, 56, 0, 0, 0, 183, 0, 0, 0, - 0, 0, 0, 185, 0, 86, 84, 110, 219, 117, + 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 241, 3, 18, 18, 16, 9, + 7, 10, 15, 12, 13, 11, 14, 8, 0, 220, + 0, 210, 57, 25, 0, 36, 36, 0, 0, 0, + 0, 209, 55, 55, 0, 30, 0, 222, 223, 1, + 221, 2, 0, 6, 5, 103, 0, 66, 67, 95, + 53, 0, 113, 0, 0, 0, 0, 89, 28, 0, + 61, 0, 0, 0, 0, 31, 0, 0, 4, 0, + 0, 83, 0, 0, 77, 78, 76, 0, 80, 0, + 0, 109, 211, 192, 195, 197, 198, 193, 194, 199, + 0, 112, 114, 187, 188, 189, 196, 190, 191, 24, + 23, 0, 0, 61, 0, 56, 0, 0, 0, 0, + 89, 63, 54, 51, 52, 225, 224, 0, 102, 82, + 0, 70, 69, 71, 95, 72, 79, 75, 0, 95, + 0, 0, 73, 26, 0, 35, 0, 0, 0, 183, + 0, 0, 0, 0, 0, 0, 185, 0, 88, 117, 124, 125, 126, 119, 121, 127, 120, 139, 128, 129, - 130, 123, 118, 132, 133, 0, 89, 63, 54, 51, - 52, 0, 109, 94, 96, 101, 109, 105, 107, 104, - 26, 0, 35, 0, 0, 0, 88, 0, 29, 236, - 0, 0, 59, 83, 0, 0, 0, 0, 0, 0, - 0, 0, 135, 0, 134, 0, 0, 0, 89, 85, - 0, 217, 0, 0, 0, 218, 116, 0, 136, 0, + 130, 123, 118, 132, 133, 0, 29, 242, 0, 0, + 59, 0, 0, 62, 21, 0, 19, 86, 84, 110, + 219, 109, 94, 96, 101, 109, 105, 107, 104, 115, + 0, 0, 0, 37, 221, 83, 0, 0, 0, 0, + 0, 0, 0, 0, 135, 0, 134, 0, 0, 0, + 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 62, 21, 0, 19, 68, 0, 100, 99, 98, - 74, 0, 0, 115, 0, 0, 0, 37, 0, 0, - 60, 0, 0, 171, 0, 184, 186, 0, 174, 175, - 176, 177, 178, 179, 0, 0, 0, 0, 0, 158, - 0, 0, 0, 131, 122, 0, 87, 200, 202, 0, - 204, 215, 203, 91, 111, 150, 216, 151, 0, 146, - 0, 0, 0, 137, 0, 149, 148, 164, 165, 166, - 167, 168, 169, 170, 141, 140, 143, 142, 144, 145, - 0, 65, 64, 0, 17, 0, 97, 108, 106, 0, - 41, 0, 44, 43, 0, 42, 47, 40, 50, 33, - 0, 34, 27, 237, 0, 0, 162, 0, 0, 0, - 156, 0, 0, 0, 180, 0, 0, 231, 223, 229, - 227, 230, 225, 0, 0, 0, 214, 208, 212, 0, - 81, 0, 147, 0, 0, 0, 138, 181, 0, 20, - 32, 0, 0, 48, 0, 39, 38, 58, 172, 0, - 160, 0, 159, 0, 163, 215, 0, 226, 228, 224, - 0, 201, 216, 0, 182, 0, 0, 154, 152, 22, - 0, 0, 49, 173, 157, 161, 205, 220, 232, 0, - 93, 155, 153, 45, 46, 0, 0, 0, 0, 90, - 0, 233, 221, 213, 92, 183, 0, 222 + 0, 0, 0, 0, 60, 0, 0, 65, 64, 0, + 17, 0, 0, 89, 85, 0, 217, 0, 218, 116, + 68, 0, 100, 99, 98, 74, 0, 0, 0, 41, + 0, 44, 43, 0, 42, 47, 40, 50, 33, 0, + 34, 171, 0, 184, 186, 0, 174, 175, 176, 177, + 178, 179, 0, 0, 0, 0, 0, 158, 0, 0, + 0, 131, 122, 150, 151, 0, 146, 0, 0, 0, + 137, 0, 149, 148, 164, 165, 166, 167, 168, 169, + 170, 141, 140, 143, 142, 144, 145, 0, 27, 243, + 0, 0, 20, 221, 87, 200, 202, 0, 204, 215, + 203, 91, 111, 216, 97, 108, 106, 32, 0, 0, + 48, 0, 39, 38, 0, 162, 0, 0, 0, 156, + 0, 0, 0, 180, 0, 147, 0, 0, 0, 138, + 181, 58, 22, 0, 0, 237, 229, 235, 233, 236, + 231, 0, 0, 0, 214, 208, 212, 0, 81, 0, + 0, 49, 172, 0, 160, 0, 159, 0, 163, 182, + 0, 0, 154, 152, 215, 0, 232, 234, 230, 0, + 201, 216, 0, 45, 46, 173, 157, 161, 155, 153, + 205, 226, 238, 0, 93, 0, 0, 0, 0, 90, + 0, 239, 227, 213, 92, 183, 0, 228 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -331, -331, -331, 418, -331, 455, -331, 159, -331, -331, - -331, -331, -331, 157, -331, -331, 437, -331, 151, -331, - -331, -331, 430, -331, -331, -331, 360, -331, -331, 254, - -149, 52, 421, -13, 456, -331, -331, 267, 303, -331, - -331, -331, -123, -331, -331, 126, -331, 253, -331, -331, - -43, -185, -331, -235, 291, -94, -64, -331, -331, -331, - -331, -331, -331, 314, -331, -331, -331, -331, -331, -331, - -331, -331, 72, -62, -118, -331, -331, -35, -331, -331, - -331, -330, 107, -331, -331, -331, 0, -331, 111, 359, - -331, -331, -331, -331, -331, 89 + -358, -358, -358, 415, -358, 453, -358, 241, -358, -358, + -358, -358, -358, 222, -358, -358, 458, -358, 214, -358, + -358, -358, 452, -358, -358, -358, 383, -358, -358, 315, + -197, 45, 409, -53, 441, -358, -358, 22, 301, -358, + -358, -358, -103, -358, -358, -73, -358, 240, -358, -358, + 33, -207, -358, 40, 254, -114, -149, -358, -358, -358, + -358, -358, -358, 297, -358, -358, -358, -358, -358, -358, + -358, -358, 73, -51, -101, -358, -358, -79, -358, -358, + -358, -357, 105, -358, -358, -358, 3, -358, 108, 321, + -358, -358, -358, -358, 436, -358, -358, -358, -358, 96 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 14, 15, 16, 17, 56, 233, 234, 18, 117, - 19, 20, 75, 177, 21, 22, 71, 246, 247, 328, - 375, 23, 83, 24, 25, 26, 125, 27, 156, 157, - 28, 29, 91, 30, 61, 62, 94, 31, 80, 135, - 198, 199, 122, 360, 419, 65, 163, 164, 239, 43, - 99, 136, 107, 108, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 189, 146, 147, 148, 149, 264, 150, - 151, 152, 153, 154, 110, 111, 112, 113, 114, 115, - 276, 277, 278, 279, 280, 44, 281, 356, 357, 358, - 206, 282, 353, 422, 54, 180 + -1, 13, 14, 15, 16, 53, 185, 186, 17, 110, + 18, 19, 69, 175, 20, 21, 65, 202, 203, 277, + 352, 22, 73, 23, 24, 25, 118, 26, 120, 121, + 27, 133, 134, 58, 87, 88, 137, 59, 130, 187, + 253, 254, 115, 388, 429, 91, 192, 193, 264, 81, + 142, 188, 100, 101, 189, 190, 159, 160, 161, 162, + 163, 164, 165, 211, 166, 167, 168, 169, 292, 170, + 171, 172, 173, 174, 103, 104, 105, 106, 107, 108, + 334, 335, 336, 337, 338, 40, 339, 384, 385, 386, + 259, 28, 29, 47, 48, 340, 381, 432, 51, 178 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -955,191 +962,200 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 51, 165, 34, 167, 169, 178, 109, 78, 272, 201, - 45, 33, 9, 121, 1, 242, 173, 334, 202, 201, - 418, 255, 2, 425, 391, 79, 58, 176, 202, 3, - 237, 37, 290, 231, 4, 188, 46, 204, 32, 73, - 196, 76, 5, 6, 97, 48, 58, 204, 85, 101, - 102, 77, 7, 8, 213, 202, 238, 59, 9, 38, - 408, 291, 98, 10, 47, 50, 192, 293, 194, 335, - 274, 119, 120, 202, 204, 283, 33, 59, 368, 49, - 403, 228, 187, 159, 160, 294, 202, 63, 174, 11, - 213, 60, 204, 265, 126, 101, 102, 77, 230, 331, - 126, 101, 102, 77, 12, 204, 35, 365, 285, 243, - 287, 60, 182, 90, 9, 227, 90, 228, 13, 235, - 181, 195, 202, 240, 355, 202, 345, 192, 126, 101, - 102, 77, 127, 128, 203, 311, 36, 200, 127, 128, - 103, 204, 165, 288, 204, 289, 41, 317, 318, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 13, 275, 127, 128, 256, 129, - 133, 253, 257, 341, 342, 129, 9, 373, 396, 267, - 338, 104, 105, 339, 39, 250, 103, 202, 251, 213, - 109, 314, 103, 310, 315, 374, 168, 329, 268, 187, - 330, 178, 268, 129, 130, 269, 204, 106, 410, 340, - 130, 224, 225, 226, 227, 42, 228, 162, 131, 183, - 103, 184, 166, 40, 131, 52, 362, 104, 105, 126, - 101, 102, 77, 104, 105, 53, 202, 66, 130, 382, - 132, 133, 55, 379, 380, 381, 132, 133, 134, 332, - 68, 109, 131, 106, 134, 204, 69, 343, 74, 106, - 67, 104, 105, 126, 101, 102, 77, 127, 128, 126, - 101, 102, 77, 383, 132, 133, 70, 77, 344, 364, - 202, 202, 134, 200, 404, 377, 79, 106, 171, 405, - 378, 346, 398, 200, 86, 200, 81, 394, 82, 204, - 204, 190, 128, 399, 129, 87, 171, 89, 128, 258, - 259, 260, 261, 262, 263, 207, 412, 93, 95, 200, - 346, 103, 421, 423, 424, 347, 251, 100, 92, 116, - 348, 92, 121, 118, 123, 155, 349, 350, 129, 130, - 415, 124, 158, 161, 129, 208, 63, 170, 171, 172, - 395, 351, 101, 131, 347, 103, 352, 179, 185, 348, - 186, 103, 104, 105, 193, 349, 350, 197, 200, 229, - 232, 236, 245, 191, 241, 132, 133, 244, 249, 191, - 351, 248, 9, 134, -232, 352, 252, 131, 106, 416, - 209, 273, 270, 131, 286, 292, 104, 105, 313, 319, - 333, 336, 104, 105, 337, 290, 354, 359, 202, 132, - 133, 210, 363, 208, 228, 132, 133, 134, 346, 211, - 212, 371, 106, 134, 366, 367, 213, 214, 106, 372, - 386, 384, 387, 385, 388, 389, 215, 216, 217, 218, - 219, 390, 392, 220, 221, 397, 222, 223, 224, 225, - 226, 227, 347, 228, 393, -206, 208, 348, 209, 400, - 401, 409, 420, 349, 350, 402, 184, 411, 413, 414, - 427, 88, 361, 57, 369, 72, 370, 84, 351, 271, - 175, 376, -232, 352, 312, 96, 254, 64, 212, 316, - 208, 284, 426, 407, 213, 214, 406, 205, 417, 0, - 0, 209, 266, 0, 215, 216, 217, 218, 219, 0, - 0, 220, 221, 0, 222, 223, 224, 225, 226, 227, - 0, 228, 271, 0, 208, 0, 0, 0, 0, 0, - 0, 212, 0, 0, 0, -233, 0, 213, 214, 0, - 0, 0, 0, 0, 0, 0, 0, 215, 216, 217, - 218, 219, 0, -207, 220, 221, 0, 222, 223, 224, - 225, 226, 227, 0, 228, 212, 0, 320, 0, 0, - 0, 213, -233, 321, 0, 0, 0, 0, 0, 0, - 322, -233, -233, -233, 218, 219, 0, 0, 220, 221, - 0, 222, 223, 224, 225, 226, 227, 0, 228, 212, - 0, 0, 0, 0, 323, 213, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -233, -233, - 0, 324, -233, -233, 0, 222, 223, 224, 225, 226, - 227, 0, 228, 0, 0, 0, 325, 0, 0, 0, - 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327 + 158, 128, 283, 83, 214, 32, 216, 280, 300, 129, + 31, 102, 41, 435, 428, 176, 55, 183, 256, 44, + 307, 227, 256, 35, 194, 410, 196, 198, 114, 93, + 94, 95, 149, 93, 94, 95, 146, 209, 210, 267, + 67, 219, 70, 218, 140, 363, 241, 75, 242, 308, + 255, 36, 422, 45, 286, 287, 288, 289, 290, 291, + 220, 191, 141, 84, 214, 180, 195, 247, 112, 113, + 150, 151, 305, 57, 306, 354, 123, 124, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 199, 85, 293, 219, 219, 219, 219, + 227, 82, 368, 357, 217, 303, 304, 152, 147, 135, + 219, 219, 135, 182, 396, 220, 220, 220, 220, 30, + 96, 125, 56, 31, 96, 219, 55, 242, 86, 220, + 220, 255, 179, 383, 197, 33, 373, 257, 149, 93, + 94, 95, 153, 244, 220, 262, 245, 194, 302, 284, + 341, 415, 345, 346, 285, 281, 154, 84, 365, 401, + 156, 97, 98, 327, 333, 97, 98, 176, 42, 34, + 219, 263, 149, 93, 94, 95, 150, 151, 155, 156, + 295, 360, 361, 205, 269, 206, 157, 99, 85, 220, + 270, 99, 37, 358, 38, 102, 43, 271, 102, 296, + 397, 149, 93, 94, 95, 424, 297, 219, 39, 227, + 150, 151, 296, 152, 250, 399, 46, 251, 89, 359, + 55, 272, 86, 310, 260, 49, 220, 50, 265, 52, + 96, 238, 239, 240, 241, 374, 242, 209, 273, 150, + 151, 311, 393, 394, 395, 362, 328, 152, 153, 149, + 93, 94, 95, 274, 60, 350, 367, 275, 219, 61, + 278, 416, 154, 279, 96, 149, 93, 94, 95, 375, + 276, 97, 98, 351, 376, 371, 152, 220, 144, 62, + 377, 378, 153, 417, 155, 156, 330, 212, 151, 331, + 63, 372, 157, 96, 144, 379, 154, 99, 392, -238, + 380, 255, 64, 68, 151, 97, 98, 403, 71, 221, + 255, 153, 431, 400, 434, 76, 72, 77, 155, 156, + 419, 79, 92, 255, 152, 154, 157, 80, 109, 433, + 111, 99, 245, 114, 97, 98, 116, 117, 119, 222, + 152, 96, 374, 122, 56, 127, 95, 155, 156, 129, + 131, 138, 132, 136, 145, 157, 93, 96, 143, 213, + 99, 177, 144, 184, 181, 89, 200, 201, 207, 208, + -206, 204, 243, 154, 215, 213, 375, 246, 249, 252, + 222, 376, 97, 98, 223, 255, 266, 377, 378, 154, + 261, 268, 12, 55, 298, 155, 156, 301, 97, 98, + 309, 329, 379, 157, 343, 224, -238, 380, 99, 307, + 356, 155, 156, 225, 226, 348, 349, 219, 355, 157, + 227, 228, 366, 222, 99, 223, 369, 242, 382, 370, + 229, 230, 231, 232, 233, 387, 389, 234, 235, 364, + 236, 237, 238, 239, 240, 241, 299, 242, 390, 391, + 406, 398, 405, 407, 402, 226, 404, 222, 408, 409, + 411, 227, 228, 412, 413, 78, 414, 418, 223, 423, + 54, 229, 230, 231, 232, 233, 437, -207, 234, 235, + 430, 236, 237, 238, 239, 240, 241, 206, 242, 299, + 347, 222, 332, 353, 66, 74, 148, 248, 226, 139, + 90, 344, -241, 436, 227, 228, 282, 294, 374, 342, + 421, 258, 420, 126, 229, 230, 231, 232, 233, 427, + 0, 234, 235, 0, 236, 237, 238, 239, 240, 241, + 0, 242, 226, 0, 0, 0, 0, 0, 227, -241, + 0, 0, 375, 0, 0, 0, 0, 376, -241, -241, + -241, 232, 233, 377, 378, 234, 235, 425, 236, 237, + 238, 239, 240, 241, 0, 242, 226, 0, 379, 0, + 0, 0, 227, 380, 0, 0, -240, 0, 0, 0, + 0, 0, 0, 1, 0, -241, -241, 0, 0, -241, + -241, 2, 236, 237, 238, 239, 240, 241, 3, 242, + 1, 0, 0, 4, 0, 0, 426, 0, 2, 0, + 0, 5, 6, 0, 0, 3, 0, 0, 0, 0, + 4, 7, 8, 0, 0, 0, 0, 0, 5, 6, + 0, 0, 9, 0, 0, 0, 0, 0, 7, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 11, 0, 10, 0, 0, 0, 12, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 12 }; static const yytype_int16 yycheck[] = { - 13, 95, 2, 97, 98, 123, 68, 42, 193, 3, - 10, 3, 51, 76, 7, 48, 85, 252, 106, 3, - 44, 3, 15, 3, 354, 12, 9, 121, 106, 22, - 81, 73, 92, 156, 27, 129, 73, 125, 27, 39, - 134, 41, 35, 36, 48, 19, 9, 125, 48, 4, - 5, 6, 45, 46, 128, 106, 107, 40, 51, 101, - 390, 121, 66, 56, 101, 13, 130, 95, 132, 254, - 158, 71, 72, 106, 125, 198, 3, 40, 313, 53, - 158, 155, 102, 83, 84, 113, 106, 70, 157, 82, - 128, 74, 125, 187, 3, 4, 5, 6, 161, 248, - 3, 4, 5, 6, 97, 125, 3, 292, 202, 171, - 204, 74, 125, 61, 51, 153, 64, 155, 157, 162, - 57, 134, 106, 166, 118, 106, 275, 191, 3, 4, - 5, 6, 41, 42, 118, 229, 3, 161, 41, 42, - 95, 125, 236, 207, 125, 209, 89, 241, 242, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 157, 157, 41, 42, 150, 78, - 150, 158, 185, 267, 268, 78, 51, 95, 363, 83, - 99, 136, 137, 83, 85, 158, 95, 106, 161, 128, - 252, 158, 95, 228, 161, 113, 105, 158, 102, 102, - 161, 319, 102, 78, 113, 109, 125, 162, 393, 109, - 113, 150, 151, 152, 153, 117, 155, 91, 127, 157, - 95, 159, 96, 85, 127, 0, 290, 136, 137, 3, - 4, 5, 6, 136, 137, 160, 106, 3, 113, 109, - 149, 150, 103, 337, 338, 339, 149, 150, 157, 249, - 157, 313, 127, 162, 157, 125, 85, 270, 108, 162, - 159, 136, 137, 3, 4, 5, 6, 41, 42, 3, - 4, 5, 6, 99, 149, 150, 120, 6, 156, 292, - 106, 106, 157, 161, 109, 158, 12, 162, 161, 383, - 158, 26, 158, 161, 158, 161, 115, 361, 120, 125, - 125, 41, 42, 158, 78, 158, 161, 88, 42, 130, - 131, 132, 133, 134, 135, 17, 158, 105, 119, 161, - 26, 95, 416, 158, 418, 60, 161, 3, 61, 4, - 65, 64, 76, 113, 84, 3, 71, 72, 78, 113, - 75, 157, 41, 157, 78, 47, 70, 158, 161, 41, - 363, 86, 4, 127, 60, 95, 91, 3, 157, 65, - 157, 95, 136, 137, 155, 71, 72, 85, 161, 138, - 3, 161, 3, 113, 48, 149, 150, 116, 89, 113, - 86, 118, 51, 157, 90, 91, 157, 127, 162, 124, - 92, 158, 157, 127, 3, 157, 136, 137, 157, 84, - 3, 158, 136, 137, 85, 92, 161, 63, 106, 149, - 150, 113, 157, 47, 155, 149, 150, 157, 26, 121, - 122, 157, 162, 157, 95, 156, 128, 129, 162, 157, - 90, 158, 71, 158, 71, 71, 138, 139, 140, 141, - 142, 90, 3, 145, 146, 158, 148, 149, 150, 151, - 152, 153, 60, 155, 119, 161, 47, 65, 92, 6, - 6, 157, 157, 71, 72, 95, 159, 158, 158, 158, - 158, 53, 106, 18, 315, 38, 319, 47, 86, 113, - 120, 330, 90, 91, 230, 64, 183, 31, 122, 236, - 47, 200, 420, 386, 128, 129, 385, 138, 409, -1, - -1, 92, 188, -1, 138, 139, 140, 141, 142, -1, + 114, 80, 3, 56, 153, 2, 155, 204, 215, 12, + 3, 62, 9, 3, 44, 116, 51, 120, 3, 19, + 92, 128, 3, 73, 138, 382, 140, 141, 76, 4, + 5, 6, 3, 4, 5, 6, 85, 102, 152, 48, + 37, 106, 39, 157, 48, 156, 153, 44, 155, 121, + 161, 101, 409, 53, 130, 131, 132, 133, 134, 135, + 125, 134, 66, 9, 213, 118, 139, 181, 65, 66, + 41, 42, 221, 28, 223, 282, 73, 74, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 144, 40, 209, 106, 106, 106, 106, + 128, 56, 309, 99, 157, 219, 220, 78, 157, 87, + 106, 106, 90, 161, 109, 125, 125, 125, 125, 27, + 95, 76, 157, 3, 95, 106, 51, 155, 74, 125, + 125, 161, 57, 118, 105, 3, 333, 118, 3, 4, + 5, 6, 113, 158, 125, 81, 161, 261, 158, 150, + 253, 158, 266, 267, 207, 158, 127, 9, 307, 366, + 150, 136, 137, 242, 157, 136, 137, 268, 73, 3, + 106, 107, 3, 4, 5, 6, 41, 42, 149, 150, + 83, 295, 296, 157, 25, 159, 157, 162, 40, 125, + 31, 162, 85, 83, 85, 246, 101, 38, 249, 102, + 99, 3, 4, 5, 6, 412, 109, 106, 89, 128, + 41, 42, 102, 78, 158, 364, 3, 161, 70, 109, + 51, 62, 74, 95, 191, 0, 125, 160, 195, 103, + 95, 150, 151, 152, 153, 26, 155, 102, 79, 41, + 42, 113, 356, 357, 358, 298, 243, 78, 113, 3, + 4, 5, 6, 94, 3, 95, 309, 98, 106, 159, + 158, 109, 127, 161, 95, 3, 4, 5, 6, 60, + 111, 136, 137, 113, 65, 158, 78, 125, 161, 157, + 71, 72, 113, 397, 149, 150, 246, 41, 42, 249, + 85, 158, 157, 95, 161, 86, 127, 162, 158, 90, + 91, 161, 120, 108, 42, 136, 137, 158, 115, 17, + 161, 113, 426, 366, 428, 118, 120, 161, 149, 150, + 158, 88, 3, 161, 78, 127, 157, 117, 4, 158, + 113, 162, 161, 76, 136, 137, 84, 157, 3, 47, + 78, 95, 26, 41, 157, 157, 6, 149, 150, 12, + 158, 119, 158, 105, 41, 157, 4, 95, 158, 113, + 162, 3, 161, 3, 138, 70, 116, 3, 157, 157, + 161, 118, 89, 127, 155, 113, 60, 157, 157, 85, + 47, 65, 136, 137, 92, 161, 48, 71, 72, 127, + 161, 84, 103, 51, 157, 149, 150, 158, 136, 137, + 157, 3, 86, 157, 3, 113, 90, 91, 162, 92, + 85, 149, 150, 121, 122, 157, 157, 106, 158, 157, + 128, 129, 157, 47, 162, 92, 95, 155, 161, 156, + 138, 139, 140, 141, 142, 63, 6, 145, 146, 106, + 148, 149, 150, 151, 152, 153, 113, 155, 6, 95, + 71, 158, 90, 71, 158, 122, 158, 47, 71, 90, + 3, 128, 129, 119, 158, 50, 158, 158, 92, 157, + 17, 138, 139, 140, 141, 142, 158, 161, 145, 146, + 157, 148, 149, 150, 151, 152, 153, 159, 155, 113, + 268, 47, 251, 279, 36, 43, 113, 182, 122, 90, + 59, 261, 92, 430, 128, 129, 205, 210, 26, 255, + 405, 190, 404, 77, 138, 139, 140, 141, 142, 423, -1, 145, 146, -1, 148, 149, 150, 151, 152, 153, - -1, 155, 113, -1, 47, -1, -1, -1, -1, -1, - -1, 122, -1, -1, -1, 92, -1, 128, 129, -1, - -1, -1, -1, -1, -1, -1, -1, 138, 139, 140, - 141, 142, -1, 161, 145, 146, -1, 148, 149, 150, - 151, 152, 153, -1, 155, 122, -1, 25, -1, -1, - -1, 128, 129, 31, -1, -1, -1, -1, -1, -1, - 38, 138, 139, 140, 141, 142, -1, -1, 145, 146, - -1, 148, 149, 150, 151, 152, 153, -1, 155, 122, - -1, -1, -1, -1, 62, 128, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 141, 142, - -1, 79, 145, 146, -1, 148, 149, 150, 151, 152, - 153, -1, 155, -1, -1, -1, 94, -1, -1, -1, - 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 111 + -1, 155, 122, -1, -1, -1, -1, -1, 128, 129, + -1, -1, 60, -1, -1, -1, -1, 65, 138, 139, + 140, 141, 142, 71, 72, 145, 146, 75, 148, 149, + 150, 151, 152, 153, -1, 155, 122, -1, 86, -1, + -1, -1, 128, 91, -1, -1, 0, -1, -1, -1, + -1, -1, -1, 7, -1, 141, 142, -1, -1, 145, + 146, 15, 148, 149, 150, 151, 152, 153, 22, 155, + 7, -1, -1, 27, -1, -1, 124, -1, 15, -1, + -1, 35, 36, -1, -1, 22, -1, -1, -1, -1, + 27, 45, 46, -1, -1, -1, -1, -1, 35, 36, + -1, -1, 56, -1, -1, -1, -1, -1, 45, 46, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 56, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 97, -1, 82, -1, -1, -1, 103, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 97, -1, -1, -1, -1, -1, 103 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 7, 15, 22, 27, 35, 36, 45, 46, 51, - 56, 82, 97, 157, 164, 165, 166, 167, 171, 173, - 174, 177, 178, 184, 186, 187, 188, 190, 193, 194, - 196, 200, 27, 3, 249, 3, 3, 73, 101, 85, - 85, 89, 117, 212, 248, 249, 73, 101, 19, 53, - 194, 196, 0, 160, 257, 103, 168, 168, 9, 40, - 74, 197, 198, 70, 197, 208, 3, 159, 157, 85, - 120, 179, 179, 249, 108, 175, 249, 6, 240, 12, - 201, 115, 120, 185, 185, 249, 158, 158, 166, 88, - 194, 195, 200, 105, 199, 119, 195, 48, 66, 213, - 3, 4, 5, 95, 136, 137, 162, 215, 216, 236, - 237, 238, 239, 240, 241, 242, 4, 172, 113, 249, - 249, 76, 205, 84, 157, 189, 3, 41, 42, 78, - 113, 127, 149, 150, 157, 202, 214, 217, 218, 219, + 0, 7, 15, 22, 27, 35, 36, 45, 46, 56, + 82, 97, 103, 164, 165, 166, 167, 171, 173, 174, + 177, 178, 184, 186, 187, 188, 190, 193, 254, 255, + 27, 3, 249, 3, 3, 73, 101, 85, 85, 89, + 248, 249, 73, 101, 19, 53, 3, 256, 257, 0, + 160, 261, 103, 168, 168, 51, 157, 194, 196, 200, + 3, 159, 157, 85, 120, 179, 179, 249, 108, 175, + 249, 115, 120, 185, 185, 249, 118, 161, 166, 88, + 117, 212, 194, 196, 9, 40, 74, 197, 198, 70, + 197, 208, 3, 4, 5, 6, 95, 136, 137, 162, + 215, 216, 236, 237, 238, 239, 240, 241, 242, 4, + 172, 113, 249, 249, 76, 205, 84, 157, 189, 3, + 191, 192, 41, 249, 249, 194, 257, 157, 240, 12, + 201, 158, 158, 194, 195, 200, 105, 199, 119, 195, + 48, 66, 213, 158, 161, 41, 85, 157, 189, 3, + 41, 42, 78, 113, 127, 149, 150, 157, 218, 219, 220, 221, 222, 223, 224, 225, 227, 228, 229, 230, - 232, 233, 234, 235, 236, 3, 191, 192, 41, 249, - 249, 157, 208, 209, 210, 218, 208, 218, 105, 218, - 158, 161, 41, 85, 157, 189, 218, 176, 237, 3, - 258, 57, 196, 157, 159, 157, 157, 102, 218, 226, - 41, 113, 219, 155, 219, 196, 218, 85, 203, 204, - 161, 3, 106, 118, 125, 252, 253, 17, 47, 92, - 113, 121, 122, 128, 129, 138, 139, 140, 141, 142, - 145, 146, 148, 149, 150, 151, 152, 153, 155, 138, - 161, 205, 3, 169, 170, 213, 161, 81, 107, 211, - 213, 48, 48, 236, 116, 3, 180, 181, 118, 89, - 158, 161, 157, 158, 201, 3, 150, 196, 130, 131, - 132, 133, 134, 135, 231, 218, 226, 83, 102, 109, - 157, 113, 214, 158, 158, 157, 243, 244, 245, 246, - 247, 249, 254, 205, 217, 218, 3, 218, 219, 219, - 92, 121, 157, 95, 113, 219, 219, 219, 219, 219, - 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, - 240, 218, 192, 157, 158, 161, 210, 218, 218, 84, - 25, 31, 38, 62, 79, 94, 98, 111, 182, 158, - 161, 193, 249, 3, 216, 214, 158, 85, 99, 83, - 109, 218, 218, 196, 156, 193, 26, 60, 65, 71, - 72, 86, 91, 255, 161, 118, 250, 251, 252, 63, - 206, 106, 219, 157, 196, 214, 95, 156, 216, 170, - 176, 157, 157, 95, 113, 183, 181, 158, 158, 218, - 218, 218, 109, 99, 158, 158, 90, 71, 71, 71, - 90, 244, 3, 119, 219, 196, 214, 158, 158, 158, - 6, 6, 95, 158, 109, 218, 251, 245, 244, 157, - 214, 158, 158, 158, 158, 75, 124, 258, 44, 207, - 157, 218, 256, 158, 218, 3, 235, 158 + 232, 233, 234, 235, 236, 176, 237, 3, 262, 57, + 196, 138, 161, 205, 3, 169, 170, 202, 214, 217, + 218, 208, 209, 210, 218, 208, 218, 105, 218, 236, + 116, 3, 180, 181, 118, 157, 159, 157, 157, 102, + 218, 226, 41, 113, 219, 155, 219, 196, 218, 106, + 125, 17, 47, 92, 113, 121, 122, 128, 129, 138, + 139, 140, 141, 142, 145, 146, 148, 149, 150, 151, + 152, 153, 155, 89, 158, 161, 157, 218, 192, 157, + 158, 161, 85, 203, 204, 161, 3, 118, 252, 253, + 213, 161, 81, 107, 211, 213, 48, 48, 84, 25, + 31, 38, 62, 79, 94, 98, 111, 182, 158, 161, + 193, 158, 201, 3, 150, 196, 130, 131, 132, 133, + 134, 135, 231, 218, 226, 83, 102, 109, 157, 113, + 214, 158, 158, 218, 218, 219, 219, 92, 121, 157, + 95, 113, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 240, 249, 3, + 216, 216, 170, 157, 243, 244, 245, 246, 247, 249, + 258, 205, 217, 3, 210, 218, 218, 176, 157, 157, + 95, 113, 183, 181, 214, 158, 85, 99, 83, 109, + 218, 218, 196, 156, 106, 219, 157, 196, 214, 95, + 156, 158, 158, 193, 26, 60, 65, 71, 72, 86, + 91, 259, 161, 118, 250, 251, 252, 63, 206, 6, + 6, 95, 158, 218, 218, 218, 109, 99, 158, 219, + 196, 214, 158, 158, 158, 90, 71, 71, 71, 90, + 244, 3, 119, 158, 158, 158, 109, 218, 158, 158, + 251, 245, 244, 157, 214, 75, 124, 262, 44, 207, + 157, 218, 260, 158, 218, 3, 235, 158 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1167,8 +1183,9 @@ static const yytype_uint16 yyr1[] = 236, 236, 237, 238, 238, 239, 239, 240, 241, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 253, - 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 256, 257, 257, 258, 258 + 254, 254, 255, 256, 256, 257, 258, 258, 258, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 260, + 261, 261, 262, 262 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1180,7 +1197,7 @@ static const yytype_uint8 yyr2[] = 2, 3, 8, 7, 7, 3, 0, 1, 3, 3, 1, 1, 1, 1, 1, 4, 4, 1, 1, 2, 0, 4, 4, 3, 2, 0, 4, 2, 8, 5, - 3, 0, 5, 1, 3, 3, 1, 1, 5, 3, + 3, 0, 5, 1, 3, 3, 2, 2, 6, 3, 3, 1, 1, 3, 5, 2, 1, 1, 1, 1, 0, 7, 1, 0, 1, 1, 0, 2, 2, 0, 4, 0, 2, 0, 3, 0, 1, 3, 2, 1, @@ -1196,8 +1213,9 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 4, 1, 3, 2, 1, 1, 3, 1, 5, 1, 0, 2, 1, 1, 0, - 4, 6, 8, 1, 2, 1, 2, 1, 2, 1, - 1, 1, 0, 1, 1, 0, 1, 3 + 1, 0, 2, 1, 3, 3, 4, 6, 8, 1, + 2, 1, 2, 1, 2, 1, 1, 1, 0, 1, + 1, 0, 1, 3 }; @@ -1694,31 +1712,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio switch (yytype) { case 3: /* IDENTIFIER */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ +#line 145 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1700 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 4: /* STRING */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } -#line 1706 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 5: /* FLOATVAL */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { } -#line 1712 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 6: /* INTVAL */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { } #line 1718 "bison_parser.cpp" /* yacc.c:1257 */ break; + case 4: /* STRING */ +#line 145 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).sval)) ); } +#line 1724 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 5: /* FLOATVAL */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1730 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 6: /* INTVAL */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1736 "bison_parser.cpp" /* yacc.c:1257 */ + break; + case 165: /* statement_list */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).stmt_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -1727,23 +1745,23 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).stmt_vec)); } -#line 1731 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1749 "bison_parser.cpp" /* yacc.c:1257 */ break; case 166: /* statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1737 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1755 "bison_parser.cpp" /* yacc.c:1257 */ break; case 167: /* preparable_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1743 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1761 "bison_parser.cpp" /* yacc.c:1257 */ break; case 168: /* opt_hints */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1752,11 +1770,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1756 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1774 "bison_parser.cpp" /* yacc.c:1257 */ break; case 169: /* hint_list */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1765,71 +1783,71 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1769 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 170: /* hint */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 1775 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 171: /* prepare_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).prep_stmt)); } -#line 1781 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 172: /* prepare_target_query */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } #line 1787 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 173: /* execute_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).exec_stmt)); } + case 170: /* hint */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } #line 1793 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 174: /* import_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).import_stmt)); } + case 171: /* prepare_statement */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).prep_stmt)); } #line 1799 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 175: /* import_file_type */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { } + case 172: /* prepare_target_query */ +#line 145 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).sval)) ); } #line 1805 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 176: /* file_path */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } + case 173: /* execute_statement */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).exec_stmt)); } #line 1811 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 177: /* show_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).show_stmt)); } + case 174: /* import_statement */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).import_stmt)); } #line 1817 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 178: /* create_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).create_stmt)); } + case 175: /* import_file_type */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ + { } #line 1823 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 179: /* opt_not_exists */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { } + case 176: /* file_path */ +#line 145 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).sval)) ); } #line 1829 "bison_parser.cpp" /* yacc.c:1257 */ break; + case 177: /* show_statement */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).show_stmt)); } +#line 1835 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 178: /* create_statement */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).create_stmt)); } +#line 1841 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 179: /* opt_not_exists */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1847 "bison_parser.cpp" /* yacc.c:1257 */ + break; + case 180: /* column_def_commalist */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).column_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).column_vec))) { @@ -1838,59 +1856,59 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).column_vec)); } -#line 1842 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 181: /* column_def */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).column_t)); } -#line 1848 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 182: /* column_type */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { } -#line 1854 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 183: /* opt_column_nullable */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { } #line 1860 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 184: /* drop_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).drop_stmt)); } + case 181: /* column_def */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).column_t)); } #line 1866 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 185: /* opt_exists */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ + case 182: /* column_type */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { } #line 1872 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 186: /* delete_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).delete_stmt)); } + case 183: /* opt_column_nullable */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ + { } #line 1878 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 187: /* truncate_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).delete_stmt)); } + case 184: /* drop_statement */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).drop_stmt)); } #line 1884 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 188: /* insert_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).insert_stmt)); } + case 185: /* opt_exists */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ + { } #line 1890 "bison_parser.cpp" /* yacc.c:1257 */ break; + case 186: /* delete_statement */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).delete_stmt)); } +#line 1896 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 187: /* truncate_statement */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).delete_stmt)); } +#line 1902 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 188: /* insert_statement */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).insert_stmt)); } +#line 1908 "bison_parser.cpp" /* yacc.c:1257 */ + break; + case 189: /* opt_column_list */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -1899,17 +1917,17 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 1903 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1921 "bison_parser.cpp" /* yacc.c:1257 */ break; case 190: /* update_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_stmt)); } -#line 1909 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1927 "bison_parser.cpp" /* yacc.c:1257 */ break; case 191: /* update_clause_commalist */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).update_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -1918,53 +1936,53 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).update_vec)); } -#line 1922 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 192: /* update_clause */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).update_t)); } -#line 1928 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 193: /* select_statement */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).select_stmt)); } -#line 1934 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 194: /* select_with_paren */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).select_stmt)); } #line 1940 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 195: /* select_paren_or_clause */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).select_stmt)); } + case 192: /* update_clause */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).update_t)); } #line 1946 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 196: /* select_no_paren */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 193: /* select_statement */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } #line 1952 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 200: /* select_clause */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 194: /* select_with_paren */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } #line 1958 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 201: /* opt_distinct */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { } + case 195: /* select_paren_or_clause */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).select_stmt)); } #line 1964 "bison_parser.cpp" /* yacc.c:1257 */ break; + case 196: /* select_no_paren */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).select_stmt)); } +#line 1970 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 200: /* select_clause */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).select_stmt)); } +#line 1976 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 201: /* opt_distinct */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1982 "bison_parser.cpp" /* yacc.c:1257 */ + break; + case 202: /* select_list */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1973,41 +1991,41 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1977 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 203: /* opt_from_clause */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 1983 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 204: /* from_clause */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 1989 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 205: /* opt_where */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } #line 1995 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 206: /* opt_group */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).group_t)); } + case 203: /* opt_from_clause */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } #line 2001 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 207: /* opt_having */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } + case 204: /* from_clause */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } #line 2007 "bison_parser.cpp" /* yacc.c:1257 */ break; + case 205: /* opt_where */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2013 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 206: /* opt_group */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).group_t)); } +#line 2019 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 207: /* opt_having */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2025 "bison_parser.cpp" /* yacc.c:1257 */ + break; + case 208: /* opt_order */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2016,11 +2034,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 2020 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2038 "bison_parser.cpp" /* yacc.c:1257 */ break; case 209: /* order_list */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2029,35 +2047,35 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 2033 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 210: /* order_desc */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).order)); } -#line 2039 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 211: /* opt_order_type */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { } -#line 2045 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 212: /* opt_top */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).limit)); } #line 2051 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 213: /* opt_limit */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).limit)); } + case 210: /* order_desc */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).order)); } #line 2057 "bison_parser.cpp" /* yacc.c:1257 */ break; + case 211: /* opt_order_type */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 2063 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 212: /* opt_top */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).limit)); } +#line 2069 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 213: /* opt_limit */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).limit)); } +#line 2075 "bison_parser.cpp" /* yacc.c:1257 */ + break; + case 214: /* expr_list */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2066,11 +2084,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2070 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2088 "bison_parser.cpp" /* yacc.c:1257 */ break; case 215: /* opt_literal_list */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2079,11 +2097,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2083 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2101 "bison_parser.cpp" /* yacc.c:1257 */ break; case 216: /* literal_list */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2092,185 +2110,185 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2096 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 217: /* expr_alias */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 2102 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 218: /* expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 2108 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 219: /* operand */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } #line 2114 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 220: /* scalar_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 217: /* expr_alias */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2120 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 221: /* unary_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 218: /* expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2126 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 222: /* binary_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 219: /* operand */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2132 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 223: /* logic_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 220: /* scalar_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2138 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 224: /* in_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 221: /* unary_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2144 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 225: /* case_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 222: /* binary_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2150 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 226: /* case_list */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 223: /* logic_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2156 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 227: /* exists_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 224: /* in_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2162 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 228: /* comp_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 225: /* case_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2168 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 229: /* function_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 226: /* case_list */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2174 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 230: /* extract_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 227: /* exists_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2180 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 231: /* datetime_field */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { } + case 228: /* comp_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } #line 2186 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 232: /* array_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 229: /* function_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2192 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 233: /* array_index */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 230: /* extract_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2198 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 234: /* between_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } + case 231: /* datetime_field */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ + { } #line 2204 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 235: /* column_name */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 232: /* array_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2210 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 236: /* literal */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 233: /* array_index */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2216 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 237: /* string_literal */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 234: /* between_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2222 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 238: /* bool_literal */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 235: /* column_name */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2228 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 239: /* num_literal */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 236: /* literal */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2234 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 240: /* int_literal */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 237: /* string_literal */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2240 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 241: /* null_literal */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 238: /* bool_literal */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2246 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 242: /* param_expr */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 239: /* num_literal */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2252 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 243: /* table_ref */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + case 240: /* int_literal */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } #line 2258 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 244: /* table_ref_atomic */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + case 241: /* null_literal */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } #line 2264 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 245: /* nonjoin_table_ref_atomic */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + case 242: /* param_expr */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } #line 2270 "bison_parser.cpp" /* yacc.c:1257 */ break; + case 243: /* table_ref */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2276 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 244: /* table_ref_atomic */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2282 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 245: /* nonjoin_table_ref_atomic */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2288 "bison_parser.cpp" /* yacc.c:1257 */ + break; + case 246: /* table_ref_commalist */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).table_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2279,71 +2297,95 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).table_vec)); } -#line 2283 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 247: /* table_ref_name */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 2289 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 248: /* table_ref_name_no_alias */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 2295 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 249: /* table_name */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } #line 2301 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 250: /* table_alias */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).alias_t)); } + case 247: /* table_ref_name */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } #line 2307 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 251: /* opt_table_alias */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).alias_t)); } + case 248: /* table_ref_name_no_alias */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } #line 2313 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 252: /* alias */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).alias_t)); } + case 249: /* table_name */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } #line 2319 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 253: /* opt_alias */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ + case 250: /* table_alias */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).alias_t)); } #line 2325 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 254: /* join_clause */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + case 251: /* opt_table_alias */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).alias_t)); } #line 2331 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 255: /* opt_join_type */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { } + case 252: /* alias */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).alias_t)); } #line 2337 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 256: /* join_condition */ -#line 152 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } + case 253: /* opt_alias */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).alias_t)); } #line 2343 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 258: /* ident_commalist */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ + case 254: /* opt_with_clause */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).with_description_vec)); } +#line 2349 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 255: /* with_clause */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).with_description_vec)); } +#line 2355 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 256: /* with_description_list */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).with_description_vec)); } +#line 2361 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 257: /* with_description */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).with_description_t)); } +#line 2367 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 258: /* join_clause */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2373 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 259: /* opt_join_type */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 2379 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 260: /* join_condition */ +#line 154 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2385 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 262: /* ident_commalist */ +#line 146 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2352,7 +2394,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 2356 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2398 "bison_parser.cpp" /* yacc.c:1257 */ break; @@ -2471,7 +2513,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2475 "bison_parser.cpp" /* yacc.c:1429 */ +#line 2517 "bison_parser.cpp" /* yacc.c:1429 */ yylsp[0] = yylloc; goto yysetstate; @@ -2658,7 +2700,7 @@ yyreduce: switch (yyn) { case 2: -#line 254 "bison_parser.y" /* yacc.c:1646 */ +#line 258 "bison_parser.y" /* yacc.c:1646 */ { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -2676,226 +2718,226 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 2680 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2722 "bison_parser.cpp" /* yacc.c:1646 */ break; case 3: -#line 275 "bison_parser.y" /* yacc.c:1646 */ +#line 279 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[0].statement)->stringLength = yylloc.string_length; yylloc.string_length = 0; (yyval.stmt_vec) = new std::vector(); (yyval.stmt_vec)->push_back((yyvsp[0].statement)); } -#line 2691 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2733 "bison_parser.cpp" /* yacc.c:1646 */ break; case 4: -#line 281 "bison_parser.y" /* yacc.c:1646 */ +#line 285 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[0].statement)->stringLength = yylloc.string_length; yylloc.string_length = 0; (yyvsp[-2].stmt_vec)->push_back((yyvsp[0].statement)); (yyval.stmt_vec) = (yyvsp[-2].stmt_vec); } -#line 2702 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2744 "bison_parser.cpp" /* yacc.c:1646 */ break; case 5: -#line 290 "bison_parser.y" /* yacc.c:1646 */ +#line 294 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2711 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2753 "bison_parser.cpp" /* yacc.c:1646 */ break; case 6: -#line 294 "bison_parser.y" /* yacc.c:1646 */ +#line 298 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2720 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2762 "bison_parser.cpp" /* yacc.c:1646 */ break; case 7: -#line 298 "bison_parser.y" /* yacc.c:1646 */ +#line 302 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 2728 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 8: -#line 305 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 2734 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 9: -#line 306 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 2740 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 10: -#line 307 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 2746 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 11: -#line 308 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 2752 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 12: -#line 309 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2758 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 13: -#line 310 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2764 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 14: -#line 311 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].update_stmt); } #line 2770 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 15: -#line 312 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].drop_stmt); } + case 8: +#line 309 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].select_stmt); } #line 2776 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 16: -#line 313 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].exec_stmt); } + case 9: +#line 310 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].import_stmt); } #line 2782 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 17: -#line 322 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } + case 10: +#line 311 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].create_stmt); } #line 2788 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 18: -#line 323 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = nullptr; } + case 11: +#line 312 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].insert_stmt); } #line 2794 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 19: -#line 328 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } + case 12: +#line 313 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].delete_stmt); } #line 2800 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 20: -#line 329 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } + case 13: +#line 314 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].delete_stmt); } #line 2806 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 21: + case 14: +#line 315 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].update_stmt); } +#line 2812 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 15: +#line 316 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].drop_stmt); } +#line 2818 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 16: +#line 317 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].exec_stmt); } +#line 2824 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 17: +#line 326 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } +#line 2830 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 18: +#line 327 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = nullptr; } +#line 2836 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 19: +#line 332 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 2842 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 20: #line 333 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 2848 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 21: +#line 337 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 2815 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2857 "bison_parser.cpp" /* yacc.c:1646 */ break; case 22: -#line 337 "bison_parser.y" /* yacc.c:1646 */ +#line 341 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 2825 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2867 "bison_parser.cpp" /* yacc.c:1646 */ break; case 23: -#line 349 "bison_parser.y" /* yacc.c:1646 */ +#line 353 "bison_parser.y" /* yacc.c:1646 */ { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 2835 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2877 "bison_parser.cpp" /* yacc.c:1646 */ break; case 25: -#line 359 "bison_parser.y" /* yacc.c:1646 */ +#line 363 "bison_parser.y" /* yacc.c:1646 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 2844 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2886 "bison_parser.cpp" /* yacc.c:1646 */ break; case 26: -#line 363 "bison_parser.y" /* yacc.c:1646 */ +#line 367 "bison_parser.y" /* yacc.c:1646 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 2854 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2896 "bison_parser.cpp" /* yacc.c:1646 */ break; case 27: -#line 375 "bison_parser.y" /* yacc.c:1646 */ +#line 379 "bison_parser.y" /* yacc.c:1646 */ { (yyval.import_stmt) = new ImportStatement((ImportType) (yyvsp[-4].uval)); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); (yyval.import_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 2865 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2907 "bison_parser.cpp" /* yacc.c:1646 */ break; case 28: -#line 384 "bison_parser.y" /* yacc.c:1646 */ +#line 388 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kImportCSV; } -#line 2871 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2913 "bison_parser.cpp" /* yacc.c:1646 */ break; case 29: -#line 388 "bison_parser.y" /* yacc.c:1646 */ +#line 392 "bison_parser.y" /* yacc.c:1646 */ { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 2877 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2919 "bison_parser.cpp" /* yacc.c:1646 */ break; case 30: -#line 398 "bison_parser.y" /* yacc.c:1646 */ +#line 402 "bison_parser.y" /* yacc.c:1646 */ { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 2885 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2927 "bison_parser.cpp" /* yacc.c:1646 */ break; case 31: -#line 401 "bison_parser.y" /* yacc.c:1646 */ +#line 405 "bison_parser.y" /* yacc.c:1646 */ { (yyval.show_stmt) = new ShowStatement(kShowColumns); (yyval.show_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.show_stmt)->name = (yyvsp[0].table_name).name; } -#line 2895 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2937 "bison_parser.cpp" /* yacc.c:1646 */ break; case 32: -#line 415 "bison_parser.y" /* yacc.c:1646 */ +#line 419 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -2903,11 +2945,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-4].table_name).name; (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 2907 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2949 "bison_parser.cpp" /* yacc.c:1646 */ break; case 33: -#line 422 "bison_parser.y" /* yacc.c:1646 */ +#line 426 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2915,11 +2957,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 2919 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2961 "bison_parser.cpp" /* yacc.c:1646 */ break; case 34: -#line 429 "bison_parser.y" /* yacc.c:1646 */ +#line 433 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2928,174 +2970,174 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 2932 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2974 "bison_parser.cpp" /* yacc.c:1646 */ break; case 35: -#line 440 "bison_parser.y" /* yacc.c:1646 */ +#line 444 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 2938 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2980 "bison_parser.cpp" /* yacc.c:1646 */ break; case 36: -#line 441 "bison_parser.y" /* yacc.c:1646 */ +#line 445 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 2944 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2986 "bison_parser.cpp" /* yacc.c:1646 */ break; case 37: -#line 445 "bison_parser.y" /* yacc.c:1646 */ +#line 449 "bison_parser.y" /* yacc.c:1646 */ { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 2950 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2992 "bison_parser.cpp" /* yacc.c:1646 */ break; case 38: -#line 446 "bison_parser.y" /* yacc.c:1646 */ +#line 450 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 2956 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2998 "bison_parser.cpp" /* yacc.c:1646 */ break; case 39: -#line 450 "bison_parser.y" /* yacc.c:1646 */ +#line 454 "bison_parser.y" /* yacc.c:1646 */ { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].bval)); } -#line 2964 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 40: -#line 456 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 2970 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 41: -#line 457 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 2976 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 42: -#line 458 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 2982 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 43: -#line 459 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 2988 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 44: -#line 460 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 2994 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 45: -#line 461 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3000 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 46: -#line 462 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } #line 3006 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 47: -#line 463 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } + case 40: +#line 460 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.column_type_t) = ColumnType{DataType::INT}; } #line 3012 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 48: -#line 467 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.bval) = true; } + case 41: +#line 461 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.column_type_t) = ColumnType{DataType::INT}; } #line 3018 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 49: -#line 468 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.bval) = false; } + case 42: +#line 462 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.column_type_t) = ColumnType{DataType::LONG}; } #line 3024 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 50: -#line 469 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.bval) = false; } + case 43: +#line 463 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } #line 3030 "bison_parser.cpp" /* yacc.c:1646 */ break; + case 44: +#line 464 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } +#line 3036 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 45: +#line 465 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } +#line 3042 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 46: +#line 466 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } +#line 3048 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 47: +#line 467 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } +#line 3054 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 48: +#line 471 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.bval) = true; } +#line 3060 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 49: +#line 472 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.bval) = false; } +#line 3066 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 50: +#line 473 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.bval) = false; } +#line 3072 "bison_parser.cpp" /* yacc.c:1646 */ + break; + case 51: -#line 479 "bison_parser.y" /* yacc.c:1646 */ +#line 483 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropTable); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 3041 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3083 "bison_parser.cpp" /* yacc.c:1646 */ break; case 52: -#line 485 "bison_parser.y" /* yacc.c:1646 */ +#line 489 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropView); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 3052 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3094 "bison_parser.cpp" /* yacc.c:1646 */ break; case 53: -#line 491 "bison_parser.y" /* yacc.c:1646 */ +#line 495 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3062 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3104 "bison_parser.cpp" /* yacc.c:1646 */ break; case 54: -#line 499 "bison_parser.y" /* yacc.c:1646 */ +#line 503 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 3068 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3110 "bison_parser.cpp" /* yacc.c:1646 */ break; case 55: -#line 500 "bison_parser.y" /* yacc.c:1646 */ +#line 504 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 3074 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3116 "bison_parser.cpp" /* yacc.c:1646 */ break; case 56: -#line 509 "bison_parser.y" /* yacc.c:1646 */ +#line 513 "bison_parser.y" /* yacc.c:1646 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[-1].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[-1].table_name).name; (yyval.delete_stmt)->expr = (yyvsp[0].expr); } -#line 3085 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3127 "bison_parser.cpp" /* yacc.c:1646 */ break; case 57: -#line 518 "bison_parser.y" /* yacc.c:1646 */ +#line 522 "bison_parser.y" /* yacc.c:1646 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 3095 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3137 "bison_parser.cpp" /* yacc.c:1646 */ break; case 58: -#line 531 "bison_parser.y" /* yacc.c:1646 */ +#line 535 "bison_parser.y" /* yacc.c:1646 */ { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -3103,11 +3145,11 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 3107 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3149 "bison_parser.cpp" /* yacc.c:1646 */ break; case 59: -#line 538 "bison_parser.y" /* yacc.c:1646 */ +#line 542 "bison_parser.y" /* yacc.c:1646 */ { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -3115,61 +3157,80 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 3119 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3161 "bison_parser.cpp" /* yacc.c:1646 */ break; case 60: -#line 549 "bison_parser.y" /* yacc.c:1646 */ +#line 553 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 3125 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3167 "bison_parser.cpp" /* yacc.c:1646 */ break; case 61: -#line 550 "bison_parser.y" /* yacc.c:1646 */ +#line 554 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = nullptr; } -#line 3131 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3173 "bison_parser.cpp" /* yacc.c:1646 */ break; case 62: -#line 560 "bison_parser.y" /* yacc.c:1646 */ +#line 564 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_stmt) = new UpdateStatement(); (yyval.update_stmt)->table = (yyvsp[-3].table); (yyval.update_stmt)->updates = (yyvsp[-1].update_vec); (yyval.update_stmt)->where = (yyvsp[0].expr); } -#line 3142 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3184 "bison_parser.cpp" /* yacc.c:1646 */ break; case 63: -#line 569 "bison_parser.y" /* yacc.c:1646 */ +#line 573 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 3148 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3190 "bison_parser.cpp" /* yacc.c:1646 */ break; case 64: -#line 570 "bison_parser.y" /* yacc.c:1646 */ +#line 574 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3154 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3196 "bison_parser.cpp" /* yacc.c:1646 */ break; case 65: -#line 574 "bison_parser.y" /* yacc.c:1646 */ +#line 578 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3164 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3206 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 66: +#line 590 "bison_parser.y" /* yacc.c:1646 */ + { + (yyval.select_stmt) = (yyvsp[0].select_stmt); + (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); + } +#line 3215 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 67: +#line 594 "bison_parser.y" /* yacc.c:1646 */ + { + (yyval.select_stmt) = (yyvsp[0].select_stmt); + (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); + } +#line 3224 "bison_parser.cpp" /* yacc.c:1646 */ break; case 68: -#line 588 "bison_parser.y" /* yacc.c:1646 */ +#line 598 "bison_parser.y" /* yacc.c:1646 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator // TODO: might overwrite order and limit of first select here (yyval.select_stmt) = (yyvsp[-4].select_stmt); + (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); (yyval.select_stmt)->unionSelect = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -3179,23 +3240,23 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3183 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3244 "bison_parser.cpp" /* yacc.c:1646 */ break; case 69: -#line 605 "bison_parser.y" /* yacc.c:1646 */ +#line 616 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3189 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3250 "bison_parser.cpp" /* yacc.c:1646 */ break; case 70: -#line 606 "bison_parser.y" /* yacc.c:1646 */ +#line 617 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3195 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3256 "bison_parser.cpp" /* yacc.c:1646 */ break; case 73: -#line 615 "bison_parser.y" /* yacc.c:1646 */ +#line 626 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -3206,11 +3267,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3210 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3271 "bison_parser.cpp" /* yacc.c:1646 */ break; case 74: -#line 625 "bison_parser.y" /* yacc.c:1646 */ +#line 636 "bison_parser.y" /* yacc.c:1646 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3225,11 +3286,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3229 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3290 "bison_parser.cpp" /* yacc.c:1646 */ break; case 81: -#line 657 "bison_parser.y" /* yacc.c:1646 */ +#line 668 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -3239,213 +3300,213 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 3243 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3304 "bison_parser.cpp" /* yacc.c:1646 */ break; case 82: -#line 669 "bison_parser.y" /* yacc.c:1646 */ +#line 680 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 3249 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3310 "bison_parser.cpp" /* yacc.c:1646 */ break; case 83: -#line 670 "bison_parser.y" /* yacc.c:1646 */ +#line 681 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 3255 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3316 "bison_parser.cpp" /* yacc.c:1646 */ break; case 85: -#line 678 "bison_parser.y" /* yacc.c:1646 */ +#line 689 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = (yyvsp[0].table); } -#line 3261 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3322 "bison_parser.cpp" /* yacc.c:1646 */ break; case 86: -#line 679 "bison_parser.y" /* yacc.c:1646 */ +#line 690 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = nullptr; } -#line 3267 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3328 "bison_parser.cpp" /* yacc.c:1646 */ break; case 87: -#line 682 "bison_parser.y" /* yacc.c:1646 */ +#line 693 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = (yyvsp[0].table); } -#line 3273 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3334 "bison_parser.cpp" /* yacc.c:1646 */ break; case 88: -#line 687 "bison_parser.y" /* yacc.c:1646 */ +#line 698 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[0].expr); } -#line 3279 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3340 "bison_parser.cpp" /* yacc.c:1646 */ break; case 89: -#line 688 "bison_parser.y" /* yacc.c:1646 */ +#line 699 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = nullptr; } -#line 3285 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3346 "bison_parser.cpp" /* yacc.c:1646 */ break; case 90: -#line 692 "bison_parser.y" /* yacc.c:1646 */ +#line 703 "bison_parser.y" /* yacc.c:1646 */ { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 3295 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3356 "bison_parser.cpp" /* yacc.c:1646 */ break; case 91: -#line 697 "bison_parser.y" /* yacc.c:1646 */ +#line 708 "bison_parser.y" /* yacc.c:1646 */ { (yyval.group_t) = nullptr; } -#line 3301 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3362 "bison_parser.cpp" /* yacc.c:1646 */ break; case 92: -#line 701 "bison_parser.y" /* yacc.c:1646 */ +#line 712 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[0].expr); } -#line 3307 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3368 "bison_parser.cpp" /* yacc.c:1646 */ break; case 93: -#line 702 "bison_parser.y" /* yacc.c:1646 */ +#line 713 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = nullptr; } -#line 3313 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3374 "bison_parser.cpp" /* yacc.c:1646 */ break; case 94: -#line 705 "bison_parser.y" /* yacc.c:1646 */ +#line 716 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 3319 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3380 "bison_parser.cpp" /* yacc.c:1646 */ break; case 95: -#line 706 "bison_parser.y" /* yacc.c:1646 */ +#line 717 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_vec) = nullptr; } -#line 3325 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3386 "bison_parser.cpp" /* yacc.c:1646 */ break; case 96: -#line 710 "bison_parser.y" /* yacc.c:1646 */ +#line 721 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 3331 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3392 "bison_parser.cpp" /* yacc.c:1646 */ break; case 97: -#line 711 "bison_parser.y" /* yacc.c:1646 */ +#line 722 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 3337 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3398 "bison_parser.cpp" /* yacc.c:1646 */ break; case 98: -#line 715 "bison_parser.y" /* yacc.c:1646 */ +#line 726 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 3343 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3404 "bison_parser.cpp" /* yacc.c:1646 */ break; case 99: -#line 719 "bison_parser.y" /* yacc.c:1646 */ +#line 730 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_type) = kOrderAsc; } -#line 3349 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3410 "bison_parser.cpp" /* yacc.c:1646 */ break; case 100: -#line 720 "bison_parser.y" /* yacc.c:1646 */ +#line 731 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_type) = kOrderDesc; } -#line 3355 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3416 "bison_parser.cpp" /* yacc.c:1646 */ break; case 101: -#line 721 "bison_parser.y" /* yacc.c:1646 */ +#line 732 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_type) = kOrderAsc; } -#line 3361 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3422 "bison_parser.cpp" /* yacc.c:1646 */ break; case 102: -#line 727 "bison_parser.y" /* yacc.c:1646 */ +#line 738 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 3367 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3428 "bison_parser.cpp" /* yacc.c:1646 */ break; case 103: -#line 728 "bison_parser.y" /* yacc.c:1646 */ +#line 739 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = nullptr; } -#line 3373 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3434 "bison_parser.cpp" /* yacc.c:1646 */ break; case 104: -#line 732 "bison_parser.y" /* yacc.c:1646 */ +#line 743 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 3379 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3440 "bison_parser.cpp" /* yacc.c:1646 */ break; case 105: -#line 733 "bison_parser.y" /* yacc.c:1646 */ +#line 744 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 3385 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3446 "bison_parser.cpp" /* yacc.c:1646 */ break; case 106: -#line 734 "bison_parser.y" /* yacc.c:1646 */ +#line 745 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3391 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3452 "bison_parser.cpp" /* yacc.c:1646 */ break; case 107: -#line 735 "bison_parser.y" /* yacc.c:1646 */ +#line 746 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 3397 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3458 "bison_parser.cpp" /* yacc.c:1646 */ break; case 108: -#line 736 "bison_parser.y" /* yacc.c:1646 */ +#line 747 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 3403 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3464 "bison_parser.cpp" /* yacc.c:1646 */ break; case 109: -#line 737 "bison_parser.y" /* yacc.c:1646 */ +#line 748 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = nullptr; } -#line 3409 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3470 "bison_parser.cpp" /* yacc.c:1646 */ break; case 110: -#line 744 "bison_parser.y" /* yacc.c:1646 */ +#line 755 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3415 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3476 "bison_parser.cpp" /* yacc.c:1646 */ break; case 111: -#line 745 "bison_parser.y" /* yacc.c:1646 */ +#line 756 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3421 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3482 "bison_parser.cpp" /* yacc.c:1646 */ break; case 112: -#line 749 "bison_parser.y" /* yacc.c:1646 */ +#line 760 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 3427 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3488 "bison_parser.cpp" /* yacc.c:1646 */ break; case 113: -#line 750 "bison_parser.y" /* yacc.c:1646 */ +#line 761 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = nullptr; } -#line 3433 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3494 "bison_parser.cpp" /* yacc.c:1646 */ break; case 114: -#line 754 "bison_parser.y" /* yacc.c:1646 */ +#line 765 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3439 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3500 "bison_parser.cpp" /* yacc.c:1646 */ break; case 115: -#line 755 "bison_parser.y" /* yacc.c:1646 */ +#line 766 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3445 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3506 "bison_parser.cpp" /* yacc.c:1646 */ break; case 116: -#line 759 "bison_parser.y" /* yacc.c:1646 */ +#line 770 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -3453,415 +3514,415 @@ yyreduce: delete (yyvsp[0].alias_t); } } -#line 3457 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3518 "bison_parser.cpp" /* yacc.c:1646 */ break; case 122: -#line 777 "bison_parser.y" /* yacc.c:1646 */ +#line 788 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); } -#line 3463 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3524 "bison_parser.cpp" /* yacc.c:1646 */ break; case 131: -#line 786 "bison_parser.y" /* yacc.c:1646 */ +#line 797 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 3469 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3530 "bison_parser.cpp" /* yacc.c:1646 */ break; case 134: -#line 795 "bison_parser.y" /* yacc.c:1646 */ +#line 806 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 3475 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3536 "bison_parser.cpp" /* yacc.c:1646 */ break; case 135: -#line 796 "bison_parser.y" /* yacc.c:1646 */ +#line 807 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 3481 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3542 "bison_parser.cpp" /* yacc.c:1646 */ break; case 136: -#line 797 "bison_parser.y" /* yacc.c:1646 */ +#line 808 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 3487 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3548 "bison_parser.cpp" /* yacc.c:1646 */ break; case 137: -#line 798 "bison_parser.y" /* yacc.c:1646 */ +#line 809 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 3493 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3554 "bison_parser.cpp" /* yacc.c:1646 */ break; case 138: -#line 799 "bison_parser.y" /* yacc.c:1646 */ +#line 810 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 3499 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3560 "bison_parser.cpp" /* yacc.c:1646 */ break; case 140: -#line 804 "bison_parser.y" /* yacc.c:1646 */ +#line 815 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 3505 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3566 "bison_parser.cpp" /* yacc.c:1646 */ break; case 141: -#line 805 "bison_parser.y" /* yacc.c:1646 */ +#line 816 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 3511 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3572 "bison_parser.cpp" /* yacc.c:1646 */ break; case 142: -#line 806 "bison_parser.y" /* yacc.c:1646 */ +#line 817 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 3517 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3578 "bison_parser.cpp" /* yacc.c:1646 */ break; case 143: -#line 807 "bison_parser.y" /* yacc.c:1646 */ +#line 818 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 3523 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3584 "bison_parser.cpp" /* yacc.c:1646 */ break; case 144: -#line 808 "bison_parser.y" /* yacc.c:1646 */ +#line 819 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 3529 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3590 "bison_parser.cpp" /* yacc.c:1646 */ break; case 145: -#line 809 "bison_parser.y" /* yacc.c:1646 */ +#line 820 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 3535 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3596 "bison_parser.cpp" /* yacc.c:1646 */ break; case 146: -#line 810 "bison_parser.y" /* yacc.c:1646 */ +#line 821 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 3541 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3602 "bison_parser.cpp" /* yacc.c:1646 */ break; case 147: -#line 811 "bison_parser.y" /* yacc.c:1646 */ +#line 822 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 3547 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3608 "bison_parser.cpp" /* yacc.c:1646 */ break; case 148: -#line 812 "bison_parser.y" /* yacc.c:1646 */ +#line 823 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 3553 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3614 "bison_parser.cpp" /* yacc.c:1646 */ break; case 149: -#line 813 "bison_parser.y" /* yacc.c:1646 */ +#line 824 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 3559 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3620 "bison_parser.cpp" /* yacc.c:1646 */ break; case 150: -#line 817 "bison_parser.y" /* yacc.c:1646 */ +#line 828 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 3565 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3626 "bison_parser.cpp" /* yacc.c:1646 */ break; case 151: -#line 818 "bison_parser.y" /* yacc.c:1646 */ +#line 829 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 3571 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3632 "bison_parser.cpp" /* yacc.c:1646 */ break; case 152: -#line 822 "bison_parser.y" /* yacc.c:1646 */ +#line 833 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 3577 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3638 "bison_parser.cpp" /* yacc.c:1646 */ break; case 153: -#line 823 "bison_parser.y" /* yacc.c:1646 */ +#line 834 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 3583 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3644 "bison_parser.cpp" /* yacc.c:1646 */ break; case 154: -#line 824 "bison_parser.y" /* yacc.c:1646 */ +#line 835 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 3589 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3650 "bison_parser.cpp" /* yacc.c:1646 */ break; case 155: -#line 825 "bison_parser.y" /* yacc.c:1646 */ +#line 836 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 3595 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3656 "bison_parser.cpp" /* yacc.c:1646 */ break; case 156: -#line 831 "bison_parser.y" /* yacc.c:1646 */ +#line 842 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 3601 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3662 "bison_parser.cpp" /* yacc.c:1646 */ break; case 157: -#line 832 "bison_parser.y" /* yacc.c:1646 */ +#line 843 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3607 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3668 "bison_parser.cpp" /* yacc.c:1646 */ break; case 158: -#line 833 "bison_parser.y" /* yacc.c:1646 */ +#line 844 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 3613 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3674 "bison_parser.cpp" /* yacc.c:1646 */ break; case 159: -#line 834 "bison_parser.y" /* yacc.c:1646 */ +#line 845 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3619 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3680 "bison_parser.cpp" /* yacc.c:1646 */ break; case 160: -#line 838 "bison_parser.y" /* yacc.c:1646 */ +#line 849 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 3625 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3686 "bison_parser.cpp" /* yacc.c:1646 */ break; case 161: -#line 839 "bison_parser.y" /* yacc.c:1646 */ +#line 850 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 3631 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3692 "bison_parser.cpp" /* yacc.c:1646 */ break; case 162: -#line 843 "bison_parser.y" /* yacc.c:1646 */ +#line 854 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 3637 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3698 "bison_parser.cpp" /* yacc.c:1646 */ break; case 163: -#line 844 "bison_parser.y" /* yacc.c:1646 */ +#line 855 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 3643 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3704 "bison_parser.cpp" /* yacc.c:1646 */ break; case 164: -#line 848 "bison_parser.y" /* yacc.c:1646 */ +#line 859 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3649 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3710 "bison_parser.cpp" /* yacc.c:1646 */ break; case 165: -#line 849 "bison_parser.y" /* yacc.c:1646 */ +#line 860 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3655 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3716 "bison_parser.cpp" /* yacc.c:1646 */ break; case 166: -#line 850 "bison_parser.y" /* yacc.c:1646 */ +#line 861 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 3661 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3722 "bison_parser.cpp" /* yacc.c:1646 */ break; case 167: -#line 851 "bison_parser.y" /* yacc.c:1646 */ +#line 862 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 3667 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3728 "bison_parser.cpp" /* yacc.c:1646 */ break; case 168: -#line 852 "bison_parser.y" /* yacc.c:1646 */ +#line 863 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 3673 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3734 "bison_parser.cpp" /* yacc.c:1646 */ break; case 169: -#line 853 "bison_parser.y" /* yacc.c:1646 */ +#line 864 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 3679 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3740 "bison_parser.cpp" /* yacc.c:1646 */ break; case 170: -#line 854 "bison_parser.y" /* yacc.c:1646 */ +#line 865 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 3685 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3746 "bison_parser.cpp" /* yacc.c:1646 */ break; case 171: -#line 858 "bison_parser.y" /* yacc.c:1646 */ +#line 869 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 3691 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3752 "bison_parser.cpp" /* yacc.c:1646 */ break; case 172: -#line 859 "bison_parser.y" /* yacc.c:1646 */ +#line 870 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 3697 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3758 "bison_parser.cpp" /* yacc.c:1646 */ break; case 173: -#line 863 "bison_parser.y" /* yacc.c:1646 */ +#line 874 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 3703 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3764 "bison_parser.cpp" /* yacc.c:1646 */ break; case 174: -#line 867 "bison_parser.y" /* yacc.c:1646 */ +#line 878 "bison_parser.y" /* yacc.c:1646 */ { (yyval.datetime_field) = kDatetimeSecond; } -#line 3709 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3770 "bison_parser.cpp" /* yacc.c:1646 */ break; case 175: -#line 868 "bison_parser.y" /* yacc.c:1646 */ +#line 879 "bison_parser.y" /* yacc.c:1646 */ { (yyval.datetime_field) = kDatetimeMinute; } -#line 3715 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3776 "bison_parser.cpp" /* yacc.c:1646 */ break; case 176: -#line 869 "bison_parser.y" /* yacc.c:1646 */ +#line 880 "bison_parser.y" /* yacc.c:1646 */ { (yyval.datetime_field) = kDatetimeHour; } -#line 3721 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3782 "bison_parser.cpp" /* yacc.c:1646 */ break; case 177: -#line 870 "bison_parser.y" /* yacc.c:1646 */ +#line 881 "bison_parser.y" /* yacc.c:1646 */ { (yyval.datetime_field) = kDatetimeDay; } -#line 3727 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3788 "bison_parser.cpp" /* yacc.c:1646 */ break; case 178: -#line 871 "bison_parser.y" /* yacc.c:1646 */ +#line 882 "bison_parser.y" /* yacc.c:1646 */ { (yyval.datetime_field) = kDatetimeMonth; } -#line 3733 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3794 "bison_parser.cpp" /* yacc.c:1646 */ break; case 179: -#line 872 "bison_parser.y" /* yacc.c:1646 */ +#line 883 "bison_parser.y" /* yacc.c:1646 */ { (yyval.datetime_field) = kDatetimeYear; } -#line 3739 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3800 "bison_parser.cpp" /* yacc.c:1646 */ break; case 180: -#line 875 "bison_parser.y" /* yacc.c:1646 */ +#line 886 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 3745 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3806 "bison_parser.cpp" /* yacc.c:1646 */ break; case 181: -#line 879 "bison_parser.y" /* yacc.c:1646 */ +#line 890 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 3751 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3812 "bison_parser.cpp" /* yacc.c:1646 */ break; case 182: -#line 883 "bison_parser.y" /* yacc.c:1646 */ +#line 894 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3757 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3818 "bison_parser.cpp" /* yacc.c:1646 */ break; case 183: -#line 887 "bison_parser.y" /* yacc.c:1646 */ +#line 898 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 3763 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3824 "bison_parser.cpp" /* yacc.c:1646 */ break; case 184: -#line 888 "bison_parser.y" /* yacc.c:1646 */ +#line 899 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 3769 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3830 "bison_parser.cpp" /* yacc.c:1646 */ break; case 185: -#line 889 "bison_parser.y" /* yacc.c:1646 */ +#line 900 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeStar(); } -#line 3775 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3836 "bison_parser.cpp" /* yacc.c:1646 */ break; case 186: -#line 890 "bison_parser.y" /* yacc.c:1646 */ +#line 901 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 3781 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3842 "bison_parser.cpp" /* yacc.c:1646 */ break; case 192: -#line 902 "bison_parser.y" /* yacc.c:1646 */ +#line 913 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 3787 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3848 "bison_parser.cpp" /* yacc.c:1646 */ break; case 193: -#line 906 "bison_parser.y" /* yacc.c:1646 */ +#line 917 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeLiteral(true); } -#line 3793 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3854 "bison_parser.cpp" /* yacc.c:1646 */ break; case 194: -#line 907 "bison_parser.y" /* yacc.c:1646 */ +#line 918 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeLiteral(false); } -#line 3799 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3860 "bison_parser.cpp" /* yacc.c:1646 */ break; case 195: -#line 911 "bison_parser.y" /* yacc.c:1646 */ +#line 922 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 3805 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3866 "bison_parser.cpp" /* yacc.c:1646 */ break; case 197: -#line 916 "bison_parser.y" /* yacc.c:1646 */ +#line 927 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 3811 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3872 "bison_parser.cpp" /* yacc.c:1646 */ break; case 198: -#line 920 "bison_parser.y" /* yacc.c:1646 */ +#line 931 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeNullLiteral(); } -#line 3817 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3878 "bison_parser.cpp" /* yacc.c:1646 */ break; case 199: -#line 924 "bison_parser.y" /* yacc.c:1646 */ +#line 935 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 3827 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3888 "bison_parser.cpp" /* yacc.c:1646 */ break; case 201: -#line 937 "bison_parser.y" /* yacc.c:1646 */ +#line 948 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 3838 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3899 "bison_parser.cpp" /* yacc.c:1646 */ break; case 205: -#line 953 "bison_parser.y" /* yacc.c:1646 */ +#line 964 "bison_parser.y" /* yacc.c:1646 */ { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3849 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3910 "bison_parser.cpp" /* yacc.c:1646 */ break; case 206: -#line 962 "bison_parser.y" /* yacc.c:1646 */ +#line 973 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 3855 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3916 "bison_parser.cpp" /* yacc.c:1646 */ break; case 207: -#line 963 "bison_parser.y" /* yacc.c:1646 */ +#line 974 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 3861 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3922 "bison_parser.cpp" /* yacc.c:1646 */ break; case 208: -#line 968 "bison_parser.y" /* yacc.c:1646 */ +#line 979 "bison_parser.y" /* yacc.c:1646 */ { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -3869,63 +3930,103 @@ yyreduce: tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3873 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3934 "bison_parser.cpp" /* yacc.c:1646 */ break; case 209: -#line 979 "bison_parser.y" /* yacc.c:1646 */ +#line 990 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 3883 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3944 "bison_parser.cpp" /* yacc.c:1646 */ break; case 210: -#line 988 "bison_parser.y" /* yacc.c:1646 */ +#line 999 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} -#line 3889 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3950 "bison_parser.cpp" /* yacc.c:1646 */ break; case 211: -#line 989 "bison_parser.y" /* yacc.c:1646 */ +#line 1000 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 3895 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3956 "bison_parser.cpp" /* yacc.c:1646 */ break; case 213: -#line 995 "bison_parser.y" /* yacc.c:1646 */ +#line 1006 "bison_parser.y" /* yacc.c:1646 */ { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 3901 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3962 "bison_parser.cpp" /* yacc.c:1646 */ break; case 215: -#line 1001 "bison_parser.y" /* yacc.c:1646 */ +#line 1012 "bison_parser.y" /* yacc.c:1646 */ { (yyval.alias_t) = nullptr; } -#line 3907 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3968 "bison_parser.cpp" /* yacc.c:1646 */ break; case 216: -#line 1005 "bison_parser.y" /* yacc.c:1646 */ +#line 1016 "bison_parser.y" /* yacc.c:1646 */ { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 3913 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3974 "bison_parser.cpp" /* yacc.c:1646 */ break; case 217: -#line 1006 "bison_parser.y" /* yacc.c:1646 */ +#line 1017 "bison_parser.y" /* yacc.c:1646 */ { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 3919 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3980 "bison_parser.cpp" /* yacc.c:1646 */ break; case 219: -#line 1012 "bison_parser.y" /* yacc.c:1646 */ +#line 1023 "bison_parser.y" /* yacc.c:1646 */ { (yyval.alias_t) = nullptr; } -#line 3925 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3986 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 220: -#line 1021 "bison_parser.y" /* yacc.c:1646 */ + case 221: +#line 1032 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.with_description_vec) = nullptr; } +#line 3992 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 222: +#line 1036 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } +#line 3998 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 223: +#line 1040 "bison_parser.y" /* yacc.c:1646 */ + { + (yyval.with_description_vec) = new std::vector(); + (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); + } +#line 4007 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 224: +#line 1044 "bison_parser.y" /* yacc.c:1646 */ + { + (yyvsp[-2].with_description_vec)->push_back((yyvsp[0].with_description_t)); + (yyval.with_description_vec) = (yyvsp[-2].with_description_vec); + } +#line 4016 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 225: +#line 1051 "bison_parser.y" /* yacc.c:1646 */ + { + (yyval.with_description_t) = new WithDescription(); + (yyval.with_description_t)->alias = (yyvsp[-2].sval); + (yyval.with_description_t)->select = (yyvsp[0].select_stmt); + } +#line 4026 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 226: +#line 1065 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3933,11 +4034,11 @@ yyreduce: (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 3937 "bison_parser.cpp" /* yacc.c:1646 */ +#line 4038 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 221: -#line 1029 "bison_parser.y" /* yacc.c:1646 */ + case 227: +#line 1073 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3946,11 +4047,11 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 3950 "bison_parser.cpp" /* yacc.c:1646 */ +#line 4051 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 222: -#line 1039 "bison_parser.y" /* yacc.c:1646 */ + case 228: +#line 1083 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3966,83 +4067,83 @@ yyreduce: (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 3970 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 223: -#line 1057 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinInner; } -#line 3976 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 224: -#line 1058 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinLeft; } -#line 3982 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 225: -#line 1059 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinLeft; } -#line 3988 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 226: -#line 1060 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinRight; } -#line 3994 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 227: -#line 1061 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinRight; } -#line 4000 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 228: -#line 1062 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } -#line 4006 "bison_parser.cpp" /* yacc.c:1646 */ +#line 4071 "bison_parser.cpp" /* yacc.c:1646 */ break; case 229: -#line 1063 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } -#line 4012 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1101 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinInner; } +#line 4077 "bison_parser.cpp" /* yacc.c:1646 */ break; case 230: -#line 1064 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } -#line 4018 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1102 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinLeft; } +#line 4083 "bison_parser.cpp" /* yacc.c:1646 */ break; case 231: -#line 1065 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinCross; } -#line 4024 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1103 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinLeft; } +#line 4089 "bison_parser.cpp" /* yacc.c:1646 */ break; case 232: -#line 1066 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinInner; } -#line 4030 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1104 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinRight; } +#line 4095 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 233: +#line 1105 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinRight; } +#line 4101 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 234: +#line 1106 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } +#line 4107 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 235: +#line 1107 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } +#line 4113 "bison_parser.cpp" /* yacc.c:1646 */ break; case 236: -#line 1086 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 4036 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1108 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } +#line 4119 "bison_parser.cpp" /* yacc.c:1646 */ break; case 237: -#line 1087 "bison_parser.y" /* yacc.c:1646 */ +#line 1109 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinCross; } +#line 4125 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 238: +#line 1110 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinInner; } +#line 4131 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 242: +#line 1130 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } +#line 4137 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 243: +#line 1131 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 4042 "bison_parser.cpp" /* yacc.c:1646 */ +#line 4143 "bison_parser.cpp" /* yacc.c:1646 */ break; -#line 4046 "bison_parser.cpp" /* yacc.c:1646 */ +#line 4147 "bison_parser.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4277,7 +4378,7 @@ yyreturn: #endif return yyresult; } -#line 1090 "bison_parser.y" /* yacc.c:1906 */ +#line 1134 "bison_parser.y" /* yacc.c:1906 */ /********************************* ** Section 4: Additional C code diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index de869f1..0bc0246 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -255,6 +255,7 @@ union HSQL_STYPE hsql::Expr* expr; hsql::OrderDescription* order; hsql::OrderType order_type; + hsql::WithDescription* with_description_t; hsql::DatetimeField datetime_field; hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; @@ -271,8 +272,9 @@ union HSQL_STYPE std::vector* update_vec; std::vector* expr_vec; std::vector* order_vec; + std::vector* with_description_vec; -#line 276 "bison_parser.h" /* yacc.c:1909 */ +#line 278 "bison_parser.h" /* yacc.c:1909 */ }; typedef union HSQL_STYPE HSQL_STYPE; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 26e83e7..afc1c4a 100755 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -116,6 +116,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha hsql::Expr* expr; hsql::OrderDescription* order; hsql::OrderType order_type; + hsql::WithDescription* with_description_t; hsql::DatetimeField datetime_field; hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; @@ -132,6 +133,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha std::vector* update_vec; std::vector* expr_vec; std::vector* order_vec; + std::vector* with_description_vec; } @@ -212,13 +214,15 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type update_clause %type opt_group %type opt_table_alias table_alias opt_alias alias +%type with_description -%type ident_commalist opt_column_list -%type expr_list select_list opt_literal_list literal_list hint_list opt_hints -%type table_ref_commalist -%type opt_order order_list -%type update_clause_commalist -%type column_def_commalist +%type ident_commalist opt_column_list +%type expr_list select_list opt_literal_list literal_list hint_list opt_hints +%type table_ref_commalist +%type opt_order order_list +%type opt_with_clause with_clause with_description_list +%type update_clause_commalist +%type column_def_commalist /****************************** ** Token Precedence and Associativity @@ -583,20 +587,27 @@ update_clause: ******************************/ select_statement: - select_with_paren - | select_no_paren - | select_with_paren set_operator select_paren_or_clause opt_order opt_limit { + opt_with_clause select_with_paren { + $$ = $2; + $$->withDescriptions = $1; + } + | opt_with_clause select_no_paren { + $$ = $2; + $$->withDescriptions = $1; + } + | opt_with_clause select_with_paren set_operator select_paren_or_clause opt_order opt_limit { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator // TODO: might overwrite order and limit of first select here - $$ = $1; - $$->unionSelect = $3; - $$->order = $4; + $$ = $2; + $$->withDescriptions = $1; + $$->unionSelect = $4; + $$->order = $5; // Limit could have been set by TOP. - if ($5 != nullptr) { + if ($6 != nullptr) { delete $$->limit; - $$->limit = $5; + $$->limit = $6; } } ; @@ -1012,6 +1023,39 @@ opt_alias: | /* empty */ { $$ = nullptr; } +/****************************** + * With Descriptions + ******************************/ + +opt_with_clause: + with_clause + | /* empty */ { $$ = nullptr; } + ; + +with_clause: + WITH with_description_list { $$ = $2; } + ; + +with_description_list: + with_description { + $$ = new std::vector(); + $$->push_back($1); + } + | with_description_list ',' with_description { + $1->push_back($3); + $$ = $1; + } + ; + +with_description: + IDENTIFIER AS select_with_paren { + $$ = new WithDescription(); + $$->alias = $1; + $$->select = $3; + } + ; + + /****************************** * Join Statements ******************************/ diff --git a/src/sql/SelectStatement.h b/src/sql/SelectStatement.h index d1d5007..2caa880 100644 --- a/src/sql/SelectStatement.h +++ b/src/sql/SelectStatement.h @@ -39,6 +39,13 @@ namespace hsql { Expr* having; }; + struct WithDescription { + ~WithDescription(); + + char* alias; + SelectStatement* select; + }; + // Representation of a full SQL select statement. // TODO: add union_order and union_limit. struct SelectStatement : SQLStatement { @@ -53,9 +60,11 @@ namespace hsql { SelectStatement* unionSelect; std::vector* order; + std::vector* withDescriptions; LimitDescription* limit; }; + } // namespace hsql #endif diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index 3589f97..e03e0ce 100755 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -227,6 +227,11 @@ namespace hsql { } } + WithDescription::~WithDescription() { + free(alias); + delete select; + } + // SelectStatement SelectStatement::SelectStatement() : SQLStatement(kStmtSelect), @@ -237,6 +242,7 @@ namespace hsql { groupBy(nullptr), unionSelect(nullptr), order(nullptr), + withDescriptions(nullptr), limit(nullptr) {}; SelectStatement::~SelectStatement() { @@ -260,6 +266,13 @@ namespace hsql { } delete order; } + + if (withDescriptions != nullptr) { + for (WithDescription* desc : *withDescriptions) { + delete desc; + } + delete withDescriptions; + } } // UpdateStatement diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index 220a246..5e661e6 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -10,3 +10,7 @@ !SELECT * FROM t WHERE a = ? AND b = ?;gibberish; !SHOW COLUMNS; !select a + 2 as b(spam, eggs) from B; +!WITH a AS SELECT 1 SELECT 1; +!WITH a AS (SELECT ) SELECT 1; +!WITH a AS (WITH b AS (SELECT 1) SELECT 1) SELECT 1; # We do not support nested WITH clauses +!WITH a AS (SELECT ) b AS (SELECT ) SELECT 1; # Missing comma between WITH descriptions \ No newline at end of file diff --git a/test/select_tests.cpp b/test/select_tests.cpp index d94ba89..5b96853 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -681,3 +681,60 @@ TEST(NoFromClause) { ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprLiteralInt); ASSERT_EQ(stmt->selectList->at(0)->expr2->type, kExprLiteralInt); } + + +TEST(WithClauseSingle) { + TEST_PARSE_SINGLE_SQL("WITH " + "a AS (SELECT name FROM peopleA)" + "SELECT name FROM a;", + kStmtSelect, + SelectStatement, + result, + stmt) + + // with_description_list – count + ASSERT_EQ(stmt->withDescriptions->size(), 1); + + // with_description – alias + ASSERT_STREQ(stmt->withDescriptions->at(0)->alias, "a"); + + // with_description – select stmt + ASSERT_EQ(stmt->withDescriptions->at(0)->select->selectList->size(), 1) + ASSERT_STREQ(stmt->withDescriptions->at(0)->select->selectList->at(0)->name, std::string("name")); + ASSERT_STREQ(stmt->withDescriptions->at(0)->select->fromTable->name, std::string("peopleA")); + + // main select + ASSERT_EQ(stmt->selectList->size(), 1); + ASSERT_STREQ(stmt->selectList->at(0)->name, "name"); + ASSERT_STREQ(stmt->fromTable->name, "a"); + +} + +TEST(WithClauseDouble) { + TEST_PARSE_SINGLE_SQL("WITH " + "a AS (SELECT nameA FROM peopleA), " + "b AS (SELECT nameB, cityB FROM peopleB) " + "SELECT nameA FROM a;", + kStmtSelect, + SelectStatement, + result, + stmt) + + // with_description_list – count + ASSERT_EQ(stmt->withDescriptions->size(), 2); + + // with_description – aliases + ASSERT_STREQ(stmt->withDescriptions->at(0)->alias, "a"); + ASSERT_STREQ(stmt->withDescriptions->at(1)->alias, "b"); + + // with_description – select stmts + ASSERT_EQ(stmt->withDescriptions->at(0)->select->selectList->size(), 1) + ASSERT_STREQ(stmt->withDescriptions->at(0)->select->fromTable->name, "peopleA"); + ASSERT_EQ(stmt->withDescriptions->at(1)->select->selectList->size(), 2) + ASSERT_STREQ(stmt->withDescriptions->at(1)->select->fromTable->name, "peopleB"); + + // main select + ASSERT_EQ(stmt->selectList->size(), 1); + ASSERT_STREQ(stmt->selectList->at(0)->name, "nameA"); + ASSERT_STREQ(stmt->fromTable->name, "a"); +} \ No newline at end of file