From 82e73f66d20219fa91b6354252ca773b22e5632e Mon Sep 17 00:00:00 2001 From: Moritz Eyssen Date: Tue, 22 May 2018 15:35:39 +0200 Subject: [PATCH] No FROM required (#94) --- src/parser/bison_parser.cpp | 1844 +++++++++++++++++----------------- src/parser/bison_parser.y | 8 +- test/queries/queries-bad.sql | 5 +- test/select_tests.cpp | 19 + 4 files changed, 964 insertions(+), 912 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 14b90bb..00bf90a 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -621,16 +621,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 52 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 568 +#define YYLAST 613 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 151 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 90 +#define YYNNTS 91 /* YYNRULES -- Number of rules. */ -#define YYNRULES 217 +#define YYNRULES 219 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 399 +#define YYNSTATES 400 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -696,21 +696,21 @@ static const yytype_uint16 yyrline[] = 452, 453, 454, 455, 465, 471, 477, 485, 486, 495, 504, 517, 524, 535, 536, 546, 555, 556, 560, 572, 573, 574, 591, 592, 596, 597, 601, 611, 628, 632, - 633, 634, 638, 639, 643, 655, 656, 660, 664, 669, - 670, 674, 679, 683, 684, 687, 688, 692, 693, 697, - 701, 702, 703, 709, 710, 714, 715, 716, 717, 718, - 719, 720, 721, 728, 729, 733, 734, 738, 748, 749, - 750, 751, 752, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 768, 769, 773, 774, 775, 776, 777, 781, - 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - 795, 796, 800, 801, 802, 803, 809, 810, 811, 812, - 816, 817, 821, 822, 826, 827, 828, 829, 830, 831, - 832, 836, 837, 841, 845, 849, 853, 854, 855, 856, - 860, 861, 862, 863, 867, 872, 873, 877, 881, 885, - 897, 898, 908, 909, 913, 914, 923, 924, 929, 940, - 949, 950, 955, 956, 961, 962, 966, 967, 972, 973, - 981, 989, 999, 1018, 1019, 1020, 1021, 1022, 1023, 1024, - 1025, 1026, 1027, 1032, 1041, 1042, 1047, 1048 + 633, 634, 638, 639, 643, 655, 656, 660, 664, 665, + 668, 673, 674, 678, 683, 687, 688, 691, 692, 696, + 697, 701, 705, 706, 707, 713, 714, 718, 719, 720, + 721, 722, 723, 724, 725, 732, 733, 737, 738, 742, + 752, 753, 754, 755, 756, 760, 761, 762, 763, 764, + 765, 766, 767, 768, 772, 773, 777, 778, 779, 780, + 781, 785, 786, 787, 788, 789, 790, 791, 792, 793, + 794, 795, 799, 800, 804, 805, 806, 807, 813, 814, + 815, 816, 820, 821, 825, 826, 830, 831, 832, 833, + 834, 835, 836, 840, 841, 845, 849, 853, 857, 858, + 859, 860, 864, 865, 866, 867, 871, 876, 877, 881, + 885, 889, 901, 902, 912, 913, 917, 918, 927, 928, + 933, 944, 953, 954, 959, 960, 965, 966, 970, 971, + 976, 977, 985, 993, 1003, 1022, 1023, 1024, 1025, 1026, + 1027, 1028, 1029, 1030, 1031, 1036, 1045, 1046, 1051, 1052 }; #endif @@ -748,15 +748,15 @@ static const char *const yytname[] = "opt_column_list", "update_statement", "update_clause_commalist", "update_clause", "select_statement", "select_with_paren", "select_paren_or_clause", "select_no_paren", "set_operator", "set_type", - "opt_all", "select_clause", "opt_distinct", "select_list", "from_clause", - "opt_where", "opt_group", "opt_having", "opt_order", "order_list", - "order_desc", "opt_order_type", "opt_top", "opt_limit", "expr_list", - "literal_list", "expr_alias", "expr", "operand", "scalar_expr", - "unary_expr", "binary_expr", "logic_expr", "in_expr", "case_expr", - "case_list", "exists_expr", "comp_expr", "function_expr", "array_expr", - "array_index", "between_expr", "column_name", "literal", - "string_literal", "num_literal", "int_literal", "null_literal", - "param_expr", "table_ref", "table_ref_atomic", + "opt_all", "select_clause", "opt_distinct", "select_list", + "opt_from_clause", "from_clause", "opt_where", "opt_group", "opt_having", + "opt_order", "order_list", "order_desc", "opt_order_type", "opt_top", + "opt_limit", "expr_list", "literal_list", "expr_alias", "expr", + "operand", "scalar_expr", "unary_expr", "binary_expr", "logic_expr", + "in_expr", "case_expr", "case_list", "exists_expr", "comp_expr", + "function_expr", "array_expr", "array_index", "between_expr", + "column_name", "literal", "string_literal", "num_literal", "int_literal", + "null_literal", "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", @@ -788,60 +788,60 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -294 +#define YYPACT_NINF -304 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-294))) + (!!((Yystate) == (-304))) -#define YYTABLE_NINF -213 +#define YYTABLE_NINF -215 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-213))) + (!!((Yytable_value) == (-215))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 236, 28, 43, 77, 97, -29, 42, 54, 75, 55, - 43, 29, 14, -35, 180, 47, -294, 73, 73, -294, - -294, -294, -294, -294, -294, -294, -294, -294, -294, 25, - -294, 36, 199, 56, -294, 65, 142, 117, 117, 43, - 121, 43, 234, 229, 139, -294, 138, 138, 43, -294, - 113, 114, -294, 236, -294, 171, -294, -294, -294, -294, - -294, -35, 155, 159, -35, 154, -294, 266, 7, 271, - 178, 43, 43, 226, -294, 213, 158, -294, -294, -294, - 182, 301, 273, 43, 43, -294, -294, -294, -294, 170, - -294, 249, -294, -294, -294, 182, 249, 234, 19, -294, - -294, -294, -294, -294, -294, -22, -294, -294, -294, -294, - -294, -294, -294, -294, 278, -55, 158, 182, -294, 317, - 321, 40, -32, 181, 81, 233, 185, 202, -294, 172, - 250, 186, -294, 4, 267, -294, -294, -294, -294, -294, - -294, -294, -294, -294, -294, -294, -294, -294, -294, 204, - -56, -294, -294, -294, -294, 333, 154, 188, -294, -49, - 154, -294, 292, 295, 297, -294, 7, -294, 232, 342, - 240, 62, 261, -294, -294, 20, 212, -294, 9, 15, - 309, 182, 61, -47, 214, 202, 377, 182, 210, 215, - -73, 13, 226, 182, -294, 182, 357, 182, -294, -294, - 202, -294, 202, -39, 217, 106, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 234, 182, 301, -294, 218, 24, -294, -294, 182, - -294, -294, -294, -294, 234, 234, 234, -294, 284, -15, - 78, -294, -35, 43, -294, 362, 7, -294, 182, -294, - -294, 221, 10, 32, 182, 182, -294, 309, 285, -107, - -294, -294, -35, -294, 220, -294, 223, -294, 5, -294, - 306, -294, -294, -294, 272, 323, 401, 202, 230, 172, - -294, 289, 237, 401, 401, 401, 401, 425, 425, 425, - 425, 210, 210, 50, 50, 50, 110, 238, 62, -294, - 7, -294, 333, -294, -294, -294, -294, 317, -294, -294, - -294, -294, -294, -294, 342, -294, -294, -294, 103, 115, - -294, 182, 182, -294, 109, 99, 241, -294, 242, 300, - -294, -294, -294, 322, 330, 331, 303, 13, 399, -294, - -294, -294, 299, -294, 202, 401, 172, 269, 119, -294, - -294, 137, -294, -294, -294, -294, -294, 62, 111, -294, - 182, -294, 5, 13, -294, -294, -294, 13, 351, 276, - 182, 377, 270, 151, -294, -294, -294, -294, 62, -294, - -294, -6, 321, -27, -294, -294, 279, 182, 152, 182, - -294, 16, 62, -294, -294, 62, 265, 277, -294 + 237, 26, 38, 64, 95, -33, 19, 53, 42, -9, + 38, -25, 15, -35, 136, -10, -304, 60, 60, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, 23, + -304, 9, 158, 33, -304, 51, 141, 81, 81, 38, + 107, 38, 220, 219, 121, -304, 125, 125, 38, -304, + 87, 105, -304, 237, -304, 172, -304, -304, -304, -304, + -304, -35, 159, 147, -35, -17, -304, 262, 7, 265, + 161, 38, 38, 206, -304, 205, 142, -304, -304, -304, + 173, 285, 253, 38, 38, -304, -304, -304, -304, 149, + -304, 235, -304, -304, -304, 173, 235, 220, 22, -304, + -304, -304, -304, -304, -304, -94, -304, -304, -304, -304, + -304, -304, -304, -304, 267, -60, 142, 173, -304, 305, + 310, 47, -58, 169, 116, 183, 176, 199, -304, 167, + 243, 178, -304, 4, 238, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, 190, + -56, -304, -304, -304, -304, 326, -17, 182, -304, -52, + -17, -304, 279, 286, 289, -304, 7, -304, 226, 336, + 227, -48, 255, -304, -304, -71, 198, -304, 14, 16, + 296, 173, -7, 96, 201, 199, 351, 173, 160, 204, + -72, 13, 206, -304, 173, -304, 173, 349, 173, -304, + -304, 199, -304, 199, -61, 208, 0, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 220, 173, 285, -304, 209, -18, -304, -304, + 173, -304, -304, -304, -304, 220, 220, 220, -304, 277, + -15, 46, -304, -35, 38, -304, 355, 7, -304, 173, + -304, -304, 213, 113, 130, 173, 173, -304, 296, 272, + -20, -304, -304, -35, -304, 322, -304, 212, -304, 12, + -304, 309, -304, -304, -304, 268, 297, 375, 199, 228, + 167, -304, 298, 246, 375, 375, 375, 375, 399, 399, + 399, 399, 160, 160, 40, 40, 40, -11, 242, -48, + -304, 7, -304, 326, -304, -304, -304, -304, 305, -304, + -304, -304, -304, -304, -304, 336, -304, -304, -304, 71, + 72, -304, 173, 173, -304, -63, 117, 249, -304, 251, + 306, -304, -304, -304, 330, 332, 333, 316, 13, 400, + -304, -304, -304, 290, -304, 199, 375, 167, 264, 91, + -304, -304, 100, -304, -304, -304, -304, -304, -48, 63, + -304, 173, -304, 12, 13, -304, -304, -304, 13, 325, + 269, 173, 351, 270, 101, -304, -304, -304, -304, -48, + -304, -304, 493, 310, -34, -304, -304, 273, 173, 129, + 173, -304, 17, -48, -304, -304, -48, 266, 271, -304 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -849,74 +849,76 @@ 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, 94, - 0, 0, 0, 0, 0, 215, 3, 18, 18, 16, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, + 0, 0, 0, 0, 0, 217, 3, 18, 18, 16, 9, 7, 10, 15, 12, 13, 11, 14, 8, 59, - 60, 86, 0, 190, 50, 25, 0, 36, 36, 0, - 0, 0, 0, 76, 0, 189, 48, 48, 0, 30, - 0, 0, 1, 214, 2, 0, 6, 5, 70, 71, - 69, 0, 73, 0, 0, 102, 46, 0, 0, 0, - 0, 0, 0, 80, 28, 0, 54, 177, 93, 75, + 60, 88, 0, 192, 50, 25, 0, 36, 36, 0, + 0, 0, 0, 76, 0, 191, 48, 48, 0, 30, + 0, 0, 1, 216, 2, 0, 6, 5, 70, 71, + 69, 0, 73, 0, 0, 104, 46, 0, 0, 0, + 0, 0, 0, 82, 28, 0, 54, 179, 95, 75, 0, 0, 0, 0, 0, 31, 63, 62, 4, 0, - 64, 86, 65, 72, 68, 0, 86, 0, 0, 66, - 191, 174, 175, 178, 179, 0, 105, 170, 171, 176, - 172, 173, 24, 23, 0, 0, 54, 0, 49, 0, - 0, 0, 166, 0, 0, 0, 0, 0, 168, 0, - 0, 77, 103, 199, 108, 115, 116, 117, 110, 112, - 118, 111, 129, 119, 120, 114, 109, 122, 123, 0, - 80, 56, 47, 44, 45, 0, 102, 85, 87, 92, - 102, 97, 99, 98, 95, 26, 0, 35, 0, 0, - 0, 79, 0, 29, 216, 0, 0, 52, 76, 0, - 0, 0, 0, 0, 0, 0, 125, 0, 124, 0, - 0, 0, 80, 0, 197, 0, 0, 0, 198, 107, - 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 88, 65, 72, 68, 0, 88, 0, 0, 66, + 193, 176, 177, 180, 181, 0, 107, 172, 173, 178, + 174, 175, 24, 23, 0, 0, 54, 0, 49, 0, + 0, 0, 168, 0, 0, 0, 0, 0, 170, 0, + 79, 77, 105, 201, 110, 117, 118, 119, 112, 114, + 120, 113, 131, 121, 122, 116, 111, 124, 125, 0, + 82, 56, 47, 44, 45, 0, 104, 87, 89, 94, + 104, 99, 101, 100, 97, 26, 0, 35, 0, 0, + 0, 81, 0, 29, 218, 0, 0, 52, 76, 0, + 0, 0, 0, 0, 0, 0, 127, 0, 126, 0, + 0, 0, 82, 78, 0, 199, 0, 0, 0, 200, + 109, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 21, 0, 19, 61, 0, - 91, 90, 89, 67, 0, 0, 0, 106, 0, 0, - 0, 37, 0, 0, 53, 0, 0, 161, 0, 167, - 169, 0, 0, 0, 0, 0, 148, 0, 0, 0, - 121, 113, 0, 78, 180, 182, 0, 184, 195, 183, - 82, 104, 140, 196, 141, 0, 136, 0, 0, 0, - 127, 0, 139, 138, 154, 155, 156, 157, 158, 159, - 160, 131, 130, 133, 132, 134, 135, 0, 58, 57, - 0, 17, 0, 88, 101, 100, 96, 0, 41, 42, - 43, 40, 39, 33, 0, 34, 27, 217, 0, 0, - 152, 0, 0, 146, 0, 0, 0, 163, 0, 0, - 211, 203, 209, 207, 210, 205, 0, 0, 0, 194, - 188, 192, 0, 74, 0, 137, 0, 0, 0, 128, - 164, 0, 20, 32, 38, 51, 162, 150, 0, 149, - 0, 153, 195, 0, 206, 208, 204, 0, 181, 196, - 0, 165, 0, 0, 144, 142, 22, 147, 151, 185, - 200, 212, 0, 84, 145, 143, 0, 0, 0, 0, - 81, 0, 213, 201, 193, 83, 166, 0, 202 + 0, 0, 0, 0, 0, 55, 21, 0, 19, 61, + 0, 93, 92, 91, 67, 0, 0, 0, 108, 0, + 0, 0, 37, 0, 0, 53, 0, 0, 163, 0, + 169, 171, 0, 0, 0, 0, 0, 150, 0, 0, + 0, 123, 115, 0, 80, 182, 184, 0, 186, 197, + 185, 84, 106, 142, 198, 143, 0, 138, 0, 0, + 0, 129, 0, 141, 140, 156, 157, 158, 159, 160, + 161, 162, 133, 132, 135, 134, 136, 137, 0, 58, + 57, 0, 17, 0, 90, 103, 102, 98, 0, 41, + 42, 43, 40, 39, 33, 0, 34, 27, 219, 0, + 0, 154, 0, 0, 148, 0, 0, 0, 165, 0, + 0, 213, 205, 211, 209, 212, 207, 0, 0, 0, + 196, 190, 194, 0, 74, 0, 139, 0, 0, 0, + 130, 166, 0, 20, 32, 38, 51, 164, 152, 0, + 151, 0, 155, 197, 0, 208, 210, 206, 0, 183, + 198, 0, 167, 0, 0, 146, 144, 22, 149, 153, + 187, 202, 214, 0, 86, 147, 145, 0, 0, 0, + 0, 83, 0, 215, 203, 195, 85, 168, 0, 204 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -294, -294, -294, 364, -294, 400, -294, 124, -294, -294, - -294, -294, -294, 120, -294, -294, 390, -294, 116, -294, - -294, 382, -294, -294, -294, 315, -294, -294, 211, -212, - 30, 371, -13, 405, -294, -294, 184, 262, -294, -294, - -123, -294, -294, 37, -294, 216, -294, -294, -121, -181, - -223, 246, -93, -68, -294, -294, -294, -294, -294, -294, - 260, -294, -294, -294, -294, -294, -294, 52, -65, -115, - -294, -37, -294, -294, -294, -293, 91, -294, -294, -294, - -1, -294, 82, 325, -294, -294, -294, -294, -294, 85 + -304, -304, -304, 366, -304, 410, -304, 126, -304, -304, + -304, -304, -304, 124, -304, -304, 403, -304, 127, -304, + -304, 396, -304, -304, -304, 329, -304, -304, 222, -200, + 20, 383, -13, 417, -304, -304, 163, 274, -304, -304, + -304, -106, -304, -304, 78, -304, 221, -304, -304, -49, + -181, -224, 256, -93, -68, -304, -304, -304, -304, -304, + -304, 275, -304, -304, -304, -304, -304, -304, 57, -65, + -115, -304, -37, -304, -304, -304, -303, 89, -304, -304, + -304, -1, -304, 92, 321, -304, -304, -304, -304, -304, + 73 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 14, 15, 16, 17, 56, 226, 227, 18, 113, - 19, 20, 75, 172, 21, 22, 71, 240, 241, 312, + -1, 14, 15, 16, 17, 56, 227, 228, 18, 113, + 19, 20, 75, 172, 21, 22, 71, 241, 242, 313, 23, 83, 24, 25, 26, 121, 27, 150, 151, 28, 29, 91, 30, 61, 62, 94, 31, 80, 130, 192, - 118, 343, 390, 65, 157, 158, 232, 43, 99, 131, - 105, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 183, 141, 142, 143, 144, 145, 146, 147, 148, 107, - 108, 109, 110, 111, 263, 264, 265, 266, 267, 44, - 268, 339, 340, 341, 199, 269, 336, 393, 54, 175 + 193, 118, 344, 391, 65, 157, 158, 233, 43, 99, + 131, 105, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 183, 141, 142, 143, 144, 145, 146, 147, 148, + 107, 108, 109, 110, 111, 264, 265, 266, 267, 268, + 44, 269, 340, 341, 342, 200, 270, 337, 394, 54, + 175 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -924,124 +926,134 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 51, 34, 159, 106, 173, 78, 259, 194, 194, 45, - 308, 101, 102, 77, 9, 389, 33, 117, 249, 396, - 329, 79, 309, 318, 171, 77, 168, 224, 230, 195, - 315, 182, 254, 48, 58, 228, 190, 327, 73, 233, - 76, 37, 193, 50, 368, 58, 33, 85, 197, 277, - 328, 255, 330, 195, 231, 32, 331, 186, 256, 188, - 161, 164, 332, 333, 59, 49, 386, 319, 38, 270, - 115, 116, 197, 261, 381, 59, 334, 351, 278, 310, - 35, 335, 153, 154, 122, 101, 102, 77, 252, 9, - 169, 90, 311, 223, 90, 176, 60, 103, 348, 46, - 36, 237, 272, 63, 274, 321, 195, 60, 177, 162, - 13, 322, 195, 178, 387, 179, 189, 186, 196, 338, - 163, 123, 193, 39, 165, 197, 47, 166, 156, 298, - 255, 197, 275, 160, 276, 40, 159, 323, 282, 283, + 51, 34, 159, 106, 173, 78, 260, 195, 390, 45, + 309, 101, 102, 77, 9, 195, 33, 117, 58, 250, + 397, 168, 310, 319, 171, 231, 79, 278, 77, 97, + 196, 182, 58, 50, 48, 369, 190, 37, 73, 196, + 76, 33, 360, 316, 225, 46, 98, 85, 59, 198, + 196, 232, 165, 32, 196, 166, 279, 186, 198, 188, + 161, 164, 59, 329, 38, 382, 49, 35, 320, 198, + 115, 116, 47, 198, 262, 245, 63, 352, 246, 311, + 60, 90, 153, 154, 90, 169, 271, 178, 253, 179, + 281, 181, 312, 224, 60, 196, 9, 103, 36, 349, + 39, 238, 176, 273, 42, 275, 196, 229, 177, 282, + 13, 234, 162, 207, 198, 194, 189, 186, 197, 122, + 101, 102, 77, 163, 328, 198, 339, 41, 302, 194, + 299, 303, 222, 276, 40, 277, 52, 159, 53, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 250, 128, 247, 124, 104, 262, 181, - 41, 324, 325, 195, 195, 373, 244, 251, 42, 245, - 301, 103, 55, 302, 206, 122, 101, 102, 77, 181, - 52, 106, 197, 197, 297, 122, 101, 102, 77, 383, - 125, 220, 173, 221, 360, 53, 280, 304, 305, 306, - 97, 195, 66, 67, 126, 122, 101, 102, 77, 345, - 68, 195, 123, 195, 359, 281, 377, 98, 127, 128, - 197, 9, 123, 69, 313, 74, 129, 314, 357, 358, - 197, 104, 197, 70, 206, 106, 122, 101, 102, 77, - 77, 79, 316, 1, 326, 92, 329, 124, 92, 355, - 81, 2, 166, 221, 82, 89, 93, 124, 3, 86, - 87, 356, 103, 4, 193, 375, 347, 378, 193, 100, - 5, 6, 103, 184, 95, 112, 371, 124, 330, 7, - 8, 125, 331, 376, 200, 9, 166, 114, 332, 333, - 10, 125, 103, 119, 392, 126, 395, 385, 394, 117, - 193, 245, 334, 120, 149, 126, -212, 335, 124, 127, - 128, 185, 201, 152, 11, 155, 63, 129, 167, 127, - 128, 101, 104, 103, 174, 126, 180, 129, 187, 12, - 222, 191, 104, 372, 206, 193, 225, 229, 234, 127, - 128, 235, 185, 236, 238, 239, 243, 129, 217, 218, - 219, 220, 104, 221, 242, 202, 126, 246, 9, 257, - 273, 260, 279, 300, 307, 317, 342, 320, 201, -186, - 127, 128, 337, 277, 195, 346, 203, 329, 129, 349, - 221, 13, 350, 104, 204, 205, 363, 361, 362, 367, - 364, 206, 207, 208, 209, 210, 211, 212, 365, 366, - 213, 214, 369, 215, 216, 217, 218, 219, 220, 330, - 221, 202, 179, 331, 370, 374, 384, 88, 57, 332, - 333, 382, 201, 398, 391, 344, 352, 353, 72, 84, - 354, 170, 258, 334, 299, 96, 64, -212, 335, 271, - 248, 205, 253, 397, 379, 303, 201, 206, 207, 208, - 209, 210, 211, 212, 380, 0, 213, 214, 198, 215, - 216, 217, 218, 219, 220, 202, 221, 388, 0, 0, - 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 258, 0, 0, -213, - 0, 0, 0, 0, 0, 205, 0, 0, 0, 0, - -187, 206, 207, 208, 209, 210, 211, 212, 0, 0, - 213, 214, 0, 215, 216, 217, 218, 219, 220, 205, - 221, 0, 0, 0, 0, 206, -213, -213, -213, -213, - 211, 212, 0, 0, 213, 214, 0, 215, 216, 217, - 218, 219, 220, 205, 221, 0, 0, 0, 0, 206, - 0, 0, 0, 0, -213, -213, 0, 0, -213, -213, - 0, 215, 216, 217, 218, 219, 220, 0, 221 + 294, 295, 296, 297, 251, 128, 123, 104, 263, 55, + 248, 66, 325, 326, 207, 196, 374, 252, 378, 156, + 122, 101, 102, 77, 160, 255, 122, 101, 102, 77, + 67, 221, 106, 222, 198, 298, 122, 101, 102, 77, + 384, 124, 314, 173, 256, 315, 68, 70, 305, 306, + 307, 257, 122, 101, 102, 77, 103, 123, 322, 323, + 346, 74, 361, 123, 181, 196, 9, 356, 357, 196, + 166, 194, 69, 184, 92, 125, 77, 92, 256, 358, + 359, 79, 81, 86, 198, 324, 106, 376, 198, 126, + 194, 82, 124, 317, 1, 327, 377, 386, 124, 166, + 194, 87, 2, 127, 128, 201, 89, 103, 124, 3, + 93, 129, 95, 103, 4, 100, 104, 348, 379, 112, + 114, 5, 6, 103, 124, 395, 125, 372, 246, 117, + 7, 8, 125, 202, 207, 119, 9, 120, 149, 103, + 126, 10, 185, 152, 155, 393, 126, 396, 218, 219, + 220, 221, 63, 222, 127, 128, 126, 167, 185, 101, + 127, 128, 129, 174, 180, 11, 223, 104, 129, 187, + 127, 128, 126, 104, 191, 235, 203, 194, 129, 226, + 12, 230, 236, 104, 373, 237, 127, 128, 239, 240, + 244, 243, 202, 247, 129, 9, 258, 204, 330, 104, + 261, 330, 274, 280, 301, 205, 206, 308, 318, 321, + 278, 338, 207, 208, 209, 210, 211, 212, 213, 343, + 196, 214, 215, 347, 216, 217, 218, 219, 220, 221, + 331, 222, 13, 331, 332, 203, 351, 332, 350, 222, + 333, 334, 364, 333, 334, 362, 202, 363, 365, 345, + 366, 367, 368, 370, 335, 371, 259, 335, -214, 336, + 375, -214, 336, 179, 383, 206, 385, 399, 392, 88, + 202, 207, 208, 209, 210, 211, 212, 213, 57, 353, + 214, 215, 354, 216, 217, 218, 219, 220, 221, 203, + 222, 72, 355, 84, 202, 170, 300, 96, 64, 398, + 272, 304, 249, 381, 199, 380, 389, 254, 0, 0, + 259, 0, 0, -215, 0, 0, 0, 0, 0, 206, + 0, -188, 0, 0, -189, 207, 208, 209, 210, 211, + 212, 213, 0, 0, 214, 215, 0, 216, 217, 218, + 219, 220, 221, 206, 222, 0, 0, 0, 0, 207, + -215, -215, -215, -215, 212, 213, 0, 0, 214, 215, + 0, 216, 217, 218, 219, 220, 221, 206, 222, 330, + 0, 0, 0, 207, 0, 0, 0, 0, -215, -215, + 0, 0, -215, -215, 0, 216, 217, 218, 219, 220, + 221, 0, 222, 0, 0, 0, 0, 0, 0, 0, + 0, 331, 0, 0, 0, 332, 0, 0, 0, 0, + 0, 333, 334, 0, 0, 387, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 335, 0, 0, 0, 0, + 336, 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, 0, + 0, 0, 0, 388 }; static const yytype_int16 yycheck[] = { - 13, 2, 95, 68, 119, 42, 187, 3, 3, 10, - 25, 4, 5, 6, 49, 42, 3, 73, 3, 3, - 26, 12, 37, 246, 117, 6, 81, 150, 77, 102, - 242, 124, 79, 19, 9, 156, 129, 144, 39, 160, - 41, 70, 149, 13, 337, 9, 3, 48, 121, 88, - 262, 98, 58, 102, 103, 27, 62, 125, 105, 127, - 97, 98, 68, 69, 39, 51, 72, 248, 97, 192, - 71, 72, 121, 146, 367, 39, 82, 300, 117, 94, - 3, 87, 83, 84, 3, 4, 5, 6, 181, 49, - 145, 61, 107, 149, 64, 55, 71, 90, 279, 70, - 3, 166, 195, 67, 197, 95, 102, 71, 121, 90, - 145, 79, 102, 145, 120, 147, 129, 185, 114, 114, - 101, 40, 149, 81, 146, 121, 97, 149, 91, 222, - 98, 121, 200, 96, 202, 81, 229, 105, 206, 207, + 13, 2, 95, 68, 119, 42, 187, 3, 42, 10, + 25, 4, 5, 6, 49, 3, 3, 73, 9, 3, + 3, 81, 37, 247, 117, 77, 12, 88, 6, 46, + 102, 124, 9, 13, 19, 338, 129, 70, 39, 102, + 41, 3, 105, 243, 150, 70, 63, 48, 39, 121, + 102, 103, 146, 27, 102, 149, 117, 125, 121, 127, + 97, 98, 39, 263, 97, 368, 51, 3, 249, 121, + 71, 72, 97, 121, 146, 146, 67, 301, 149, 94, + 71, 61, 83, 84, 64, 145, 192, 145, 181, 147, + 90, 98, 107, 149, 71, 102, 49, 90, 3, 280, + 81, 166, 55, 196, 113, 198, 102, 156, 121, 109, + 145, 160, 90, 124, 121, 149, 129, 185, 114, 3, + 4, 5, 6, 101, 144, 121, 114, 85, 146, 149, + 223, 149, 143, 201, 81, 203, 0, 230, 148, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 138, 138, 146, 75, 150, 145, 98, - 85, 254, 255, 102, 102, 346, 146, 180, 113, 149, - 146, 90, 99, 149, 124, 3, 4, 5, 6, 98, - 0, 246, 121, 121, 221, 3, 4, 5, 6, 370, - 109, 141, 307, 143, 95, 148, 90, 234, 235, 236, - 46, 102, 3, 147, 123, 3, 4, 5, 6, 277, - 145, 102, 40, 102, 105, 109, 105, 63, 137, 138, - 121, 49, 40, 81, 146, 104, 145, 149, 321, 322, - 121, 150, 121, 116, 124, 300, 3, 4, 5, 6, - 6, 12, 243, 7, 257, 61, 26, 75, 64, 146, - 111, 15, 149, 143, 116, 84, 101, 75, 22, 146, - 146, 146, 90, 27, 149, 146, 279, 360, 149, 3, - 34, 35, 90, 40, 115, 4, 344, 75, 58, 43, - 44, 109, 62, 146, 17, 49, 149, 109, 68, 69, - 54, 109, 90, 80, 387, 123, 389, 146, 146, 73, - 149, 149, 82, 145, 3, 123, 86, 87, 75, 137, - 138, 109, 45, 40, 78, 145, 67, 145, 40, 137, - 138, 4, 150, 90, 3, 123, 145, 145, 143, 93, - 126, 81, 150, 346, 124, 149, 3, 149, 46, 137, - 138, 46, 109, 46, 112, 3, 85, 145, 138, 139, - 140, 141, 150, 143, 114, 88, 123, 145, 49, 145, - 3, 146, 145, 145, 80, 3, 60, 146, 45, 149, - 137, 138, 149, 88, 102, 145, 109, 26, 145, 90, - 143, 145, 144, 150, 117, 118, 86, 146, 146, 86, - 68, 124, 125, 126, 127, 128, 129, 130, 68, 68, - 133, 134, 3, 136, 137, 138, 139, 140, 141, 58, - 143, 88, 147, 62, 115, 146, 146, 53, 18, 68, - 69, 145, 45, 146, 145, 102, 302, 307, 38, 47, - 314, 116, 109, 82, 223, 64, 31, 86, 87, 193, - 178, 118, 182, 391, 362, 229, 45, 124, 125, 126, - 127, 128, 129, 130, 363, -1, 133, 134, 133, 136, - 137, 138, 139, 140, 141, 88, 143, 382, -1, -1, - 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 109, -1, -1, 88, - -1, -1, -1, -1, -1, 118, -1, -1, -1, -1, - 149, 124, 125, 126, 127, 128, 129, 130, -1, -1, - 133, 134, -1, 136, 137, 138, 139, 140, 141, 118, - 143, -1, -1, -1, -1, 124, 125, 126, 127, 128, + 218, 219, 220, 221, 138, 138, 40, 150, 145, 99, + 146, 3, 255, 256, 124, 102, 347, 180, 105, 91, + 3, 4, 5, 6, 96, 79, 3, 4, 5, 6, + 147, 141, 247, 143, 121, 222, 3, 4, 5, 6, + 371, 75, 146, 308, 98, 149, 145, 116, 235, 236, + 237, 105, 3, 4, 5, 6, 90, 40, 95, 79, + 278, 104, 95, 40, 98, 102, 49, 146, 146, 102, + 149, 149, 81, 40, 61, 109, 6, 64, 98, 322, + 323, 12, 111, 146, 121, 105, 301, 146, 121, 123, + 149, 116, 75, 244, 7, 258, 146, 146, 75, 149, + 149, 146, 15, 137, 138, 17, 84, 90, 75, 22, + 101, 145, 115, 90, 27, 3, 150, 280, 361, 4, + 109, 34, 35, 90, 75, 146, 109, 345, 149, 73, + 43, 44, 109, 45, 124, 80, 49, 145, 3, 90, + 123, 54, 109, 40, 145, 388, 123, 390, 138, 139, + 140, 141, 67, 143, 137, 138, 123, 40, 109, 4, + 137, 138, 145, 3, 145, 78, 126, 150, 145, 143, + 137, 138, 123, 150, 81, 46, 88, 149, 145, 3, + 93, 149, 46, 150, 347, 46, 137, 138, 112, 3, + 85, 114, 45, 145, 145, 49, 145, 109, 26, 150, + 146, 26, 3, 145, 145, 117, 118, 80, 3, 146, + 88, 149, 124, 125, 126, 127, 128, 129, 130, 60, + 102, 133, 134, 145, 136, 137, 138, 139, 140, 141, + 58, 143, 145, 58, 62, 88, 144, 62, 90, 143, + 68, 69, 86, 68, 69, 146, 45, 146, 68, 102, + 68, 68, 86, 3, 82, 115, 109, 82, 86, 87, + 146, 86, 87, 147, 145, 118, 146, 146, 145, 53, + 45, 124, 125, 126, 127, 128, 129, 130, 18, 303, + 133, 134, 308, 136, 137, 138, 139, 140, 141, 88, + 143, 38, 315, 47, 45, 116, 224, 64, 31, 392, + 194, 230, 178, 364, 133, 363, 383, 182, -1, -1, + 109, -1, -1, 88, -1, -1, -1, -1, -1, 118, + -1, 149, -1, -1, 149, 124, 125, 126, 127, 128, 129, 130, -1, -1, 133, 134, -1, 136, 137, 138, 139, 140, 141, 118, 143, -1, -1, -1, -1, 124, - -1, -1, -1, -1, 129, 130, -1, -1, 133, 134, - -1, 136, 137, 138, 139, 140, 141, -1, 143 + 125, 126, 127, 128, 129, 130, -1, -1, 133, 134, + -1, 136, 137, 138, 139, 140, 141, 118, 143, 26, + -1, -1, -1, 124, -1, -1, -1, -1, 129, 130, + -1, -1, 133, 134, -1, 136, 137, 138, 139, 140, + 141, -1, 143, -1, -1, -1, -1, -1, -1, -1, + -1, 58, -1, -1, -1, 62, -1, -1, -1, -1, + -1, 68, 69, -1, -1, 72, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, + 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 120 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1051,43 +1063,43 @@ static const yytype_uint8 yystos[] = 0, 7, 15, 22, 27, 34, 35, 43, 44, 49, 54, 78, 93, 145, 152, 153, 154, 155, 159, 161, 162, 165, 166, 171, 173, 174, 175, 177, 180, 181, - 183, 187, 27, 3, 231, 3, 3, 70, 97, 81, - 81, 85, 113, 198, 230, 231, 70, 97, 19, 51, - 181, 183, 0, 148, 239, 99, 156, 156, 9, 39, - 71, 184, 185, 67, 184, 194, 3, 147, 145, 81, - 116, 167, 167, 231, 104, 163, 231, 6, 222, 12, - 188, 111, 116, 172, 172, 231, 146, 146, 154, 84, - 181, 182, 187, 101, 186, 115, 182, 46, 63, 199, - 3, 4, 5, 90, 150, 201, 219, 220, 221, 222, - 223, 224, 4, 160, 109, 231, 231, 73, 191, 80, + 183, 187, 27, 3, 232, 3, 3, 70, 97, 81, + 81, 85, 113, 199, 231, 232, 70, 97, 19, 51, + 181, 183, 0, 148, 240, 99, 156, 156, 9, 39, + 71, 184, 185, 67, 184, 195, 3, 147, 145, 81, + 116, 167, 167, 232, 104, 163, 232, 6, 223, 12, + 188, 111, 116, 172, 172, 232, 146, 146, 154, 84, + 181, 182, 187, 101, 186, 115, 182, 46, 63, 200, + 3, 4, 5, 90, 150, 202, 220, 221, 222, 223, + 224, 225, 4, 160, 109, 232, 232, 73, 192, 80, 145, 176, 3, 40, 75, 109, 123, 137, 138, 145, - 189, 200, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 212, 213, 214, 215, 216, 217, 218, 219, 3, - 178, 179, 40, 231, 231, 145, 194, 195, 196, 203, - 194, 222, 90, 101, 222, 146, 149, 40, 81, 145, - 176, 203, 164, 220, 3, 240, 55, 183, 145, 147, - 145, 98, 203, 211, 40, 109, 204, 143, 204, 183, - 203, 81, 190, 149, 3, 102, 114, 121, 234, 235, - 17, 45, 88, 109, 117, 118, 124, 125, 126, 127, - 128, 129, 130, 133, 134, 136, 137, 138, 139, 140, - 141, 143, 126, 149, 191, 3, 157, 158, 199, 149, - 77, 103, 197, 199, 46, 46, 46, 219, 112, 3, - 168, 169, 114, 85, 146, 149, 145, 146, 188, 3, - 138, 183, 203, 211, 79, 98, 105, 145, 109, 200, - 146, 146, 145, 225, 226, 227, 228, 229, 231, 236, - 191, 202, 203, 3, 203, 204, 204, 88, 117, 145, - 90, 109, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 222, 203, 179, - 145, 146, 149, 196, 222, 222, 222, 80, 25, 37, - 94, 107, 170, 146, 149, 180, 231, 3, 201, 200, - 146, 95, 79, 105, 203, 203, 183, 144, 180, 26, - 58, 62, 68, 69, 82, 87, 237, 149, 114, 232, - 233, 234, 60, 192, 102, 204, 145, 183, 200, 90, - 144, 201, 158, 164, 169, 146, 146, 203, 203, 105, - 95, 146, 146, 86, 68, 68, 68, 86, 226, 3, - 115, 204, 183, 200, 146, 146, 146, 105, 203, 233, - 227, 226, 145, 200, 146, 146, 72, 120, 240, 42, - 193, 145, 203, 238, 146, 203, 3, 218, 146 + 189, 201, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 213, 214, 215, 216, 217, 218, 219, 220, 3, + 178, 179, 40, 232, 232, 145, 195, 196, 197, 204, + 195, 223, 90, 101, 223, 146, 149, 40, 81, 145, + 176, 204, 164, 221, 3, 241, 55, 183, 145, 147, + 145, 98, 204, 212, 40, 109, 205, 143, 205, 183, + 204, 81, 190, 191, 149, 3, 102, 114, 121, 235, + 236, 17, 45, 88, 109, 117, 118, 124, 125, 126, + 127, 128, 129, 130, 133, 134, 136, 137, 138, 139, + 140, 141, 143, 126, 149, 192, 3, 157, 158, 200, + 149, 77, 103, 198, 200, 46, 46, 46, 220, 112, + 3, 168, 169, 114, 85, 146, 149, 145, 146, 188, + 3, 138, 183, 204, 212, 79, 98, 105, 145, 109, + 201, 146, 146, 145, 226, 227, 228, 229, 230, 232, + 237, 192, 203, 204, 3, 204, 205, 205, 88, 117, + 145, 90, 109, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 223, 204, + 179, 145, 146, 149, 197, 223, 223, 223, 80, 25, + 37, 94, 107, 170, 146, 149, 180, 232, 3, 202, + 201, 146, 95, 79, 105, 204, 204, 183, 144, 180, + 26, 58, 62, 68, 69, 82, 87, 238, 149, 114, + 233, 234, 235, 60, 193, 102, 205, 145, 183, 201, + 90, 144, 202, 158, 164, 169, 146, 146, 204, 204, + 105, 95, 146, 146, 86, 68, 68, 68, 86, 227, + 3, 115, 205, 183, 201, 146, 146, 146, 105, 204, + 234, 228, 227, 145, 201, 146, 146, 72, 120, 241, + 42, 194, 145, 204, 239, 146, 204, 3, 219, 146 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1100,21 +1112,21 @@ static const yytype_uint8 yyr1[] = 170, 170, 170, 170, 171, 171, 171, 172, 172, 173, 174, 175, 175, 176, 176, 177, 178, 178, 179, 180, 180, 180, 181, 181, 182, 182, 183, 183, 184, 185, - 185, 185, 186, 186, 187, 188, 188, 189, 190, 191, + 185, 185, 186, 186, 187, 188, 188, 189, 190, 190, 191, 192, 192, 193, 193, 194, 194, 195, 195, 196, - 197, 197, 197, 198, 198, 199, 199, 199, 199, 199, - 199, 199, 199, 200, 200, 201, 201, 202, 203, 203, - 203, 203, 203, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 205, 205, 206, 206, 206, 206, 206, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 208, 208, 209, 209, 209, 209, 210, 210, 210, 210, - 211, 211, 212, 212, 213, 213, 213, 213, 213, 213, - 213, 214, 214, 215, 216, 217, 218, 218, 218, 218, - 219, 219, 219, 219, 220, 221, 221, 222, 223, 224, - 225, 225, 226, 226, 227, 227, 228, 228, 229, 230, - 231, 231, 232, 232, 233, 233, 234, 234, 235, 235, - 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 238, 239, 239, 240, 240 + 196, 197, 198, 198, 198, 199, 199, 200, 200, 200, + 200, 200, 200, 200, 200, 201, 201, 202, 202, 203, + 204, 204, 204, 204, 204, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 206, 206, 207, 207, 207, 207, + 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 209, 209, 210, 210, 210, 210, 211, 211, + 211, 211, 212, 212, 213, 213, 214, 214, 214, 214, + 214, 214, 214, 215, 215, 216, 217, 218, 219, 219, + 219, 219, 220, 220, 220, 220, 221, 222, 222, 223, + 224, 225, 226, 226, 227, 227, 228, 228, 229, 229, + 230, 231, 232, 232, 233, 233, 234, 234, 235, 235, + 236, 236, 237, 237, 237, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 239, 240, 240, 241, 241 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1127,21 +1139,21 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 4, 4, 3, 2, 0, 4, 2, 8, 5, 3, 0, 5, 1, 3, 3, 1, 1, 5, 3, 3, 1, 1, 3, 5, 2, 1, - 1, 1, 1, 0, 7, 1, 0, 1, 2, 2, - 0, 4, 0, 2, 0, 3, 0, 1, 3, 2, - 1, 1, 0, 2, 0, 2, 4, 2, 2, 2, - 4, 4, 0, 1, 3, 1, 3, 2, 1, 1, - 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 1, 2, 2, 2, 3, 4, 1, - 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, - 3, 3, 5, 6, 5, 6, 4, 6, 3, 5, - 4, 5, 4, 5, 3, 3, 3, 3, 3, 3, - 3, 3, 5, 4, 4, 5, 1, 3, 1, 3, - 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, 1, 1, 0, 7, 1, 0, 1, 1, 0, + 2, 2, 0, 4, 0, 2, 0, 3, 0, 1, + 3, 2, 1, 1, 0, 2, 0, 2, 4, 2, + 2, 2, 4, 4, 0, 1, 3, 1, 3, 2, + 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 1, 2, 2, 2, 3, + 4, 1, 3, 3, 3, 3, 3, 3, 3, 4, + 3, 3, 3, 3, 5, 6, 5, 6, 4, 6, + 3, 5, 4, 5, 4, 5, 3, 3, 3, 3, + 3, 3, 3, 3, 5, 4, 4, 5, 1, 3, + 1, 3, 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 }; @@ -1640,25 +1652,25 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio case 3: /* IDENTIFIER */ #line 141 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1644 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1656 "bison_parser.cpp" /* yacc.c:1257 */ break; case 4: /* STRING */ #line 141 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1650 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1662 "bison_parser.cpp" /* yacc.c:1257 */ break; case 5: /* FLOATVAL */ #line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1656 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1668 "bison_parser.cpp" /* yacc.c:1257 */ break; case 6: /* INTVAL */ #line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1662 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1674 "bison_parser.cpp" /* yacc.c:1257 */ break; case 153: /* statement_list */ @@ -1671,19 +1683,19 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).stmt_vec)); } -#line 1675 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1687 "bison_parser.cpp" /* yacc.c:1257 */ break; case 154: /* statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1681 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1693 "bison_parser.cpp" /* yacc.c:1257 */ break; case 155: /* preparable_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1687 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1699 "bison_parser.cpp" /* yacc.c:1257 */ break; case 156: /* opt_hints */ @@ -1696,7 +1708,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1700 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1712 "bison_parser.cpp" /* yacc.c:1257 */ break; case 157: /* hint_list */ @@ -1709,67 +1721,67 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1713 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1725 "bison_parser.cpp" /* yacc.c:1257 */ break; case 158: /* hint */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1719 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1731 "bison_parser.cpp" /* yacc.c:1257 */ break; case 159: /* prepare_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).prep_stmt)); } -#line 1725 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1737 "bison_parser.cpp" /* yacc.c:1257 */ break; case 160: /* prepare_target_query */ #line 141 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1731 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1743 "bison_parser.cpp" /* yacc.c:1257 */ break; case 161: /* execute_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).exec_stmt)); } -#line 1737 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1749 "bison_parser.cpp" /* yacc.c:1257 */ break; case 162: /* import_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).import_stmt)); } -#line 1743 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1755 "bison_parser.cpp" /* yacc.c:1257 */ break; case 163: /* import_file_type */ #line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1749 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1761 "bison_parser.cpp" /* yacc.c:1257 */ break; case 164: /* file_path */ #line 141 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1755 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1767 "bison_parser.cpp" /* yacc.c:1257 */ break; case 165: /* show_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).show_stmt)); } -#line 1761 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1773 "bison_parser.cpp" /* yacc.c:1257 */ break; case 166: /* create_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).create_stmt)); } -#line 1767 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1779 "bison_parser.cpp" /* yacc.c:1257 */ break; case 167: /* opt_not_exists */ #line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1773 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1785 "bison_parser.cpp" /* yacc.c:1257 */ break; case 168: /* column_def_commalist */ @@ -1782,49 +1794,49 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).column_vec)); } -#line 1786 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1798 "bison_parser.cpp" /* yacc.c:1257 */ break; case 169: /* column_def */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).column_t)); } -#line 1792 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1804 "bison_parser.cpp" /* yacc.c:1257 */ break; case 170: /* column_type */ #line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1798 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1810 "bison_parser.cpp" /* yacc.c:1257 */ break; case 171: /* drop_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).drop_stmt)); } -#line 1804 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1816 "bison_parser.cpp" /* yacc.c:1257 */ break; case 172: /* opt_exists */ #line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1810 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1822 "bison_parser.cpp" /* yacc.c:1257 */ break; case 173: /* delete_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1816 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1828 "bison_parser.cpp" /* yacc.c:1257 */ break; case 174: /* truncate_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1822 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1834 "bison_parser.cpp" /* yacc.c:1257 */ break; case 175: /* insert_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).insert_stmt)); } -#line 1828 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1840 "bison_parser.cpp" /* yacc.c:1257 */ break; case 176: /* opt_column_list */ @@ -1837,13 +1849,13 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 1841 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1853 "bison_parser.cpp" /* yacc.c:1257 */ break; case 177: /* update_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_stmt)); } -#line 1847 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1859 "bison_parser.cpp" /* yacc.c:1257 */ break; case 178: /* update_clause_commalist */ @@ -1856,49 +1868,49 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).update_vec)); } -#line 1860 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1872 "bison_parser.cpp" /* yacc.c:1257 */ break; case 179: /* update_clause */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_t)); } -#line 1866 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1878 "bison_parser.cpp" /* yacc.c:1257 */ break; case 180: /* select_statement */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1872 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1884 "bison_parser.cpp" /* yacc.c:1257 */ break; case 181: /* select_with_paren */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1878 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1890 "bison_parser.cpp" /* yacc.c:1257 */ break; case 182: /* select_paren_or_clause */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1884 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1896 "bison_parser.cpp" /* yacc.c:1257 */ break; case 183: /* select_no_paren */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1890 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1902 "bison_parser.cpp" /* yacc.c:1257 */ break; case 187: /* select_clause */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1896 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1908 "bison_parser.cpp" /* yacc.c:1257 */ break; case 188: /* opt_distinct */ #line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1902 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1914 "bison_parser.cpp" /* yacc.c:1257 */ break; case 189: /* select_list */ @@ -1911,34 +1923,40 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1915 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 190: /* from_clause */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 1921 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 191: /* opt_where */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } #line 1927 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 192: /* opt_group */ + case 190: /* opt_from_clause */ #line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).group_t)); } + { delete (((*yyvaluep).table)); } #line 1933 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 193: /* opt_having */ + case 191: /* from_clause */ #line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } + { delete (((*yyvaluep).table)); } #line 1939 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 194: /* opt_order */ + case 192: /* opt_where */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 1945 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 193: /* opt_group */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).group_t)); } +#line 1951 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 194: /* opt_having */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 1957 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 195: /* opt_order */ #line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).order_vec)) != nullptr) { @@ -1948,10 +1966,10 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 1952 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1970 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 195: /* order_list */ + case 196: /* order_list */ #line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).order_vec)) != nullptr) { @@ -1961,34 +1979,34 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 1965 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 196: /* order_desc */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).order)); } -#line 1971 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 197: /* opt_order_type */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ - { } -#line 1977 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 198: /* opt_top */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).limit)); } #line 1983 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 199: /* opt_limit */ + case 197: /* order_desc */ #line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).limit)); } + { delete (((*yyvaluep).order)); } #line 1989 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 200: /* expr_list */ + case 198: /* opt_order_type */ +#line 139 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1995 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 199: /* opt_top */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).limit)); } +#line 2001 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 200: /* opt_limit */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).limit)); } +#line 2007 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 201: /* expr_list */ #line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -1998,10 +2016,10 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2002 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2020 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 201: /* literal_list */ + case 202: /* literal_list */ #line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -2011,166 +2029,166 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2015 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 202: /* expr_alias */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 2021 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 203: /* expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 2027 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 204: /* operand */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } #line 2033 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 205: /* scalar_expr */ + case 203: /* expr_alias */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2039 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 206: /* unary_expr */ + case 204: /* expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2045 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 207: /* binary_expr */ + case 205: /* operand */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2051 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 208: /* logic_expr */ + case 206: /* scalar_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2057 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 209: /* in_expr */ + case 207: /* unary_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2063 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 210: /* case_expr */ + case 208: /* binary_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2069 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 211: /* case_list */ + case 209: /* logic_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2075 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 212: /* exists_expr */ + case 210: /* in_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2081 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 213: /* comp_expr */ + case 211: /* case_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2087 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 214: /* function_expr */ + case 212: /* case_list */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2093 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 215: /* array_expr */ + case 213: /* exists_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2099 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 216: /* array_index */ + case 214: /* comp_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2105 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 217: /* between_expr */ + case 215: /* function_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2111 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 218: /* column_name */ + case 216: /* array_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2117 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 219: /* literal */ + case 217: /* array_index */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2123 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 220: /* string_literal */ + case 218: /* between_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2129 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 221: /* num_literal */ + case 219: /* column_name */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2135 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 222: /* int_literal */ + case 220: /* literal */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2141 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 223: /* null_literal */ + case 221: /* string_literal */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2147 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 224: /* param_expr */ + case 222: /* num_literal */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2153 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 225: /* table_ref */ + case 223: /* int_literal */ #line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + { delete (((*yyvaluep).expr)); } #line 2159 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 226: /* table_ref_atomic */ + case 224: /* null_literal */ #line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + { delete (((*yyvaluep).expr)); } #line 2165 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 227: /* nonjoin_table_ref_atomic */ + case 225: /* param_expr */ #line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + { delete (((*yyvaluep).expr)); } #line 2171 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 228: /* table_ref_commalist */ + case 226: /* table_ref */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2177 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 227: /* table_ref_atomic */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2183 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 228: /* nonjoin_table_ref_atomic */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2189 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 229: /* table_ref_commalist */ #line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).table_vec)) != nullptr) { @@ -2180,70 +2198,70 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).table_vec)); } -#line 2184 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 229: /* table_ref_name */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 2190 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 230: /* table_ref_name_no_alias */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 2196 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 231: /* table_name */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } #line 2202 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 232: /* table_alias */ + case 230: /* table_ref_name */ #line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).alias_t)); } + { delete (((*yyvaluep).table)); } #line 2208 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 233: /* opt_table_alias */ + case 231: /* table_ref_name_no_alias */ #line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).alias_t)); } + { delete (((*yyvaluep).table)); } #line 2214 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 234: /* alias */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).alias_t)); } + case 232: /* table_name */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } #line 2220 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 235: /* opt_alias */ + case 233: /* table_alias */ #line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).alias_t)); } #line 2226 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 236: /* join_clause */ + case 234: /* opt_table_alias */ #line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + { delete (((*yyvaluep).alias_t)); } #line 2232 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 237: /* opt_join_type */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ - { } + case 235: /* alias */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).alias_t)); } #line 2238 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 238: /* join_condition */ + case 236: /* opt_alias */ #line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } + { delete (((*yyvaluep).alias_t)); } #line 2244 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 240: /* ident_commalist */ + case 237: /* join_clause */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2250 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 238: /* opt_join_type */ +#line 139 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 2256 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 239: /* join_condition */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2262 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 241: /* ident_commalist */ #line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).str_vec)) != nullptr) { @@ -2253,7 +2271,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 2257 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2275 "bison_parser.cpp" /* yacc.c:1257 */ break; @@ -2372,7 +2390,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2376 "bison_parser.cpp" /* yacc.c:1429 */ +#line 2394 "bison_parser.cpp" /* yacc.c:1429 */ yylsp[0] = yylloc; goto yysetstate; @@ -2577,7 +2595,7 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 2581 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2599 "bison_parser.cpp" /* yacc.c:1646 */ break; case 3: @@ -2588,7 +2606,7 @@ yyreduce: (yyval.stmt_vec) = new std::vector(); (yyval.stmt_vec)->push_back((yyvsp[0].statement)); } -#line 2592 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2610 "bison_parser.cpp" /* yacc.c:1646 */ break; case 4: @@ -2599,7 +2617,7 @@ yyreduce: (yyvsp[-2].stmt_vec)->push_back((yyvsp[0].statement)); (yyval.stmt_vec) = (yyvsp[-2].stmt_vec); } -#line 2603 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2621 "bison_parser.cpp" /* yacc.c:1646 */ break; case 5: @@ -2608,7 +2626,7 @@ yyreduce: (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2612 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2630 "bison_parser.cpp" /* yacc.c:1646 */ break; case 6: @@ -2617,7 +2635,7 @@ yyreduce: (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2621 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2639 "bison_parser.cpp" /* yacc.c:1646 */ break; case 7: @@ -2625,85 +2643,85 @@ yyreduce: { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 2629 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2647 "bison_parser.cpp" /* yacc.c:1646 */ break; case 8: #line 300 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 2635 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2653 "bison_parser.cpp" /* yacc.c:1646 */ break; case 9: #line 301 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 2641 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2659 "bison_parser.cpp" /* yacc.c:1646 */ break; case 10: #line 302 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 2647 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2665 "bison_parser.cpp" /* yacc.c:1646 */ break; case 11: #line 303 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 2653 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2671 "bison_parser.cpp" /* yacc.c:1646 */ break; case 12: #line 304 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2659 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2677 "bison_parser.cpp" /* yacc.c:1646 */ break; case 13: #line 305 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2665 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2683 "bison_parser.cpp" /* yacc.c:1646 */ break; case 14: #line 306 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 2671 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2689 "bison_parser.cpp" /* yacc.c:1646 */ break; case 15: #line 307 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 2677 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2695 "bison_parser.cpp" /* yacc.c:1646 */ break; case 16: #line 308 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 2683 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2701 "bison_parser.cpp" /* yacc.c:1646 */ break; case 17: #line 317 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 2689 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2707 "bison_parser.cpp" /* yacc.c:1646 */ break; case 18: #line 318 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = nullptr; } -#line 2695 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2713 "bison_parser.cpp" /* yacc.c:1646 */ break; case 19: #line 323 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 2701 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2719 "bison_parser.cpp" /* yacc.c:1646 */ break; case 20: #line 324 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 2707 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2725 "bison_parser.cpp" /* yacc.c:1646 */ break; case 21: @@ -2712,7 +2730,7 @@ yyreduce: (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 2716 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2734 "bison_parser.cpp" /* yacc.c:1646 */ break; case 22: @@ -2722,7 +2740,7 @@ yyreduce: (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 2726 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2744 "bison_parser.cpp" /* yacc.c:1646 */ break; case 23: @@ -2732,7 +2750,7 @@ yyreduce: (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 2736 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2754 "bison_parser.cpp" /* yacc.c:1646 */ break; case 25: @@ -2741,7 +2759,7 @@ yyreduce: (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 2745 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2763 "bison_parser.cpp" /* yacc.c:1646 */ break; case 26: @@ -2751,7 +2769,7 @@ yyreduce: (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 2755 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2773 "bison_parser.cpp" /* yacc.c:1646 */ break; case 27: @@ -2762,19 +2780,19 @@ yyreduce: (yyval.import_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 2766 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2784 "bison_parser.cpp" /* yacc.c:1646 */ break; case 28: #line 379 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kImportCSV; } -#line 2772 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2790 "bison_parser.cpp" /* yacc.c:1646 */ break; case 29: #line 383 "bison_parser.y" /* yacc.c:1646 */ { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 2778 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2796 "bison_parser.cpp" /* yacc.c:1646 */ break; case 30: @@ -2782,7 +2800,7 @@ yyreduce: { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 2786 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2804 "bison_parser.cpp" /* yacc.c:1646 */ break; case 31: @@ -2792,7 +2810,7 @@ yyreduce: (yyval.show_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.show_stmt)->name = (yyvsp[0].table_name).name; } -#line 2796 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2814 "bison_parser.cpp" /* yacc.c:1646 */ break; case 32: @@ -2804,7 +2822,7 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-4].table_name).name; (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 2808 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2826 "bison_parser.cpp" /* yacc.c:1646 */ break; case 33: @@ -2816,7 +2834,7 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 2820 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2838 "bison_parser.cpp" /* yacc.c:1646 */ break; case 34: @@ -2829,31 +2847,31 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 2833 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2851 "bison_parser.cpp" /* yacc.c:1646 */ break; case 35: #line 435 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 2839 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2857 "bison_parser.cpp" /* yacc.c:1646 */ break; case 36: #line 436 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 2845 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2863 "bison_parser.cpp" /* yacc.c:1646 */ break; case 37: #line 440 "bison_parser.y" /* yacc.c:1646 */ { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 2851 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2869 "bison_parser.cpp" /* yacc.c:1646 */ break; case 38: #line 441 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 2857 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2875 "bison_parser.cpp" /* yacc.c:1646 */ break; case 39: @@ -2861,31 +2879,31 @@ yyreduce: { (yyval.column_t) = new ColumnDefinition((yyvsp[-1].sval), (ColumnDefinition::DataType) (yyvsp[0].uval)); } -#line 2865 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2883 "bison_parser.cpp" /* yacc.c:1646 */ break; case 40: #line 452 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2871 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2889 "bison_parser.cpp" /* yacc.c:1646 */ break; case 41: #line 453 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2877 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2895 "bison_parser.cpp" /* yacc.c:1646 */ break; case 42: #line 454 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::DOUBLE; } -#line 2883 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2901 "bison_parser.cpp" /* yacc.c:1646 */ break; case 43: #line 455 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::TEXT; } -#line 2889 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2907 "bison_parser.cpp" /* yacc.c:1646 */ break; case 44: @@ -2896,7 +2914,7 @@ yyreduce: (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 2900 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2918 "bison_parser.cpp" /* yacc.c:1646 */ break; case 45: @@ -2907,7 +2925,7 @@ yyreduce: (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 2911 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2929 "bison_parser.cpp" /* yacc.c:1646 */ break; case 46: @@ -2917,19 +2935,19 @@ yyreduce: (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 2921 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2939 "bison_parser.cpp" /* yacc.c:1646 */ break; case 47: #line 485 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 2927 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2945 "bison_parser.cpp" /* yacc.c:1646 */ break; case 48: #line 486 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 2933 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2951 "bison_parser.cpp" /* yacc.c:1646 */ break; case 49: @@ -2940,7 +2958,7 @@ yyreduce: (yyval.delete_stmt)->tableName = (yyvsp[-1].table_name).name; (yyval.delete_stmt)->expr = (yyvsp[0].expr); } -#line 2944 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2962 "bison_parser.cpp" /* yacc.c:1646 */ break; case 50: @@ -2950,7 +2968,7 @@ yyreduce: (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 2954 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2972 "bison_parser.cpp" /* yacc.c:1646 */ break; case 51: @@ -2962,7 +2980,7 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 2966 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2984 "bison_parser.cpp" /* yacc.c:1646 */ break; case 52: @@ -2974,19 +2992,19 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 2978 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2996 "bison_parser.cpp" /* yacc.c:1646 */ break; case 53: #line 535 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 2984 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3002 "bison_parser.cpp" /* yacc.c:1646 */ break; case 54: #line 536 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = nullptr; } -#line 2990 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3008 "bison_parser.cpp" /* yacc.c:1646 */ break; case 55: @@ -2997,19 +3015,19 @@ yyreduce: (yyval.update_stmt)->updates = (yyvsp[-1].update_vec); (yyval.update_stmt)->where = (yyvsp[0].expr); } -#line 3001 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3019 "bison_parser.cpp" /* yacc.c:1646 */ break; case 56: #line 555 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 3007 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3025 "bison_parser.cpp" /* yacc.c:1646 */ break; case 57: #line 556 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3013 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3031 "bison_parser.cpp" /* yacc.c:1646 */ break; case 58: @@ -3019,7 +3037,7 @@ yyreduce: (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3023 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3041 "bison_parser.cpp" /* yacc.c:1646 */ break; case 61: @@ -3038,19 +3056,19 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3042 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3060 "bison_parser.cpp" /* yacc.c:1646 */ break; case 62: #line 591 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3048 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3066 "bison_parser.cpp" /* yacc.c:1646 */ break; case 63: #line 592 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3054 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3072 "bison_parser.cpp" /* yacc.c:1646 */ break; case 66: @@ -3065,7 +3083,7 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3069 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3087 "bison_parser.cpp" /* yacc.c:1646 */ break; case 67: @@ -3084,7 +3102,7 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3088 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3106 "bison_parser.cpp" /* yacc.c:1646 */ break; case 74: @@ -3098,201 +3116,213 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 3102 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3120 "bison_parser.cpp" /* yacc.c:1646 */ break; case 75: #line 655 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 3108 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3126 "bison_parser.cpp" /* yacc.c:1646 */ break; case 76: #line 656 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 3114 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3132 "bison_parser.cpp" /* yacc.c:1646 */ break; case 78: #line 664 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = (yyvsp[0].table); } -#line 3120 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3138 "bison_parser.cpp" /* yacc.c:1646 */ break; case 79: -#line 669 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = (yyvsp[0].expr); } -#line 3126 "bison_parser.cpp" /* yacc.c:1646 */ +#line 665 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.table) = nullptr; } +#line 3144 "bison_parser.cpp" /* yacc.c:1646 */ break; case 80: -#line 670 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = nullptr; } -#line 3132 "bison_parser.cpp" /* yacc.c:1646 */ +#line 668 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.table) = (yyvsp[0].table); } +#line 3150 "bison_parser.cpp" /* yacc.c:1646 */ break; case 81: +#line 673 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 3156 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 82: #line 674 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = nullptr; } +#line 3162 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 83: +#line 678 "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 3142 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 82: -#line 679 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.group_t) = nullptr; } -#line 3148 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 83: -#line 683 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = (yyvsp[0].expr); } -#line 3154 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3172 "bison_parser.cpp" /* yacc.c:1646 */ break; case 84: -#line 684 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = nullptr; } -#line 3160 "bison_parser.cpp" /* yacc.c:1646 */ +#line 683 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.group_t) = nullptr; } +#line 3178 "bison_parser.cpp" /* yacc.c:1646 */ break; case 85: #line 687 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 3166 "bison_parser.cpp" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 3184 "bison_parser.cpp" /* yacc.c:1646 */ break; case 86: #line 688 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_vec) = nullptr; } -#line 3172 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 87: -#line 692 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 3178 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 88: -#line 693 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 3184 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 89: -#line 697 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } + { (yyval.expr) = nullptr; } #line 3190 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 90: -#line 701 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_type) = kOrderAsc; } + case 87: +#line 691 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_vec) = (yyvsp[0].order_vec); } #line 3196 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 91: -#line 702 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_type) = kOrderDesc; } + case 88: +#line 692 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_vec) = nullptr; } #line 3202 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 92: -#line 703 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_type) = kOrderAsc; } + case 89: +#line 696 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } #line 3208 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 93: -#line 709 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } + case 90: +#line 697 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } #line 3214 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 94: -#line 710 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } + case 91: +#line 701 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } #line 3220 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 95: -#line 714 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } + case 92: +#line 705 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_type) = kOrderAsc; } #line 3226 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 96: -#line 715 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription((yyvsp[-2].expr)->ival, (yyvsp[0].expr)->ival); delete (yyvsp[-2].expr); delete (yyvsp[0].expr); } + case 93: +#line 706 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_type) = kOrderDesc; } #line 3232 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 97: -#line 716 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } + case 94: +#line 707 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_type) = kOrderAsc; } #line 3238 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 98: -#line 717 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } + case 95: +#line 713 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } #line 3244 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 99: -#line 718 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } + case 96: +#line 714 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = nullptr; } #line 3250 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 100: -#line 719 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } + case 97: +#line 718 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } #line 3256 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 101: -#line 720 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } + case 98: +#line 719 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription((yyvsp[-2].expr)->ival, (yyvsp[0].expr)->ival); delete (yyvsp[-2].expr); delete (yyvsp[0].expr); } #line 3262 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 102: -#line 721 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } + case 99: +#line 720 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } #line 3268 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 103: -#line 728 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } + case 100: +#line 721 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = nullptr; } #line 3274 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 104: -#line 729 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } + case 101: +#line 722 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = nullptr; } #line 3280 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 105: -#line 733 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } + case 102: +#line 723 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } #line 3286 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 106: -#line 734 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } + case 103: +#line 724 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } #line 3292 "bison_parser.cpp" /* yacc.c:1646 */ break; + case 104: +#line 725 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = nullptr; } +#line 3298 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 105: +#line 732 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3304 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 106: +#line 733 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3310 "bison_parser.cpp" /* yacc.c:1646 */ + break; + case 107: +#line 737 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3316 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 108: #line 738 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3322 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 109: +#line 742 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -3300,361 +3330,361 @@ yyreduce: delete (yyvsp[0].alias_t); } } -#line 3304 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 113: -#line 756 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = (yyvsp[-1].expr); } -#line 3310 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 121: -#line 764 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 3316 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 124: -#line 773 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 3322 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 125: -#line 774 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 3328 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 126: -#line 775 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } #line 3334 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 127: -#line 776 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } + case 115: +#line 760 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[-1].expr); } #line 3340 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 128: -#line 777 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } + case 123: +#line 768 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } #line 3346 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 130: -#line 782 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } + case 126: +#line 777 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } #line 3352 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 131: -#line 783 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } + case 127: +#line 778 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } #line 3358 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 132: -#line 784 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } + case 128: +#line 779 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } #line 3364 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 133: -#line 785 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } + case 129: +#line 780 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } #line 3370 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 134: -#line 786 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } + case 130: +#line 781 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } #line 3376 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 135: -#line 787 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } + case 132: +#line 786 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } #line 3382 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 136: -#line 788 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } + case 133: +#line 787 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } #line 3388 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 137: -#line 789 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } + case 134: +#line 788 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } #line 3394 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 138: -#line 790 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } + case 135: +#line 789 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } #line 3400 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 139: -#line 791 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } + case 136: +#line 790 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } #line 3406 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 140: -#line 795 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } + case 137: +#line 791 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } #line 3412 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 141: -#line 796 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } + case 138: +#line 792 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } #line 3418 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 142: -#line 800 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } + case 139: +#line 793 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } #line 3424 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 143: -#line 801 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } + case 140: +#line 794 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } #line 3430 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 144: -#line 802 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } + case 141: +#line 795 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } #line 3436 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 145: -#line 803 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } + case 142: +#line 799 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } #line 3442 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 146: -#line 809 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } + case 143: +#line 800 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } #line 3448 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 147: -#line 810 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } + case 144: +#line 804 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } #line 3454 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 148: -#line 811 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } + case 145: +#line 805 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } #line 3460 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 149: -#line 812 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } + case 146: +#line 806 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } #line 3466 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 150: -#line 816 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } + case 147: +#line 807 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } #line 3472 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 151: -#line 817 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } + case 148: +#line 813 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } #line 3478 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 152: -#line 821 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } + case 149: +#line 814 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } #line 3484 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 153: -#line 822 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } + case 150: +#line 815 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } #line 3490 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 154: -#line 826 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } + case 151: +#line 816 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } #line 3496 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 155: -#line 827 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } + case 152: +#line 820 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } #line 3502 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 156: -#line 828 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } + case 153: +#line 821 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } #line 3508 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 157: -#line 829 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } + case 154: +#line 825 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } #line 3514 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 158: -#line 830 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } + case 155: +#line 826 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } #line 3520 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 159: -#line 831 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } + case 156: +#line 830 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } #line 3526 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 160: -#line 832 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } + case 157: +#line 831 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } #line 3532 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 161: -#line 836 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } + case 158: +#line 832 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } #line 3538 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 162: -#line 837 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } + case 159: +#line 833 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } #line 3544 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 163: -#line 841 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } + case 160: +#line 834 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } #line 3550 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 164: -#line 845 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } + case 161: +#line 835 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } #line 3556 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 165: -#line 849 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } + case 162: +#line 836 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } #line 3562 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 166: -#line 853 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } + case 163: +#line 840 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } #line 3568 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 167: -#line 854 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } + case 164: +#line 841 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } #line 3574 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 168: -#line 855 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeStar(); } + case 165: +#line 845 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } #line 3580 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 169: -#line 856 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } + case 166: +#line 849 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } #line 3586 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 174: -#line 867 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } + case 167: +#line 853 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } #line 3592 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 175: -#line 872 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } + case 168: +#line 857 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } #line 3598 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 177: -#line 877 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } + case 169: +#line 858 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } #line 3604 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 178: -#line 881 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeNullLiteral(); } + case 170: +#line 859 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeStar(); } #line 3610 "bison_parser.cpp" /* yacc.c:1646 */ break; + case 171: +#line 860 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } +#line 3616 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 176: +#line 871 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } +#line 3622 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 177: +#line 876 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } +#line 3628 "bison_parser.cpp" /* yacc.c:1646 */ + break; + case 179: +#line 881 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } +#line 3634 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 180: #line 885 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeNullLiteral(); } +#line 3640 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 181: +#line 889 "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 3620 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3650 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 181: -#line 898 "bison_parser.y" /* yacc.c:1646 */ + case 183: +#line 902 "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 3631 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3661 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 185: -#line 914 "bison_parser.y" /* yacc.c:1646 */ + case 187: +#line 918 "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 3642 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 186: -#line 923 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 3648 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 187: -#line 924 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 3654 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3672 "bison_parser.cpp" /* yacc.c:1646 */ break; case 188: -#line 929 "bison_parser.y" /* yacc.c:1646 */ +#line 927 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } +#line 3678 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 189: +#line 928 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } +#line 3684 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 190: +#line 933 "bison_parser.y" /* yacc.c:1646 */ { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -3662,63 +3692,63 @@ yyreduce: tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3666 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3696 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 189: -#line 940 "bison_parser.y" /* yacc.c:1646 */ + case 191: +#line 944 "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 3676 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 190: -#line 949 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} -#line 3682 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 191: -#line 950 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 3688 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 193: -#line 956 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 3694 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 195: -#line 962 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = nullptr; } -#line 3700 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 196: -#line 966 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } #line 3706 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 197: -#line 967 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } + case 192: +#line 953 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} #line 3712 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 199: -#line 973 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = nullptr; } + case 193: +#line 954 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } #line 3718 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 200: -#line 982 "bison_parser.y" /* yacc.c:1646 */ + case 195: +#line 960 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } +#line 3724 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 197: +#line 966 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = nullptr; } +#line 3730 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 198: +#line 970 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 3736 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 199: +#line 971 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 3742 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 201: +#line 977 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = nullptr; } +#line 3748 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 202: +#line 986 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3726,11 +3756,11 @@ yyreduce: (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 3730 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3760 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 201: -#line 990 "bison_parser.y" /* yacc.c:1646 */ + case 203: +#line 994 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3739,11 +3769,11 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 3743 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3773 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 202: -#line 1000 "bison_parser.y" /* yacc.c:1646 */ + case 204: +#line 1004 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3759,83 +3789,83 @@ yyreduce: (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 3763 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 203: -#line 1018 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinInner; } -#line 3769 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 204: -#line 1019 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinLeft; } -#line 3775 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 205: -#line 1020 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinLeft; } -#line 3781 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 206: -#line 1021 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinRight; } -#line 3787 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 207: -#line 1022 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinRight; } #line 3793 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 208: -#line 1023 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } + case 205: +#line 1022 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinInner; } #line 3799 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 209: -#line 1024 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } + case 206: +#line 1023 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinLeft; } #line 3805 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 210: -#line 1025 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } + case 207: +#line 1024 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinLeft; } #line 3811 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 211: -#line 1026 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinCross; } + case 208: +#line 1025 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinRight; } #line 3817 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 212: -#line 1027 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinInner; } + case 209: +#line 1026 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinRight; } #line 3823 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 216: -#line 1047 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } + case 210: +#line 1027 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } #line 3829 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 217: -#line 1048 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } + case 211: +#line 1028 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } #line 3835 "bison_parser.cpp" /* yacc.c:1646 */ break; + case 212: +#line 1029 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } +#line 3841 "bison_parser.cpp" /* yacc.c:1646 */ + break; -#line 3839 "bison_parser.cpp" /* yacc.c:1646 */ + case 213: +#line 1030 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinCross; } +#line 3847 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 214: +#line 1031 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinInner; } +#line 3853 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 218: +#line 1051 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } +#line 3859 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 219: +#line 1052 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } +#line 3865 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + +#line 3869 "bison_parser.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4070,7 +4100,7 @@ yyreturn: #endif return yyresult; } -#line 1051 "bison_parser.y" /* yacc.c:1906 */ +#line 1055 "bison_parser.y" /* yacc.c:1906 */ /********************************* ** Section 4: Additional C code diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 8e4fc00..799887b 100755 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -193,7 +193,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type file_path prepare_target_query %type opt_not_exists opt_exists opt_distinct %type import_file_type opt_join_type column_type -%type from_clause table_ref table_ref_atomic table_ref_name nonjoin_table_ref_atomic +%type
opt_from_clause from_clause table_ref table_ref_atomic table_ref_name nonjoin_table_ref_atomic %type
join_clause table_ref_name_no_alias %type expr operand scalar_expr unary_expr binary_expr logic_expr exists_expr %type function_expr between_expr expr_alias param_expr @@ -640,7 +640,7 @@ opt_all: ; select_clause: - SELECT opt_top opt_distinct select_list from_clause opt_where opt_group { + SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group { $$ = new SelectStatement(); $$->limit = $2; $$->selectDistinct = $3; @@ -660,6 +660,10 @@ select_list: expr_list ; +opt_from_clause: + from_clause { $$ = $1; } + | /* empty */ { $$ = nullptr; } + from_clause: FROM table_ref { $$ = $2; } ; diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index cf29f9d..220a246 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -4,10 +4,9 @@ ! !1 !gibberish; -!SELECT abc; -!CREATE TABLE "table" FROM TBL FILE 'students.tbl';SELECT 1 +!CREATE TABLE "table" FROM TBL FILE 'students.tbl';gibberish !CREATE TABLE "table" FROM TBL FILE 'students.tbl';1 !INSERT INTO test_table VALUESd (1, 2, 'test'); -!SELECT * FROM t WHERE a = ? AND b = ?;SELECT 1; +!SELECT * FROM t WHERE a = ? AND b = ?;gibberish; !SHOW COLUMNS; !select a + 2 as b(spam, eggs) from B; diff --git a/test/select_tests.cpp b/test/select_tests.cpp index 1ba3669..e09ebbd 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -542,3 +542,22 @@ TEST(SetLimitOffset) { ASSERT_EQ(stmt->limit->offset, kNoOffset); } +TEST(NoFromClause) { + TEST_PARSE_SINGLE_SQL( + "SELECT 1 + 2;", + kStmtSelect, + SelectStatement, + result, + stmt); + + ASSERT_TRUE(stmt->selectList); + ASSERT_FALSE(stmt->fromTable); + ASSERT_FALSE(stmt->whereClause); + ASSERT_FALSE(stmt->groupBy); + + ASSERT_EQ(stmt->selectList->size(), 1u); + ASSERT_EQ(stmt->selectList->at(0)->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprLiteralInt); + ASSERT_EQ(stmt->selectList->at(0)->expr2->type, kExprLiteralInt); +} +