diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index c9d213c..35be8d6 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -615,16 +615,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 48 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 457 +#define YYLAST 452 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 151 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 76 +#define YYNNTS 75 /* YYNRULES -- Number of rules. */ -#define YYNRULES 172 +#define YYNRULES 170 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 322 +#define YYNSTATES 315 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -699,8 +699,8 @@ static const yytype_uint16 yyrline[] = 713, 714, 718, 719, 720, 724, 729, 730, 734, 738, 742, 753, 754, 764, 765, 771, 776, 777, 782, 792, 800, 801, 806, 807, 811, 812, 820, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 846, 852, 856, 865, - 866, 871, 872 + 835, 836, 837, 838, 839, 840, 845, 854, 855, 860, + 861 }; #endif @@ -746,8 +746,8 @@ static const char *const yytname[] = "num_literal", "int_literal", "star_expr", "placeholder_expr", "table_ref", "table_ref_atomic", "table_ref_commalist", "table_ref_name", "table_ref_name_no_alias", "table_name", "alias", "opt_alias", - "join_clause", "opt_join_type", "join_table", "join_condition", - "opt_semicolon", "ident_commalist", YY_NULLPTR + "join_clause", "opt_join_type", "join_condition", "opt_semicolon", + "ident_commalist", YY_NULLPTR }; #endif @@ -775,53 +775,52 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -248 +#define YYPACT_NINF -242 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-248))) + (!!((Yystate) == (-242))) -#define YYTABLE_NINF -168 +#define YYTABLE_NINF -166 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-168))) + (!!((Yytable_value) == (-166))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 169, 1, 53, 68, 91, -57, 19, 45, 38, 15, - 53, 37, -37, 118, -7, -248, -248, -248, -248, -248, - -248, -248, -248, -248, -248, -248, -248, -248, -248, 66, - 140, 32, -248, 5, 43, 27, 27, 53, 50, 53, - 146, 154, 72, -248, 53, 53, 52, 59, -248, 169, - -248, -248, -248, 99, -248, -37, 156, -248, 216, 13, - 202, 169, 116, 53, 53, 161, -248, 158, 102, -248, - -248, -248, 46, 242, -248, -248, -248, -248, -248, 46, - 177, 177, 146, -248, -248, -248, -248, -248, -29, -248, - -248, -248, -248, -248, -248, -7, 215, -50, 102, 46, - -248, 256, 258, 55, -104, 120, 162, 63, 20, -248, - 96, 185, 119, -248, 4, 164, -248, -248, -248, -248, - -248, -248, -248, -248, -248, -248, -248, -248, -248, 144, - -54, -248, 122, -248, 105, 156, 156, 224, -248, 13, - 126, -248, 163, 274, 168, -69, 191, -248, -248, -26, - 145, -248, 154, 283, 236, 46, 149, 20, 257, 30, - 160, 6, 2, 161, 46, -248, 46, 302, 46, -248, - -248, 20, 20, 20, 20, 20, -61, 167, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 13, 242, -248, - 46, -248, -248, -248, -248, -248, 146, -248, -248, 223, - 25, -16, -248, -37, 53, -248, 320, 13, 46, -248, - 181, -63, 236, 234, -248, -248, -37, -248, 178, 153, - 8, -248, 367, 263, -248, -248, -248, 226, 273, 286, - 286, 184, 273, 20, 186, 96, 273, 286, 286, 30, - 30, 192, 192, 192, -248, -248, -248, -248, -248, 256, - -248, -248, -248, -248, -248, -248, 274, -248, -248, -248, - 7, 10, -248, 20, 193, 195, 2, -248, -248, -248, - -248, -248, 268, 269, 240, 227, -248, 20, 273, 96, - 198, 34, -248, -248, -248, -248, 225, -248, 8, -248, - 194, -248, -248, 3, 46, 257, 199, 60, -248, -248, - 20, 243, -248, 2, -37, -248, 211, -33, -248, -248, - 244, -248, 203, 46, 46, -248, -248, 8, -69, -248, - -69, -248 + 156, 24, 67, 103, 111, -42, 54, 57, 48, 6, + 67, -8, -26, 146, 11, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, 26, + 149, 31, -242, 63, 18, 61, 61, 67, 85, 67, + 190, 201, 114, -242, 67, 67, 95, 96, -242, 156, + -242, -242, -242, 126, -242, -26, 179, -242, 244, 23, + 160, 156, 151, 67, 67, 188, -242, 182, 131, -242, + -242, -242, 19, 271, -242, -242, -242, -242, -242, 19, + 205, 205, 190, -242, -242, -242, -242, -242, -94, -242, + -242, -242, -242, -242, -242, 11, 236, -31, 131, 19, + -242, 276, 281, 50, -9, 143, 186, 13, 37, -242, + 9, 204, 140, -242, 2, 120, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, 164, + -40, -242, 142, -242, -11, 179, 179, 248, -242, 23, + 144, -242, 184, 297, 187, -57, 213, -242, -242, -19, + 163, -242, 201, 305, 254, 19, 169, 37, 261, 124, + 170, 15, 3, 188, 19, -242, 19, 309, 19, -242, + -242, 37, 37, 37, 37, 37, -15, 178, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 23, 271, -242, + 19, -242, -242, -242, -242, -242, 190, -242, -242, 238, + 7, 34, -242, -26, 67, -242, 319, 23, 19, -242, + 180, 86, 254, 234, -242, -242, -26, -242, 303, -242, + 17, -242, 263, -242, -242, -242, 222, 274, 225, 225, + 181, 274, 37, 189, 9, 274, 225, 225, 124, 124, + 191, 191, 191, -242, -242, -242, -242, -242, 276, -242, + -242, -242, -242, -242, -242, 297, -242, -242, -242, 52, + 66, -242, 37, 185, 192, -242, -242, -242, -242, 259, + 262, 3, 247, -242, 219, -242, 37, 274, 9, 196, + 80, -242, -242, -242, -242, 212, -242, 17, -242, -242, + 206, 193, 3, 19, 261, 200, 93, -242, -242, 37, + -242, 3, 153, -34, -242, -242, 243, 206, 19, 19, + -242, -242, -57, -242, -57 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -830,20 +829,20 @@ static const yytype_int16 yypact[] = static const yytype_uint8 yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, - 0, 0, 0, 0, 170, 3, 6, 5, 15, 8, + 0, 0, 0, 0, 168, 3, 6, 5, 15, 8, 9, 14, 11, 12, 10, 13, 7, 48, 49, 70, 0, 150, 39, 18, 0, 27, 27, 0, 0, 0, - 0, 60, 0, 149, 0, 0, 0, 0, 1, 169, + 0, 60, 0, 149, 0, 0, 0, 0, 1, 167, 2, 56, 57, 0, 55, 0, 81, 37, 0, 0, 0, 0, 0, 0, 0, 64, 21, 0, 43, 138, 77, 59, 0, 0, 35, 36, 51, 50, 4, 0, 70, 70, 0, 52, 151, 135, 136, 140, 0, 84, - 132, 133, 137, 134, 16, 170, 0, 0, 43, 0, + 132, 133, 137, 134, 16, 168, 0, 0, 43, 0, 38, 0, 0, 0, 130, 0, 0, 0, 0, 139, 0, 0, 61, 82, 155, 87, 94, 95, 96, 89, 92, 91, 90, 104, 97, 88, 99, 101, 100, 0, 64, 45, 69, 71, 76, 81, 81, 79, 19, 0, - 0, 26, 0, 0, 0, 63, 0, 22, 171, 0, + 0, 26, 0, 0, 0, 63, 0, 22, 169, 0, 0, 41, 60, 0, 0, 0, 0, 0, 103, 102, 0, 0, 0, 64, 0, 153, 0, 0, 0, 154, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -851,43 +850,42 @@ static const yytype_uint8 yydefact[] = 0, 75, 74, 73, 54, 53, 0, 85, 17, 0, 0, 0, 28, 0, 0, 42, 0, 0, 0, 131, 0, 0, 0, 0, 98, 93, 0, 62, 141, 143, - 155, 145, 165, 66, 83, 113, 152, 114, 123, 126, - 127, 0, 111, 0, 0, 0, 122, 124, 125, 106, - 105, 108, 107, 109, 110, 47, 46, 72, 80, 0, - 32, 33, 34, 31, 30, 24, 0, 25, 20, 172, - 0, 0, 120, 0, 0, 0, 0, 148, 164, 163, - 157, 158, 162, 161, 0, 0, 58, 0, 112, 0, - 0, 0, 23, 29, 40, 128, 0, 121, 155, 146, - 142, 160, 159, 0, 0, 129, 0, 0, 117, 115, - 0, 154, 144, 0, 0, 167, 0, 68, 118, 116, - 0, 147, 0, 0, 0, 65, 119, 0, 168, 156, - 67, 166 + 155, 145, 66, 83, 113, 152, 114, 123, 126, 127, + 0, 111, 0, 0, 0, 122, 124, 125, 106, 105, + 108, 107, 109, 110, 47, 46, 72, 80, 0, 32, + 33, 34, 31, 30, 24, 0, 25, 20, 170, 0, + 0, 120, 0, 0, 0, 164, 163, 157, 158, 162, + 161, 0, 0, 148, 0, 58, 0, 112, 0, 0, + 0, 23, 29, 40, 128, 0, 121, 155, 160, 159, + 146, 142, 0, 0, 129, 0, 0, 117, 115, 0, + 144, 0, 165, 68, 118, 116, 0, 147, 0, 0, + 65, 119, 166, 156, 67 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -248, -248, 288, 298, 290, -248, -248, -248, -248, 106, - -248, 321, -248, 109, -248, -248, -248, -248, -248, 270, - -248, -248, 179, -189, 42, -12, -248, 311, 219, -248, - -248, -101, -248, -248, 176, -248, 197, -248, -248, -88, - -175, 182, 210, -78, -99, -248, -248, -248, -248, -248, - -248, -248, -248, -248, -248, -248, -46, -98, -248, -36, - -248, -248, -248, -246, -248, 82, -248, 0, -247, -192, - -248, -248, 83, -248, 289, -248 + -242, -242, 283, 307, 306, -242, -242, -242, -242, 109, + -242, 331, -242, 115, -242, -242, -242, -242, -242, 284, + -242, -242, 195, -93, 38, -12, -242, 329, 233, -242, + -242, -64, -242, -242, 87, -242, 198, -242, -242, 91, + -175, 194, 227, -78, -100, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -50, -98, -242, -36, + -242, -242, -242, -241, -242, -242, -242, 0, -242, -186, + -242, -242, -242, 291, -242 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 13, 14, 15, 16, 17, 18, 19, 67, 146, - 20, 63, 201, 202, 254, 21, 22, 23, 24, 103, + 20, 63, 201, 202, 253, 21, 22, 23, 24, 103, 25, 130, 131, 26, 27, 28, 55, 29, 72, 111, - 163, 100, 276, 315, 56, 132, 133, 193, 41, 83, + 163, 100, 275, 310, 56, 132, 133, 193, 41, 83, 112, 88, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 90, 91, 92, - 128, 93, 217, 218, 290, 219, 42, 220, 169, 170, - 221, 274, 222, 319, 50, 149 + 128, 93, 217, 218, 291, 219, 42, 220, 169, 170, + 221, 272, 313, 50, 149 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -895,102 +893,102 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 47, 134, 32, 147, 70, 31, 31, 165, 158, 159, - 43, 165, 314, 89, 257, 9, 35, 85, 86, 69, - 289, 145, 99, 104, 85, 86, 69, 265, 267, 189, - 233, 30, 161, 261, 142, 263, 166, 65, 152, 68, - 153, 301, 166, 36, 74, 75, 137, 194, 195, 104, - 85, 86, 69, 250, 46, 168, 31, 311, 158, 234, - 281, 168, 223, 97, 98, 251, 104, 85, 86, 69, - 321, 33, 228, 229, 230, 231, 232, 211, 51, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 225, 105, - 227, 151, 143, 197, 34, 188, 302, 80, 160, 104, - 85, 86, 69, 37, 297, 12, 156, 9, 52, 166, - 44, 166, 134, 150, 138, 312, 164, 205, 48, 307, - 139, 167, 252, 206, 106, 167, 39, 255, 168, 38, - 168, 40, 157, 256, 278, 253, 53, 45, 49, 105, - 54, 245, 210, 57, 216, 304, 62, 59, 9, 215, - 284, 147, 69, 285, 108, 109, 139, 66, 107, 164, - 248, 89, 110, 87, 286, 183, 184, 185, 186, 71, - 87, 171, 172, 173, 106, 157, 58, 299, 295, 1, - 108, 109, -167, 164, 174, 191, 73, 2, 110, 60, - 61, 171, 172, 173, 3, 76, 87, 108, 109, 4, - 264, 310, 77, 309, 258, 110, 5, 6, 107, 164, - 166, 192, 1, 87, -167, 7, 8, 79, -167, 84, - 2, 9, 82, 280, -167, -167, 10, 3, 96, 168, - 108, 109, 171, 172, 173, 318, 320, 99, 110, 5, - 6, 101, -167, -167, 102, 129, 87, 53, 7, 8, - 11, 171, 172, 173, 9, 175, 135, 136, 141, 10, - 85, 148, 154, 155, 171, 172, 173, 296, 164, 162, - 187, 190, -166, 196, 198, 175, 176, 200, 199, 204, - 171, 172, 173, 11, 177, 203, 209, 207, 9, 277, - 178, 212, 179, 180, -168, -168, 213, 181, 182, 183, - 184, 185, 186, 214, -166, 226, 249, 300, -166, 235, - 178, 12, 179, 180, -166, -166, 175, 181, 182, 183, - 184, 185, 186, 259, 262, 233, 275, 266, 279, 293, - 186, 166, -166, -166, 313, 175, 287, 213, 288, 291, - 292, 298, 308, 303, 12, 294, 317, 78, 175, 95, - 94, 178, 316, 179, 180, 282, 213, 64, 181, 182, - 183, 184, 185, 186, 175, 283, 81, 246, 144, 213, - 178, 208, 179, 180, 224, 305, 306, 181, 182, 183, - 184, 185, 186, 178, 140, 179, 180, 247, 0, 260, - 181, 182, 183, 184, 185, 186, 268, 0, 0, 178, - 0, 179, 180, 0, 0, 0, 181, 182, 183, 184, - 185, 186, 0, 0, -168, -168, 0, 0, 0, 181, - 182, 183, 184, 185, 186, 0, 0, 0, 269, 0, - 0, 0, 270, 0, 0, 0, 0, 0, 271, 272, + 47, 134, 32, 147, 70, 165, 31, 158, 159, 89, + 43, 309, 104, 85, 86, 69, 104, 85, 86, 69, + 165, 145, 104, 85, 86, 69, 9, 85, 86, 69, + 290, 35, 161, 260, 273, 249, 99, 65, 51, 68, + 104, 85, 86, 69, 74, 75, 137, 250, 166, 138, + 46, 302, 105, 142, 30, 139, 156, 158, 36, 280, + 307, 9, 105, 97, 98, 44, 189, 168, 52, 191, + 31, 227, 228, 229, 230, 231, 232, 211, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 106, 224, 197, + 226, 151, 45, 80, 166, 192, 53, 106, 160, 222, + 54, 300, 9, 296, 251, 233, 33, 166, 150, 188, + 256, 143, 134, 168, 34, 164, 12, 252, 303, 167, + 166, 107, 40, 264, 205, 157, 168, 171, 172, 173, + 206, 107, 277, 152, 167, 153, 39, 244, 37, 168, + 174, 38, 210, 108, 109, 216, 48, 108, 109, 157, + 147, 110, 57, 108, 109, 110, 49, 89, 215, 87, + 247, 110, 285, 87, 60, 61, 1, 135, 136, 87, + 1, 108, 109, 87, 2, 58, 294, 254, 2, 110, + 62, 3, 265, 255, 262, 3, 4, 87, 171, 172, + 173, 166, 66, 5, 6, 283, 69, 5, 6, 306, + 263, 139, 7, 8, 257, 59, 7, 8, 9, 284, + 168, 175, 9, 10, 266, 164, 71, 10, 267, 171, + 172, 173, 279, 298, 268, 269, 194, 195, 73, 164, + 312, 314, 176, -166, -166, 265, 305, 11, 76, 77, + 177, 11, 164, 270, 79, 82, 178, 84, 179, 180, + 171, 172, 173, 181, 182, 183, 184, 185, 186, 183, + 184, 185, 186, 96, 99, 101, 295, 266, 171, 172, + 173, 267, 175, 102, 129, 53, 308, 268, 269, 141, + 85, 171, 172, 173, 148, 154, 276, 155, 162, 164, + 187, 190, 198, 213, 299, -165, 270, 196, 12, 199, + 200, 204, 12, 175, 203, 207, 9, 178, 209, 179, + 180, 212, 225, 214, 181, 182, 183, 184, 185, 186, + 234, 248, 258, 261, 213, 232, 274, 166, 286, 186, + 288, 278, 265, 289, 175, 287, 292, 293, 178, 297, + 179, 180, 301, 304, 95, 181, 182, 183, 184, 185, + 186, 311, 175, -166, -166, 213, 78, 281, 181, 182, + 183, 184, 185, 186, 266, 175, 94, 64, 267, 178, + 282, 179, 180, 213, 268, 269, 181, 182, 183, 184, + 185, 186, 144, 245, 81, 208, 140, 178, 246, 179, + 180, 223, -165, 270, 181, 182, 183, 184, 185, 186, + 178, 259, 179, 180, 0, 0, 0, 181, 182, 183, + 184, 185, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 273 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 271 }; static const yytype_int16 yycheck[] = { - 12, 79, 2, 101, 40, 3, 3, 3, 107, 108, - 10, 3, 45, 59, 203, 52, 73, 4, 5, 6, - 266, 99, 76, 3, 4, 5, 6, 216, 220, 130, - 91, 30, 110, 208, 84, 98, 105, 37, 142, 39, - 144, 288, 105, 100, 44, 45, 82, 135, 136, 3, - 4, 5, 6, 28, 12, 124, 3, 303, 157, 120, - 235, 124, 163, 63, 64, 40, 3, 4, 5, 6, - 317, 3, 171, 172, 173, 174, 175, 155, 12, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 166, 43, - 168, 103, 142, 139, 3, 149, 288, 55, 110, 3, - 4, 5, 6, 84, 279, 142, 43, 52, 42, 105, - 73, 105, 190, 58, 143, 304, 149, 143, 0, 294, - 149, 117, 97, 149, 78, 117, 88, 143, 124, 84, - 124, 116, 112, 149, 233, 110, 70, 100, 145, 43, - 74, 187, 154, 3, 142, 142, 119, 142, 52, 143, - 143, 249, 6, 143, 134, 135, 149, 107, 112, 149, - 196, 207, 142, 150, 263, 135, 136, 137, 138, 15, - 150, 7, 8, 9, 78, 112, 144, 143, 277, 10, - 134, 135, 29, 149, 20, 80, 114, 18, 142, 146, - 147, 7, 8, 9, 25, 143, 150, 134, 135, 30, - 212, 300, 143, 143, 204, 142, 37, 38, 112, 149, - 105, 106, 10, 150, 61, 46, 47, 118, 65, 3, - 18, 52, 66, 235, 71, 72, 57, 25, 112, 124, - 134, 135, 7, 8, 9, 313, 314, 76, 142, 37, - 38, 83, 89, 90, 142, 3, 150, 70, 46, 47, - 81, 7, 8, 9, 52, 91, 80, 81, 43, 57, - 4, 3, 142, 101, 7, 8, 9, 279, 149, 84, - 126, 149, 29, 49, 148, 91, 112, 3, 115, 88, - 7, 8, 9, 81, 120, 117, 3, 142, 52, 105, - 126, 142, 128, 129, 8, 9, 112, 133, 134, 135, - 136, 137, 138, 143, 61, 3, 83, 82, 65, 142, - 126, 142, 128, 129, 71, 72, 91, 133, 134, 135, - 136, 137, 138, 3, 143, 91, 63, 149, 142, 89, - 138, 105, 89, 90, 123, 91, 143, 112, 143, 71, - 71, 143, 143, 149, 142, 118, 143, 49, 91, 61, - 60, 126, 108, 128, 129, 249, 112, 36, 133, 134, - 135, 136, 137, 138, 91, 256, 55, 188, 98, 112, - 126, 152, 128, 129, 164, 293, 293, 133, 134, 135, - 136, 137, 138, 126, 95, 128, 129, 190, -1, 207, - 133, 134, 135, 136, 137, 138, 29, -1, -1, 126, - -1, 128, 129, -1, -1, -1, 133, 134, 135, 136, - 137, 138, -1, -1, 128, 129, -1, -1, -1, 133, - 134, 135, 136, 137, 138, -1, -1, -1, 61, -1, - -1, -1, 65, -1, -1, -1, -1, -1, 71, 72, + 12, 79, 2, 101, 40, 3, 3, 107, 108, 59, + 10, 45, 3, 4, 5, 6, 3, 4, 5, 6, + 3, 99, 3, 4, 5, 6, 52, 4, 5, 6, + 271, 73, 110, 208, 220, 28, 76, 37, 12, 39, + 3, 4, 5, 6, 44, 45, 82, 40, 105, 143, + 12, 292, 43, 84, 30, 149, 43, 157, 100, 234, + 301, 52, 43, 63, 64, 73, 130, 124, 42, 80, + 3, 171, 172, 173, 174, 175, 91, 155, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 78, 166, 139, + 168, 103, 100, 55, 105, 106, 70, 78, 110, 163, + 74, 287, 52, 278, 97, 120, 3, 105, 58, 149, + 203, 142, 190, 124, 3, 149, 142, 110, 293, 117, + 105, 112, 116, 216, 143, 112, 124, 7, 8, 9, + 149, 112, 232, 142, 117, 144, 88, 187, 84, 124, + 20, 84, 154, 134, 135, 142, 0, 134, 135, 112, + 248, 142, 3, 134, 135, 142, 145, 207, 143, 150, + 196, 142, 262, 150, 146, 147, 10, 80, 81, 150, + 10, 134, 135, 150, 18, 144, 276, 143, 18, 142, + 119, 25, 29, 149, 98, 25, 30, 150, 7, 8, + 9, 105, 107, 37, 38, 143, 6, 37, 38, 299, + 212, 149, 46, 47, 204, 142, 46, 47, 52, 143, + 124, 91, 52, 57, 61, 149, 15, 57, 65, 7, + 8, 9, 234, 143, 71, 72, 135, 136, 114, 149, + 308, 309, 112, 8, 9, 29, 143, 81, 143, 143, + 120, 81, 149, 90, 118, 66, 126, 3, 128, 129, + 7, 8, 9, 133, 134, 135, 136, 137, 138, 135, + 136, 137, 138, 112, 76, 83, 278, 61, 7, 8, + 9, 65, 91, 142, 3, 70, 123, 71, 72, 43, + 4, 7, 8, 9, 3, 142, 105, 101, 84, 149, + 126, 149, 148, 112, 82, 89, 90, 49, 142, 115, + 3, 88, 142, 91, 117, 142, 52, 126, 3, 128, + 129, 142, 3, 143, 133, 134, 135, 136, 137, 138, + 142, 83, 3, 143, 112, 91, 63, 105, 143, 138, + 71, 142, 29, 71, 91, 143, 89, 118, 126, 143, + 128, 129, 149, 143, 61, 133, 134, 135, 136, 137, + 138, 108, 91, 128, 129, 112, 49, 248, 133, 134, + 135, 136, 137, 138, 61, 91, 60, 36, 65, 126, + 255, 128, 129, 112, 71, 72, 133, 134, 135, 136, + 137, 138, 98, 188, 55, 152, 95, 126, 190, 128, + 129, 164, 89, 90, 133, 134, 135, 136, 137, 138, + 126, 207, 128, 129, -1, -1, -1, 133, 134, 135, + 136, 137, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 90 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 149 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1002,7 +1000,7 @@ static const yytype_uint8 yystos[] = 161, 166, 167, 168, 169, 171, 174, 175, 176, 178, 30, 3, 218, 3, 3, 73, 100, 84, 84, 88, 116, 189, 217, 218, 73, 100, 175, 176, 0, 145, - 225, 12, 42, 70, 74, 177, 185, 3, 144, 142, + 224, 12, 42, 70, 74, 177, 185, 3, 144, 142, 146, 147, 119, 162, 162, 218, 107, 159, 218, 6, 210, 15, 179, 114, 218, 218, 143, 143, 154, 118, 175, 178, 66, 190, 3, 4, 5, 150, 192, 207, @@ -1011,7 +1009,7 @@ static const yytype_uint8 yystos[] = 142, 180, 191, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 211, 3, 172, 173, 186, 187, 194, 185, 185, 210, 143, 149, - 225, 43, 84, 142, 170, 194, 160, 208, 3, 226, + 224, 43, 84, 142, 170, 194, 160, 208, 3, 225, 58, 176, 142, 144, 142, 101, 43, 112, 195, 195, 176, 194, 84, 181, 149, 3, 105, 117, 124, 219, 220, 7, 8, 9, 20, 91, 112, 120, 126, 128, @@ -1019,17 +1017,16 @@ static const yytype_uint8 yystos[] = 149, 80, 106, 188, 190, 190, 49, 207, 148, 115, 3, 163, 164, 117, 88, 143, 149, 142, 179, 3, 176, 194, 142, 112, 143, 143, 142, 213, 214, 216, - 218, 221, 223, 182, 193, 194, 3, 194, 195, 195, - 195, 195, 195, 91, 120, 142, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 207, 173, 187, 210, 83, - 28, 40, 97, 110, 165, 143, 149, 174, 218, 3, - 192, 191, 143, 98, 176, 174, 149, 220, 29, 61, - 65, 71, 72, 90, 222, 63, 183, 105, 195, 142, - 176, 191, 160, 164, 143, 143, 195, 143, 143, 214, - 215, 71, 71, 89, 118, 195, 176, 191, 143, 143, - 82, 219, 220, 149, 142, 216, 223, 191, 143, 143, - 195, 214, 174, 123, 45, 184, 108, 143, 194, 224, - 194, 219 + 218, 221, 182, 193, 194, 3, 194, 195, 195, 195, + 195, 195, 91, 120, 142, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 207, 173, 187, 210, 83, 28, + 40, 97, 110, 165, 143, 149, 174, 218, 3, 192, + 191, 143, 98, 176, 174, 29, 61, 65, 71, 72, + 90, 149, 222, 220, 63, 183, 105, 195, 142, 176, + 191, 160, 164, 143, 143, 195, 143, 143, 71, 71, + 214, 215, 89, 118, 195, 176, 191, 143, 143, 82, + 220, 149, 214, 191, 143, 143, 195, 214, 123, 45, + 184, 108, 194, 223, 194 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1051,8 +1048,8 @@ static const yytype_uint8 yyr1[] = 206, 206, 207, 207, 207, 208, 209, 209, 210, 211, 212, 213, 213, 214, 214, 214, 215, 215, 216, 217, 218, 218, 219, 219, 220, 220, 221, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 223, 223, 224, 225, - 225, 226, 226 + 222, 222, 222, 222, 222, 222, 223, 224, 224, 225, + 225 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1074,8 +1071,8 @@ static const yytype_uint8 yyr2[] = 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, 3, 2, 1, 1, 3, 2, 1, 1, 0, 6, 1, 1, 2, - 2, 1, 1, 1, 1, 0, 4, 1, 1, 1, - 0, 1, 3 + 2, 1, 1, 1, 1, 0, 1, 1, 0, 1, + 3 }; @@ -1574,43 +1571,43 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio case 3: /* IDENTIFIER */ #line 137 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1578 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1575 "bison_parser.cpp" /* yacc.c:1257 */ break; case 4: /* STRING */ #line 137 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1584 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1581 "bison_parser.cpp" /* yacc.c:1257 */ break; case 5: /* FLOATVAL */ #line 136 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1590 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1587 "bison_parser.cpp" /* yacc.c:1257 */ break; case 6: /* INTVAL */ #line 136 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1596 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1593 "bison_parser.cpp" /* yacc.c:1257 */ break; case 7: /* NOTEQUALS */ #line 136 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1602 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1599 "bison_parser.cpp" /* yacc.c:1257 */ break; case 8: /* LESSEQ */ #line 136 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1608 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1605 "bison_parser.cpp" /* yacc.c:1257 */ break; case 9: /* GREATEREQ */ #line 136 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1614 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1611 "bison_parser.cpp" /* yacc.c:1257 */ break; case 153: /* statement_list */ @@ -1623,61 +1620,61 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).stmt_vec)); } -#line 1627 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1624 "bison_parser.cpp" /* yacc.c:1257 */ break; case 154: /* statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1633 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1630 "bison_parser.cpp" /* yacc.c:1257 */ break; case 155: /* preparable_statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1639 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1636 "bison_parser.cpp" /* yacc.c:1257 */ break; case 156: /* prepare_statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).prep_stmt)); } -#line 1645 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1642 "bison_parser.cpp" /* yacc.c:1257 */ break; case 157: /* execute_statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).exec_stmt)); } -#line 1651 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1648 "bison_parser.cpp" /* yacc.c:1257 */ break; case 158: /* import_statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).import_stmt)); } -#line 1657 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1654 "bison_parser.cpp" /* yacc.c:1257 */ break; case 159: /* import_file_type */ #line 136 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1663 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1660 "bison_parser.cpp" /* yacc.c:1257 */ break; case 160: /* file_path */ #line 137 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1669 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1666 "bison_parser.cpp" /* yacc.c:1257 */ break; case 161: /* create_statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).create_stmt)); } -#line 1675 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1672 "bison_parser.cpp" /* yacc.c:1257 */ break; case 162: /* opt_not_exists */ #line 136 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1681 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1678 "bison_parser.cpp" /* yacc.c:1257 */ break; case 163: /* column_def_commalist */ @@ -1690,43 +1687,43 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).column_vec)); } -#line 1694 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1691 "bison_parser.cpp" /* yacc.c:1257 */ break; case 164: /* column_def */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).column_t)); } -#line 1700 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1697 "bison_parser.cpp" /* yacc.c:1257 */ break; case 165: /* column_type */ #line 136 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1706 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1703 "bison_parser.cpp" /* yacc.c:1257 */ break; case 166: /* drop_statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).drop_stmt)); } -#line 1712 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1709 "bison_parser.cpp" /* yacc.c:1257 */ break; case 167: /* delete_statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1718 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1715 "bison_parser.cpp" /* yacc.c:1257 */ break; case 168: /* truncate_statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1724 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1721 "bison_parser.cpp" /* yacc.c:1257 */ break; case 169: /* insert_statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).insert_stmt)); } -#line 1730 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1727 "bison_parser.cpp" /* yacc.c:1257 */ break; case 170: /* opt_column_list */ @@ -1739,13 +1736,13 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 1743 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1740 "bison_parser.cpp" /* yacc.c:1257 */ break; case 171: /* update_statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_stmt)); } -#line 1749 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1746 "bison_parser.cpp" /* yacc.c:1257 */ break; case 172: /* update_clause_commalist */ @@ -1758,43 +1755,43 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).update_vec)); } -#line 1762 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1759 "bison_parser.cpp" /* yacc.c:1257 */ break; case 173: /* update_clause */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_t)); } -#line 1768 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1765 "bison_parser.cpp" /* yacc.c:1257 */ break; case 174: /* select_statement */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1774 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1771 "bison_parser.cpp" /* yacc.c:1257 */ break; case 175: /* select_with_paren */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1780 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1777 "bison_parser.cpp" /* yacc.c:1257 */ break; case 176: /* select_no_paren */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1786 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1783 "bison_parser.cpp" /* yacc.c:1257 */ break; case 178: /* select_clause */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1792 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1789 "bison_parser.cpp" /* yacc.c:1257 */ break; case 179: /* opt_distinct */ #line 136 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1798 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1795 "bison_parser.cpp" /* yacc.c:1257 */ break; case 180: /* select_list */ @@ -1807,31 +1804,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1811 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1808 "bison_parser.cpp" /* yacc.c:1257 */ break; case 181: /* from_clause */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 1817 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1814 "bison_parser.cpp" /* yacc.c:1257 */ break; case 182: /* opt_where */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1823 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1820 "bison_parser.cpp" /* yacc.c:1257 */ break; case 183: /* opt_group */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).group_t)); } -#line 1829 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1826 "bison_parser.cpp" /* yacc.c:1257 */ break; case 184: /* opt_having */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1835 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1832 "bison_parser.cpp" /* yacc.c:1257 */ break; case 185: /* opt_order */ @@ -1844,7 +1841,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 1848 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1845 "bison_parser.cpp" /* yacc.c:1257 */ break; case 186: /* order_list */ @@ -1857,31 +1854,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 1861 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1858 "bison_parser.cpp" /* yacc.c:1257 */ break; case 187: /* order_desc */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).order)); } -#line 1867 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1864 "bison_parser.cpp" /* yacc.c:1257 */ break; case 188: /* opt_order_type */ #line 136 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1873 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1870 "bison_parser.cpp" /* yacc.c:1257 */ break; case 189: /* opt_top */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).limit)); } -#line 1879 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1876 "bison_parser.cpp" /* yacc.c:1257 */ break; case 190: /* opt_limit */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).limit)); } -#line 1885 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1882 "bison_parser.cpp" /* yacc.c:1257 */ break; case 191: /* expr_list */ @@ -1894,7 +1891,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1898 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1895 "bison_parser.cpp" /* yacc.c:1257 */ break; case 192: /* literal_list */ @@ -1907,139 +1904,139 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1911 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1908 "bison_parser.cpp" /* yacc.c:1257 */ break; case 193: /* expr_alias */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1917 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1914 "bison_parser.cpp" /* yacc.c:1257 */ break; case 194: /* expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1923 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1920 "bison_parser.cpp" /* yacc.c:1257 */ break; case 195: /* operand */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1929 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1926 "bison_parser.cpp" /* yacc.c:1257 */ break; case 196: /* scalar_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1935 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1932 "bison_parser.cpp" /* yacc.c:1257 */ break; case 197: /* unary_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1941 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1938 "bison_parser.cpp" /* yacc.c:1257 */ break; case 198: /* binary_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1947 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1944 "bison_parser.cpp" /* yacc.c:1257 */ break; case 199: /* logic_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1953 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1950 "bison_parser.cpp" /* yacc.c:1257 */ break; case 200: /* in_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1959 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1956 "bison_parser.cpp" /* yacc.c:1257 */ break; case 201: /* case_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1965 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1962 "bison_parser.cpp" /* yacc.c:1257 */ break; case 202: /* exists_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1971 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1968 "bison_parser.cpp" /* yacc.c:1257 */ break; case 203: /* comp_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1977 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1974 "bison_parser.cpp" /* yacc.c:1257 */ break; case 204: /* function_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1983 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1980 "bison_parser.cpp" /* yacc.c:1257 */ break; case 205: /* between_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1989 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1986 "bison_parser.cpp" /* yacc.c:1257 */ break; case 206: /* column_name */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1995 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1992 "bison_parser.cpp" /* yacc.c:1257 */ break; case 207: /* literal */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2001 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1998 "bison_parser.cpp" /* yacc.c:1257 */ break; case 208: /* string_literal */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2007 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2004 "bison_parser.cpp" /* yacc.c:1257 */ break; case 209: /* num_literal */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2013 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2010 "bison_parser.cpp" /* yacc.c:1257 */ break; case 210: /* int_literal */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2019 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2016 "bison_parser.cpp" /* yacc.c:1257 */ break; case 211: /* star_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2025 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2022 "bison_parser.cpp" /* yacc.c:1257 */ break; case 212: /* placeholder_expr */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2031 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2028 "bison_parser.cpp" /* yacc.c:1257 */ break; case 213: /* table_ref */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2037 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2034 "bison_parser.cpp" /* yacc.c:1257 */ break; case 214: /* table_ref_atomic */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2043 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2040 "bison_parser.cpp" /* yacc.c:1257 */ break; case 215: /* table_ref_commalist */ @@ -2052,64 +2049,58 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).table_vec)); } -#line 2056 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2053 "bison_parser.cpp" /* yacc.c:1257 */ break; case 216: /* table_ref_name */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2062 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2059 "bison_parser.cpp" /* yacc.c:1257 */ break; case 217: /* table_ref_name_no_alias */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2068 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2065 "bison_parser.cpp" /* yacc.c:1257 */ break; case 218: /* table_name */ #line 137 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 2074 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2071 "bison_parser.cpp" /* yacc.c:1257 */ break; case 219: /* alias */ #line 137 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 2080 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2077 "bison_parser.cpp" /* yacc.c:1257 */ break; case 220: /* opt_alias */ #line 137 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 2086 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2083 "bison_parser.cpp" /* yacc.c:1257 */ break; case 221: /* join_clause */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2092 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2089 "bison_parser.cpp" /* yacc.c:1257 */ break; case 222: /* opt_join_type */ #line 136 "bison_parser.y" /* yacc.c:1257 */ { } -#line 2098 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2095 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 223: /* join_table */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 2104 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 224: /* join_condition */ + case 223: /* join_condition */ #line 146 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2110 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2101 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 226: /* ident_commalist */ + case 225: /* ident_commalist */ #line 138 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).str_vec)) != NULL) { @@ -2119,7 +2110,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 2123 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2114 "bison_parser.cpp" /* yacc.c:1257 */ break; @@ -2238,7 +2229,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.placeholder_id = 0; } -#line 2242 "bison_parser.cpp" /* yacc.c:1429 */ +#line 2233 "bison_parser.cpp" /* yacc.c:1429 */ yylsp[0] = yylloc; goto yysetstate; @@ -2433,19 +2424,19 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 2437 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2428 "bison_parser.cpp" /* yacc.c:1646 */ break; case 3: #line 251 "bison_parser.y" /* yacc.c:1646 */ { (yyval.stmt_vec) = new std::vector(); (yyval.stmt_vec)->push_back((yyvsp[0].statement)); } -#line 2443 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2434 "bison_parser.cpp" /* yacc.c:1646 */ break; case 4: #line 252 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].stmt_vec)->push_back((yyvsp[0].statement)); (yyval.stmt_vec) = (yyvsp[-2].stmt_vec); } -#line 2449 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2440 "bison_parser.cpp" /* yacc.c:1646 */ break; case 5: @@ -2455,61 +2446,61 @@ yyreduce: yyloc.placeholder_list.clear(); (yyval.statement) = (yyvsp[0].prep_stmt); } -#line 2459 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2450 "bison_parser.cpp" /* yacc.c:1646 */ break; case 7: #line 266 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 2465 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2456 "bison_parser.cpp" /* yacc.c:1646 */ break; case 8: #line 267 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 2471 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2462 "bison_parser.cpp" /* yacc.c:1646 */ break; case 9: #line 268 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 2477 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2468 "bison_parser.cpp" /* yacc.c:1646 */ break; case 10: #line 269 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 2483 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2474 "bison_parser.cpp" /* yacc.c:1646 */ break; case 11: #line 270 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2489 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2480 "bison_parser.cpp" /* yacc.c:1646 */ break; case 12: #line 271 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2495 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2486 "bison_parser.cpp" /* yacc.c:1646 */ break; case 13: #line 272 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 2501 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2492 "bison_parser.cpp" /* yacc.c:1646 */ break; case 14: #line 273 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 2507 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2498 "bison_parser.cpp" /* yacc.c:1646 */ break; case 15: #line 274 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 2513 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2504 "bison_parser.cpp" /* yacc.c:1646 */ break; case 16: @@ -2519,7 +2510,7 @@ yyreduce: (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = new SQLParserResult((yyvsp[0].statement)); } -#line 2523 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2514 "bison_parser.cpp" /* yacc.c:1646 */ break; case 17: @@ -2533,7 +2524,7 @@ yyreduce: } delete (yyvsp[-2].stmt_vec); } -#line 2537 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2528 "bison_parser.cpp" /* yacc.c:1646 */ break; case 18: @@ -2542,7 +2533,7 @@ yyreduce: (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 2546 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2537 "bison_parser.cpp" /* yacc.c:1646 */ break; case 19: @@ -2552,7 +2543,7 @@ yyreduce: (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 2556 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2547 "bison_parser.cpp" /* yacc.c:1646 */ break; case 20: @@ -2562,19 +2553,19 @@ yyreduce: (yyval.import_stmt)->filePath = (yyvsp[-2].sval); (yyval.import_stmt)->tableName = (yyvsp[0].sval); } -#line 2566 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2557 "bison_parser.cpp" /* yacc.c:1646 */ break; case 21: #line 323 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kImportCSV; } -#line 2572 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2563 "bison_parser.cpp" /* yacc.c:1646 */ break; case 22: #line 327 "bison_parser.y" /* yacc.c:1646 */ { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 2578 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2569 "bison_parser.cpp" /* yacc.c:1646 */ break; case 23: @@ -2585,7 +2576,7 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-4].sval); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 2589 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2580 "bison_parser.cpp" /* yacc.c:1646 */ break; case 24: @@ -2596,7 +2587,7 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-3].sval); (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 2600 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2591 "bison_parser.cpp" /* yacc.c:1646 */ break; case 25: @@ -2608,31 +2599,31 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 2612 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2603 "bison_parser.cpp" /* yacc.c:1646 */ break; case 26: #line 359 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 2618 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2609 "bison_parser.cpp" /* yacc.c:1646 */ break; case 27: #line 360 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 2624 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2615 "bison_parser.cpp" /* yacc.c:1646 */ break; case 28: #line 364 "bison_parser.y" /* yacc.c:1646 */ { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 2630 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2621 "bison_parser.cpp" /* yacc.c:1646 */ break; case 29: #line 365 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 2636 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2627 "bison_parser.cpp" /* yacc.c:1646 */ break; case 30: @@ -2640,31 +2631,31 @@ yyreduce: { (yyval.column_t) = new ColumnDefinition((yyvsp[-1].sval), (ColumnDefinition::DataType) (yyvsp[0].uval)); } -#line 2644 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2635 "bison_parser.cpp" /* yacc.c:1646 */ break; case 31: #line 376 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2650 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2641 "bison_parser.cpp" /* yacc.c:1646 */ break; case 32: #line 377 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2656 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2647 "bison_parser.cpp" /* yacc.c:1646 */ break; case 33: #line 378 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::DOUBLE; } -#line 2662 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2653 "bison_parser.cpp" /* yacc.c:1646 */ break; case 34: #line 379 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::TEXT; } -#line 2668 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2659 "bison_parser.cpp" /* yacc.c:1646 */ break; case 35: @@ -2673,7 +2664,7 @@ yyreduce: (yyval.drop_stmt) = new DropStatement(kDropTable); (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 2677 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2668 "bison_parser.cpp" /* yacc.c:1646 */ break; case 36: @@ -2682,7 +2673,7 @@ yyreduce: (yyval.drop_stmt) = new DropStatement(kDropView); (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 2686 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2677 "bison_parser.cpp" /* yacc.c:1646 */ break; case 37: @@ -2691,7 +2682,7 @@ yyreduce: (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 2695 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2686 "bison_parser.cpp" /* yacc.c:1646 */ break; case 38: @@ -2701,7 +2692,7 @@ yyreduce: (yyval.delete_stmt)->tableName = (yyvsp[-1].sval); (yyval.delete_stmt)->expr = (yyvsp[0].expr); } -#line 2705 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2696 "bison_parser.cpp" /* yacc.c:1646 */ break; case 39: @@ -2710,7 +2701,7 @@ yyreduce: (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->tableName = (yyvsp[0].sval); } -#line 2714 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2705 "bison_parser.cpp" /* yacc.c:1646 */ break; case 40: @@ -2721,7 +2712,7 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 2725 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2716 "bison_parser.cpp" /* yacc.c:1646 */ break; case 41: @@ -2732,19 +2723,19 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 2736 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2727 "bison_parser.cpp" /* yacc.c:1646 */ break; case 42: #line 445 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 2742 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2733 "bison_parser.cpp" /* yacc.c:1646 */ break; case 43: #line 446 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = NULL; } -#line 2748 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2739 "bison_parser.cpp" /* yacc.c:1646 */ break; case 44: @@ -2755,19 +2746,19 @@ yyreduce: (yyval.update_stmt)->updates = (yyvsp[-1].update_vec); (yyval.update_stmt)->where = (yyvsp[0].expr); } -#line 2759 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2750 "bison_parser.cpp" /* yacc.c:1646 */ break; case 45: #line 465 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 2765 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2756 "bison_parser.cpp" /* yacc.c:1646 */ break; case 46: #line 466 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 2771 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2762 "bison_parser.cpp" /* yacc.c:1646 */ break; case 47: @@ -2777,19 +2768,19 @@ yyreduce: (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 2781 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2772 "bison_parser.cpp" /* yacc.c:1646 */ break; case 50: #line 487 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 2787 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2778 "bison_parser.cpp" /* yacc.c:1646 */ break; case 51: #line 488 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 2793 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2784 "bison_parser.cpp" /* yacc.c:1646 */ break; case 52: @@ -2804,7 +2795,7 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 2808 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2799 "bison_parser.cpp" /* yacc.c:1646 */ break; case 53: @@ -2823,7 +2814,7 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 2827 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2818 "bison_parser.cpp" /* yacc.c:1646 */ break; case 54: @@ -2839,7 +2830,7 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 2843 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2834 "bison_parser.cpp" /* yacc.c:1646 */ break; case 58: @@ -2853,37 +2844,37 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 2857 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2848 "bison_parser.cpp" /* yacc.c:1646 */ break; case 59: #line 548 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 2863 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2854 "bison_parser.cpp" /* yacc.c:1646 */ break; case 60: #line 549 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 2869 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2860 "bison_parser.cpp" /* yacc.c:1646 */ break; case 62: #line 557 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = (yyvsp[0].table); } -#line 2875 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2866 "bison_parser.cpp" /* yacc.c:1646 */ break; case 63: #line 562 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[0].expr); } -#line 2881 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2872 "bison_parser.cpp" /* yacc.c:1646 */ break; case 64: #line 563 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = NULL; } -#line 2887 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2878 "bison_parser.cpp" /* yacc.c:1646 */ break; case 65: @@ -2893,127 +2884,127 @@ yyreduce: (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 2897 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2888 "bison_parser.cpp" /* yacc.c:1646 */ break; case 66: #line 572 "bison_parser.y" /* yacc.c:1646 */ { (yyval.group_t) = NULL; } -#line 2903 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2894 "bison_parser.cpp" /* yacc.c:1646 */ break; case 67: #line 576 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[0].expr); } -#line 2909 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2900 "bison_parser.cpp" /* yacc.c:1646 */ break; case 68: #line 577 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = NULL; } -#line 2915 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2906 "bison_parser.cpp" /* yacc.c:1646 */ break; case 69: #line 580 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 2921 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2912 "bison_parser.cpp" /* yacc.c:1646 */ break; case 70: #line 581 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_vec) = NULL; } -#line 2927 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2918 "bison_parser.cpp" /* yacc.c:1646 */ break; case 71: #line 585 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 2933 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2924 "bison_parser.cpp" /* yacc.c:1646 */ break; case 72: #line 586 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 2939 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2930 "bison_parser.cpp" /* yacc.c:1646 */ break; case 73: #line 590 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 2945 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2936 "bison_parser.cpp" /* yacc.c:1646 */ break; case 74: #line 594 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_type) = kOrderAsc; } -#line 2951 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2942 "bison_parser.cpp" /* yacc.c:1646 */ break; case 75: #line 595 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_type) = kOrderDesc; } -#line 2957 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2948 "bison_parser.cpp" /* yacc.c:1646 */ break; case 76: #line 596 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_type) = kOrderAsc; } -#line 2963 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2954 "bison_parser.cpp" /* yacc.c:1646 */ break; case 77: #line 602 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 2969 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2960 "bison_parser.cpp" /* yacc.c:1646 */ break; case 78: #line 603 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = NULL; } -#line 2975 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2966 "bison_parser.cpp" /* yacc.c:1646 */ break; case 79: #line 607 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 2981 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2972 "bison_parser.cpp" /* yacc.c:1646 */ break; case 80: #line 608 "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 2987 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2978 "bison_parser.cpp" /* yacc.c:1646 */ break; case 81: #line 609 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = NULL; } -#line 2993 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2984 "bison_parser.cpp" /* yacc.c:1646 */ break; case 82: #line 616 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 2999 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2990 "bison_parser.cpp" /* yacc.c:1646 */ break; case 83: #line 617 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3005 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2996 "bison_parser.cpp" /* yacc.c:1646 */ break; case 84: #line 621 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3011 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3002 "bison_parser.cpp" /* yacc.c:1646 */ break; case 85: #line 622 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3017 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3008 "bison_parser.cpp" /* yacc.c:1646 */ break; case 86: @@ -3022,217 +3013,217 @@ yyreduce: (yyval.expr) = (yyvsp[-1].expr); (yyval.expr)->alias = (yyvsp[0].sval); } -#line 3026 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3017 "bison_parser.cpp" /* yacc.c:1646 */ break; case 93: #line 642 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); } -#line 3032 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3023 "bison_parser.cpp" /* yacc.c:1646 */ break; case 98: #line 647 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 3038 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3029 "bison_parser.cpp" /* yacc.c:1646 */ break; case 102: #line 657 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpMinus, (yyvsp[0].expr)); } -#line 3044 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3035 "bison_parser.cpp" /* yacc.c:1646 */ break; case 103: #line 658 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 3050 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3041 "bison_parser.cpp" /* yacc.c:1646 */ break; case 105: #line 663 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), '-', (yyvsp[0].expr)); } -#line 3056 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3047 "bison_parser.cpp" /* yacc.c:1646 */ break; case 106: #line 664 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), '+', (yyvsp[0].expr)); } -#line 3062 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3053 "bison_parser.cpp" /* yacc.c:1646 */ break; case 107: #line 665 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), '/', (yyvsp[0].expr)); } -#line 3068 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3059 "bison_parser.cpp" /* yacc.c:1646 */ break; case 108: #line 666 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), '*', (yyvsp[0].expr)); } -#line 3074 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3065 "bison_parser.cpp" /* yacc.c:1646 */ break; case 109: #line 667 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), '%', (yyvsp[0].expr)); } -#line 3080 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3071 "bison_parser.cpp" /* yacc.c:1646 */ break; case 110: #line 668 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), '^', (yyvsp[0].expr)); } -#line 3086 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3077 "bison_parser.cpp" /* yacc.c:1646 */ break; case 111: #line 669 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 3092 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3083 "bison_parser.cpp" /* yacc.c:1646 */ break; case 112: #line 670 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 3098 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3089 "bison_parser.cpp" /* yacc.c:1646 */ break; case 113: #line 674 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 3104 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3095 "bison_parser.cpp" /* yacc.c:1646 */ break; case 114: #line 675 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 3110 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3101 "bison_parser.cpp" /* yacc.c:1646 */ break; case 115: #line 679 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 3116 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3107 "bison_parser.cpp" /* yacc.c:1646 */ break; case 116: #line 680 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 3122 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3113 "bison_parser.cpp" /* yacc.c:1646 */ break; case 117: #line 681 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 3128 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3119 "bison_parser.cpp" /* yacc.c:1646 */ break; case 118: #line 682 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 3134 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3125 "bison_parser.cpp" /* yacc.c:1646 */ break; case 119: #line 687 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeCase((yyvsp[-5].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3140 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3131 "bison_parser.cpp" /* yacc.c:1646 */ break; case 120: #line 691 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 3146 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3137 "bison_parser.cpp" /* yacc.c:1646 */ break; case 121: #line 692 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 3152 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3143 "bison_parser.cpp" /* yacc.c:1646 */ break; case 122: #line 696 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), '=', (yyvsp[0].expr)); } -#line 3158 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3149 "bison_parser.cpp" /* yacc.c:1646 */ break; case 123: #line 697 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 3164 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3155 "bison_parser.cpp" /* yacc.c:1646 */ break; case 124: #line 698 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), '<', (yyvsp[0].expr)); } -#line 3170 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3161 "bison_parser.cpp" /* yacc.c:1646 */ break; case 125: #line 699 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), '>', (yyvsp[0].expr)); } -#line 3176 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3167 "bison_parser.cpp" /* yacc.c:1646 */ break; case 126: #line 700 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 3182 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3173 "bison_parser.cpp" /* yacc.c:1646 */ break; case 127: #line 701 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 3188 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3179 "bison_parser.cpp" /* yacc.c:1646 */ break; case 128: #line 705 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 3194 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3185 "bison_parser.cpp" /* yacc.c:1646 */ break; case 129: #line 709 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3200 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3191 "bison_parser.cpp" /* yacc.c:1646 */ break; case 130: #line 713 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 3206 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3197 "bison_parser.cpp" /* yacc.c:1646 */ break; case 131: #line 714 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 3212 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3203 "bison_parser.cpp" /* yacc.c:1646 */ break; case 135: #line 724 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 3218 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3209 "bison_parser.cpp" /* yacc.c:1646 */ break; case 136: #line 729 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 3224 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3215 "bison_parser.cpp" /* yacc.c:1646 */ break; case 138: #line 734 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 3230 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3221 "bison_parser.cpp" /* yacc.c:1646 */ break; case 139: #line 738 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = new Expr(kExprStar); } -#line 3236 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3227 "bison_parser.cpp" /* yacc.c:1646 */ break; case 140: @@ -3241,7 +3232,7 @@ yyreduce: (yyval.expr) = Expr::makePlaceholder(yylloc.total_column); yyloc.placeholder_list.push_back((yyval.expr)); } -#line 3245 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3236 "bison_parser.cpp" /* yacc.c:1646 */ break; case 142: @@ -3252,7 +3243,7 @@ yyreduce: tbl->list = (yyvsp[0].table_vec); (yyval.table) = tbl; } -#line 3256 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3247 "bison_parser.cpp" /* yacc.c:1646 */ break; case 144: @@ -3263,19 +3254,19 @@ yyreduce: tbl->alias = (yyvsp[0].sval); (yyval.table) = tbl; } -#line 3267 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3258 "bison_parser.cpp" /* yacc.c:1646 */ break; case 146: #line 776 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 3273 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3264 "bison_parser.cpp" /* yacc.c:1646 */ break; case 147: #line 777 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 3279 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3270 "bison_parser.cpp" /* yacc.c:1646 */ break; case 148: @@ -3286,7 +3277,7 @@ yyreduce: tbl->alias = (yyvsp[0].sval); (yyval.table) = tbl; } -#line 3290 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3281 "bison_parser.cpp" /* yacc.c:1646 */ break; case 149: @@ -3295,19 +3286,19 @@ yyreduce: (yyval.table) = new TableRef(kTableName); (yyval.table)->name = (yyvsp[0].sval); } -#line 3299 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3290 "bison_parser.cpp" /* yacc.c:1646 */ break; case 152: #line 806 "bison_parser.y" /* yacc.c:1646 */ { (yyval.sval) = (yyvsp[0].sval); } -#line 3305 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3296 "bison_parser.cpp" /* yacc.c:1646 */ break; case 155: #line 812 "bison_parser.y" /* yacc.c:1646 */ { (yyval.sval) = NULL; } -#line 3311 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3302 "bison_parser.cpp" /* yacc.c:1646 */ break; case 156: @@ -3320,88 +3311,77 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 3324 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3315 "bison_parser.cpp" /* yacc.c:1646 */ break; case 157: #line 832 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinInner; } -#line 3330 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3321 "bison_parser.cpp" /* yacc.c:1646 */ break; case 158: #line 833 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinOuter; } -#line 3336 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3327 "bison_parser.cpp" /* yacc.c:1646 */ break; case 159: #line 834 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinLeftOuter; } -#line 3342 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3333 "bison_parser.cpp" /* yacc.c:1646 */ break; case 160: #line 835 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinRightOuter; } -#line 3348 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3339 "bison_parser.cpp" /* yacc.c:1646 */ break; case 161: #line 836 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinLeft; } -#line 3354 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3345 "bison_parser.cpp" /* yacc.c:1646 */ break; case 162: #line 837 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinRight; } -#line 3360 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3351 "bison_parser.cpp" /* yacc.c:1646 */ break; case 163: #line 838 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinCross; } -#line 3366 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3357 "bison_parser.cpp" /* yacc.c:1646 */ break; case 164: #line 839 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinNatural; } -#line 3372 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3363 "bison_parser.cpp" /* yacc.c:1646 */ break; case 165: #line 840 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinInner; } -#line 3378 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3369 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 166: -#line 846 "bison_parser.y" /* yacc.c:1646 */ - { - auto tbl = new TableRef(kTableSelect); - tbl->select = (yyvsp[-2].select_stmt); - tbl->alias = (yyvsp[0].sval); - (yyval.table) = tbl; - } -#line 3389 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 171: -#line 871 "bison_parser.y" /* yacc.c:1646 */ + case 169: +#line 860 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 3395 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3375 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 172: -#line 872 "bison_parser.y" /* yacc.c:1646 */ + case 170: +#line 861 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 3401 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3381 "bison_parser.cpp" /* yacc.c:1646 */ break; -#line 3405 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3385 "bison_parser.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3636,7 +3616,7 @@ yyreturn: #endif return yyresult; } -#line 875 "bison_parser.y" /* yacc.c:1906 */ +#line 864 "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 faae931..9c8cfe9 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -188,7 +188,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type opt_not_exists opt_distinct %type import_file_type opt_join_type column_type %type from_clause table_ref table_ref_atomic table_ref_name -%type
join_clause join_table table_ref_name_no_alias +%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 star_expr expr_alias placeholder_expr %type column_name literal int_literal num_literal string_literal @@ -225,11 +225,11 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %left '^' /* Unary Operators */ -%right UMINUS +%right UMINUS %left '[' ']' %left '(' ')' %left '.' - +%left JOIN %% /********************************* ** Section 3: Grammar Definition @@ -817,7 +817,7 @@ opt_alias: ******************************/ join_clause: - join_table opt_join_type JOIN join_table ON join_condition + table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition { $$ = new TableRef(kTableJoin); $$->join = new JoinDefinition(); @@ -841,17 +841,6 @@ opt_join_type: ; - -join_table: - '(' select_statement ')' alias { - auto tbl = new TableRef(kTableSelect); - tbl->select = $2; - tbl->alias = $4; - $$ = tbl; - } - | table_ref_name; - - join_condition: expr ; diff --git a/test/select_tests.cpp b/test/select_tests.cpp index 0256cf2..5680c09 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -205,3 +205,45 @@ TEST(SelectCaseWhen) { ASSERT(caseExpr->expr->isSimpleOp('=')); ASSERT_EQ(caseExpr->exprList->size(), 2); } + +TEST(SelectJoin) { + TEST_PARSE_SINGLE_SQL( + "SELECT City.name, Product.category, SUM(price) FROM fact\ + INNER JOIN City ON fact.city_id = City.id\ + OUTER JOIN Product ON fact.product_id = Product.id\ + GROUP BY City.name, Product.category;", + kStmtSelect, + SelectStatement, + result, + stmt); + + const TableRef* table = stmt->fromTable; + const JoinDefinition* outer_join = table->join; + ASSERT_EQ(table->type, kTableJoin); + ASSERT_EQ(outer_join->type, kJoinOuter); + + ASSERT_EQ(outer_join->right->type, kTableName); + ASSERT_STREQ(outer_join->right->name, "Product"); + ASSERT(outer_join->condition->isSimpleOp('=')); + ASSERT_STREQ(outer_join->condition->expr->table, "fact"); + ASSERT_STREQ(outer_join->condition->expr->name, "product_id"); + ASSERT_STREQ(outer_join->condition->expr2->table, "Product"); + ASSERT_STREQ(outer_join->condition->expr2->name, "id"); + + // Joins are are left associative. + // So the second join should be on the left. + ASSERT_EQ(outer_join->left->type, kTableJoin); + + const JoinDefinition* inner_join = outer_join->left->join; + ASSERT_EQ(inner_join->type, kJoinInner); + ASSERT_EQ(inner_join->left->type, kTableName); + ASSERT_STREQ(inner_join->left->name, "fact"); + ASSERT_EQ(inner_join->right->type, kTableName); + ASSERT_STREQ(inner_join->right->name, "City"); + + ASSERT(inner_join->condition->isSimpleOp('=')); + ASSERT_STREQ(inner_join->condition->expr->table, "fact"); + ASSERT_STREQ(inner_join->condition->expr->name, "city_id"); + ASSERT_STREQ(inner_join->condition->expr2->table, "City"); + ASSERT_STREQ(inner_join->condition->expr2->name, "id"); +} diff --git a/test/valid_queries.sql b/test/valid_queries.sql index 9e3d095..a634594 100644 --- a/test/valid_queries.sql +++ b/test/valid_queries.sql @@ -11,6 +11,7 @@ SELECT * FROM t1 UNION (SELECT * FROM t2 UNION SELECT * FROM t3) ORDER BY col1; SELECT TOP 10 * FROM t1 ORDER BY col1, col2; SELECT a, MAX(b), MAX(c, d), CUSTOM(q, UP(r)) AS f FROM t1; SELECT * FROM t WHERE a BETWEEN 1 and c; +SELECT City.name, Product.category, SUM(price) FROM fact INNER JOIN City ON fact.city_id = City.id INNER JOIN Product ON fact.product_id = Product.id GROUP BY City.name, Product.category; # JOIN SELECT t1.a, t1.b, t2.c FROM "table" AS t1 JOIN (SELECT * FROM foo JOIN bar ON foo.id = bar.id) t2 ON t1.a = t2.b WHERE (t1.b OR NOT t1.a) AND t2.c = 12.5 SELECT * FROM t1 JOIN t2 ON c1 = c2;