From 2ff32fbee30cdd2268ef624d8b5ba810b7f944b8 Mon Sep 17 00:00:00 2001 From: Falco Duersch Date: Wed, 10 Jan 2018 13:49:30 +0100 Subject: [PATCH 1/2] Extend table alias with column renames: "AS tbl(c0, c1)" --- src/parser/bison_parser.cpp | 1601 +++++++++++++++++----------------- src/parser/bison_parser.h | 9 +- src/parser/bison_parser.y | 36 +- src/sql/Table.h | 10 +- src/sql/statements.cpp | 19 +- src/util/sqlhelper.cpp | 18 +- test/queries/queries-bad.sql | 1 + test/queries/tpc-h-13.sql | 2 +- test/select_tests.cpp | 52 +- 9 files changed, 943 insertions(+), 805 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 7273596..14b90bb 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -336,6 +336,7 @@ union HSQL_STYPE hsql::ColumnDefinition* column_t; hsql::GroupByDescription* group_t; hsql::UpdateClause* update_t; + hsql::Alias* alias_t; std::vector* stmt_vec; @@ -346,7 +347,7 @@ union HSQL_STYPE std::vector* expr_vec; std::vector* order_vec; -#line 350 "bison_parser.cpp" /* yacc.c:355 */ +#line 351 "bison_parser.cpp" /* yacc.c:355 */ }; typedef union HSQL_STYPE HSQL_STYPE; @@ -376,7 +377,7 @@ int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); /* Copy the second part of user declarations. */ -#line 380 "bison_parser.cpp" /* yacc.c:358 */ +#line 381 "bison_parser.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -620,16 +621,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 52 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 537 +#define YYLAST 568 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 151 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 88 +#define YYNNTS 90 /* YYNRULES -- Number of rules. */ -#define YYNRULES 213 +#define YYNRULES 217 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 392 +#define YYNSTATES 399 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -688,28 +689,28 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 247, 247, 268, 274, 283, 287, 291, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 315, 316, 321, - 322, 326, 330, 342, 349, 352, 356, 368, 377, 381, - 391, 394, 408, 415, 422, 433, 434, 438, 439, 443, - 450, 451, 452, 453, 463, 469, 475, 483, 484, 493, - 502, 515, 522, 533, 534, 544, 553, 554, 558, 570, - 571, 572, 589, 590, 594, 595, 599, 609, 626, 630, - 631, 632, 636, 637, 641, 653, 654, 658, 662, 667, - 668, 672, 677, 681, 682, 685, 686, 690, 691, 695, - 699, 700, 701, 707, 708, 712, 713, 714, 715, 716, - 717, 718, 719, 726, 727, 731, 732, 736, 743, 744, - 745, 746, 747, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 763, 764, 768, 769, 770, 771, 772, 776, - 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 790, 791, 795, 796, 797, 798, 804, 805, 806, 807, - 811, 812, 816, 817, 821, 822, 823, 824, 825, 826, - 827, 831, 832, 836, 840, 844, 848, 849, 850, 851, - 855, 856, 857, 858, 862, 867, 868, 872, 876, 880, - 892, 893, 903, 904, 908, 909, 918, 919, 924, 935, - 944, 945, 950, 951, 955, 956, 964, 972, 982, 1001, - 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1015, - 1024, 1025, 1030, 1031 + 0, 249, 249, 270, 276, 285, 289, 293, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 317, 318, 323, + 324, 328, 332, 344, 351, 354, 358, 370, 379, 383, + 393, 396, 410, 417, 424, 435, 436, 440, 441, 445, + 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 }; #endif @@ -757,9 +758,9 @@ static const char *const yytname[] = "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", "alias", "opt_alias", - "join_clause", "opt_join_type", "join_condition", "opt_semicolon", - "ident_commalist", YY_NULLPTR + "table_ref_name_no_alias", "table_name", "table_alias", + "opt_table_alias", "alias", "opt_alias", "join_clause", "opt_join_type", + "join_condition", "opt_semicolon", "ident_commalist", YY_NULLPTR }; #endif @@ -787,60 +788,60 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -306 +#define YYPACT_NINF -294 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-306))) + (!!((Yystate) == (-294))) -#define YYTABLE_NINF -209 +#define YYTABLE_NINF -213 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-209))) + (!!((Yytable_value) == (-213))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 260, 35, 37, 65, 101, -45, 31, 45, 49, 43, - 37, -34, 78, -38, 177, 22, -306, 82, 82, -306, - -306, -306, -306, -306, -306, -306, -306, -306, -306, 17, - -306, 162, 187, 56, -306, 63, 145, 118, 118, 37, - 137, 37, 242, 235, 143, -306, 139, 139, 37, -306, - 115, 116, -306, 260, -306, 184, -306, -306, -306, -306, - -306, -38, 169, 175, -38, -18, -306, 281, 3, 287, - 192, 37, 37, 223, -306, 222, 161, -306, -306, -306, - 170, 309, 271, 37, 37, -306, -306, -306, -306, 179, - -306, 249, -306, -306, -306, 170, 249, 242, 21, -306, - -306, -306, -306, -306, -306, -95, -306, -306, -306, -306, - -306, -306, -306, -306, 277, -63, 161, 170, -306, 327, - 329, -5, -20, 189, 114, 190, 193, 210, -306, 160, - 256, 194, -306, 66, 241, -306, -306, -306, -306, -306, - -306, -306, -306, -306, -306, -306, -306, -306, -306, 213, - -53, -306, -306, -306, -306, 338, -18, 195, -306, -56, - -18, -306, 299, 300, 303, -306, 3, -306, 240, 351, - 243, 57, 276, -306, -306, -71, 211, -306, 12, 13, - 313, 170, 119, 113, 218, 210, 341, 170, 308, 226, - -22, 10, 223, 170, -306, 170, 361, 170, -306, -306, - 210, -306, 210, -59, 228, 79, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 242, 170, 309, -306, 231, 73, -306, -306, 170, - -306, -306, -306, -306, 242, 242, 242, -306, 310, 6, - 93, -306, -38, 37, -306, 385, 3, -306, 170, -306, - -306, 245, 84, 127, 170, 170, -306, 313, 301, -107, - -306, -306, -38, -306, 8, -306, 246, -306, 9, -306, - 332, -306, -306, -306, 294, 297, 365, 210, 253, 160, - -306, 311, 257, 365, 365, 365, 365, 394, 394, 394, - 394, 308, 308, -10, -10, -10, 59, 258, 57, -306, - 3, -306, 338, -306, -306, -306, -306, 327, -306, -306, - -306, -306, -306, -306, 351, -306, -306, -306, 100, 128, - -306, 170, 170, -306, 151, 136, 263, -306, 265, 317, - -306, -306, -306, 336, 340, 345, 328, 10, -306, 302, - -306, 210, 365, 160, 270, 132, -306, -306, 172, -306, - -306, -306, -306, -306, 57, 171, -306, 170, -306, 9, - 10, -306, -306, -306, 10, 23, 170, 341, 272, 176, - -306, -306, -306, -306, 57, -306, -306, 325, -28, -306, - -306, 274, 170, 170, -306, 14, 57, -306, 57, 273, - 282, -306 + 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 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -849,11 +850,11 @@ static const yytype_int16 yypact[] = static const yytype_uint8 yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, - 0, 0, 0, 0, 0, 211, 3, 18, 18, 16, + 0, 0, 0, 0, 0, 215, 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, 210, 2, 0, 6, 5, 70, 71, + 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, 0, 0, 0, 0, 0, 31, 63, 62, 4, 0, @@ -861,13 +862,13 @@ static const yytype_uint8 yydefact[] = 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, 195, 108, 115, 116, 117, 110, 112, + 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, 212, 0, 0, 52, 76, 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, 193, 0, 0, 0, 194, 107, + 0, 0, 80, 0, 197, 0, 0, 0, 198, 107, 0, 126, 0, 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, @@ -875,33 +876,33 @@ static const yytype_uint8 yydefact[] = 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, 192, 141, 0, 136, 0, 0, 0, + 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, 213, 0, 0, + 43, 40, 39, 33, 0, 34, 27, 217, 0, 0, 152, 0, 0, 146, 0, 0, 0, 163, 0, 0, - 207, 199, 205, 203, 206, 201, 0, 0, 188, 0, - 74, 0, 137, 0, 0, 0, 128, 164, 0, 20, - 32, 38, 51, 162, 150, 0, 149, 0, 153, 195, - 0, 202, 204, 200, 0, 181, 0, 165, 0, 0, - 144, 142, 22, 147, 151, 185, 196, 208, 84, 145, - 143, 0, 0, 0, 81, 0, 209, 197, 83, 166, - 0, 198 + 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 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -306, -306, -306, 388, -306, 424, -306, 141, -306, -306, - -306, -306, -306, 147, -306, -306, 406, -306, 138, -306, - -306, 408, -306, -306, -306, 342, -306, -306, 233, -209, - 25, 393, -13, 429, -306, -306, 262, 283, -306, -306, - -128, -306, -306, -17, -306, 234, -306, -306, 64, -181, - -227, 269, -94, -70, -306, -306, -306, -306, -306, -306, - 290, -306, -306, -306, -306, -306, -306, 88, -64, -116, - -306, -37, -306, -306, -306, -305, 104, -306, -306, -306, - 0, -306, -253, -306, -306, -306, -306, -306 + -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 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -911,11 +912,11 @@ static const yytype_int16 yydefgoto[] = 19, 20, 75, 172, 21, 22, 71, 240, 241, 312, 23, 83, 24, 25, 26, 121, 27, 150, 151, 28, 29, 91, 30, 61, 62, 94, 31, 80, 130, 192, - 118, 340, 384, 65, 157, 158, 232, 43, 99, 131, + 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, 198, 199, 269, 336, 387, 54, 175 + 268, 339, 340, 341, 199, 269, 336, 393, 54, 175 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -923,118 +924,124 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 51, 159, 34, 173, 106, 78, 259, 101, 102, 77, - 45, 9, 194, 33, 383, 338, 249, 389, 168, 318, - 117, 230, 224, 171, 79, 37, 58, 77, 97, 277, - 182, 308, 365, 315, 329, 190, 46, 327, 50, 73, - 33, 76, 193, 309, 9, 98, 195, 231, 85, 329, - 176, 165, 38, 328, 166, 186, 59, 188, 278, 377, - 161, 164, 32, 47, 270, 197, 330, 319, 35, 194, - 331, 115, 116, 348, 156, 244, 332, 333, 245, 160, - 195, 330, 169, 153, 154, 331, 90, 252, 60, 90, - 334, 332, 333, 103, -208, 335, 223, 48, 345, 197, - 310, 272, 237, 274, 36, 334, 375, 13, 177, -208, - 335, 162, 39, 311, 206, 186, 189, 122, 101, 102, - 77, 193, 163, 196, 261, 178, 40, 179, 298, 49, - 275, 220, 276, 221, 41, 159, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 250, 128, 104, 123, 262, 42, -186, 247, 195, - 324, 325, 369, 122, 101, 102, 77, 251, 195, 280, - 53, 58, -187, 122, 101, 102, 77, 52, 197, 321, - 196, 55, 106, 206, 297, 378, 195, 197, 281, 124, - 66, 173, 254, 122, 101, 102, 77, 304, 305, 306, - 123, 59, 221, 67, 103, 197, 322, 342, 68, 9, - 123, 255, 181, 122, 101, 102, 77, 181, 256, 301, - 228, 195, 302, 125, 233, 255, 69, 354, 355, 63, - 184, 357, 323, 60, 70, 124, 106, 126, 195, 313, - 197, 74, 314, 316, 326, 124, 352, 79, 77, 166, - 103, 127, 128, 195, 81, 82, 356, 197, 200, 129, - 103, 86, 87, 374, 104, 124, 344, 1, 89, 125, - 93, 367, 197, 195, 353, 2, 373, 193, 371, 125, - 103, 193, 3, 126, 100, 124, 201, 4, 386, 388, - 95, 112, 197, 126, 5, 6, 117, 127, 128, 185, - 103, 114, 119, 7, 8, 129, 120, 127, 128, 9, - 104, 152, 149, 126, 10, 129, 63, 167, 372, 185, - 104, 166, 380, 92, 155, 193, 92, 127, 128, 202, - 368, 101, 174, 126, 180, 129, 187, 191, 11, 222, - 104, 225, 201, 193, 229, 234, 235, 127, 128, 236, - 203, 329, 238, 12, 239, 129, 246, 242, 204, 205, - 104, 243, 9, 257, 273, 206, 207, 208, 209, 210, - 211, 212, 260, 279, 213, 214, 300, 215, 216, 217, - 218, 219, 220, 330, 221, 202, 201, 331, 317, 277, - 307, 320, 339, 332, 333, 337, 195, 381, 343, 341, - 221, 346, 347, 360, 361, 13, 258, 334, 362, 358, - 201, 359, 335, 363, 364, 205, 370, 366, 379, 385, - 179, 206, 207, 208, 209, 210, 211, 212, 391, 202, - 213, 214, 206, 215, 216, 217, 218, 219, 220, 201, - 221, 88, 57, 349, 72, 382, 217, 218, 219, 220, - 258, 221, 351, -209, 350, 84, 299, 96, 170, 205, - 64, 248, 271, 303, 376, 206, 207, 208, 209, 210, - 211, 212, 253, 390, 213, 214, 0, 215, 216, 217, + 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, + 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, - -209, -209, -209, -209, 211, 212, 0, 0, 213, 214, - 0, 215, 216, 217, 218, 219, 220, 0, 221, 0, - 0, 0, 205, 0, 0, 0, 0, 0, 206, 0, - 0, 0, 0, -209, -209, 0, 0, -209, -209, 0, - 215, 216, 217, 218, 219, 220, 0, 221 + 0, 0, 0, 0, -213, -213, 0, 0, -213, -213, + 0, 215, 216, 217, 218, 219, 220, 0, 221 }; static const yytype_int16 yycheck[] = { - 13, 95, 2, 119, 68, 42, 187, 4, 5, 6, - 10, 49, 3, 3, 42, 268, 3, 3, 81, 246, - 73, 77, 150, 117, 12, 70, 9, 6, 46, 88, - 124, 25, 337, 242, 26, 129, 70, 144, 13, 39, - 3, 41, 149, 37, 49, 63, 102, 103, 48, 26, - 55, 146, 97, 262, 149, 125, 39, 127, 117, 364, - 97, 98, 27, 97, 192, 121, 58, 248, 3, 3, - 62, 71, 72, 300, 91, 146, 68, 69, 149, 96, - 102, 58, 145, 83, 84, 62, 61, 181, 71, 64, - 82, 68, 69, 90, 86, 87, 149, 19, 279, 121, - 94, 195, 166, 197, 3, 82, 359, 145, 121, 86, - 87, 90, 81, 107, 124, 185, 129, 3, 4, 5, - 6, 149, 101, 114, 146, 145, 81, 147, 222, 51, - 200, 141, 202, 143, 85, 229, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 138, 138, 150, 40, 145, 113, 149, 146, 102, - 254, 255, 343, 3, 4, 5, 6, 180, 102, 90, - 148, 9, 149, 3, 4, 5, 6, 0, 121, 95, - 114, 99, 246, 124, 221, 366, 102, 121, 109, 75, - 3, 307, 79, 3, 4, 5, 6, 234, 235, 236, - 40, 39, 143, 147, 90, 121, 79, 277, 145, 49, - 40, 98, 98, 3, 4, 5, 6, 98, 105, 146, - 156, 102, 149, 109, 160, 98, 81, 321, 322, 67, - 40, 95, 105, 71, 116, 75, 300, 123, 102, 146, - 121, 104, 149, 243, 257, 75, 146, 12, 6, 149, - 90, 137, 138, 102, 111, 116, 105, 121, 17, 145, - 90, 146, 146, 357, 150, 75, 279, 7, 84, 109, - 101, 341, 121, 102, 146, 15, 105, 149, 146, 109, - 90, 149, 22, 123, 3, 75, 45, 27, 382, 383, - 115, 4, 121, 123, 34, 35, 73, 137, 138, 109, - 90, 109, 80, 43, 44, 145, 145, 137, 138, 49, - 150, 40, 3, 123, 54, 145, 67, 40, 146, 109, - 150, 149, 146, 61, 145, 149, 64, 137, 138, 88, - 343, 4, 3, 123, 145, 145, 143, 81, 78, 126, - 150, 3, 45, 149, 149, 46, 46, 137, 138, 46, - 109, 26, 112, 93, 3, 145, 145, 114, 117, 118, - 150, 85, 49, 145, 3, 124, 125, 126, 127, 128, - 129, 130, 146, 145, 133, 134, 145, 136, 137, 138, - 139, 140, 141, 58, 143, 88, 45, 62, 3, 88, - 80, 146, 60, 68, 69, 149, 102, 72, 145, 102, - 143, 90, 144, 86, 68, 145, 109, 82, 68, 146, - 45, 146, 87, 68, 86, 118, 146, 115, 146, 145, - 147, 124, 125, 126, 127, 128, 129, 130, 146, 88, - 133, 134, 124, 136, 137, 138, 139, 140, 141, 45, - 143, 53, 18, 302, 38, 120, 138, 139, 140, 141, - 109, 143, 314, 88, 307, 47, 223, 64, 116, 118, - 31, 178, 193, 229, 360, 124, 125, 126, 127, 128, - 129, 130, 182, 385, 133, 134, -1, 136, 137, 138, + 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, + 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, + 129, 130, -1, -1, 133, 134, -1, 136, 137, 138, 139, 140, 141, 118, 143, -1, -1, -1, -1, 124, - 125, 126, 127, 128, 129, 130, -1, -1, 133, 134, - -1, 136, 137, 138, 139, 140, 141, -1, 143, -1, - -1, -1, 118, -1, -1, -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, 129, 130, -1, -1, 133, 134, + -1, 136, 137, 138, 139, 140, 141, -1, 143 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1046,7 +1053,7 @@ static const yytype_uint8 yystos[] = 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, 237, 99, 156, 156, 9, 39, + 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, @@ -1058,29 +1065,29 @@ static const yytype_uint8 yystos[] = 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, 238, 55, 183, 145, 147, + 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, 232, 233, + 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, 234, + 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, 235, 149, 233, 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, 115, 204, 183, 200, - 146, 146, 146, 105, 203, 233, 227, 226, 200, 146, - 146, 72, 120, 42, 193, 145, 203, 236, 203, 3, - 218, 146 + 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1105,9 +1112,9 @@ static const yytype_uint8 yyr1[] = 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, 234, 235, - 235, 235, 235, 235, 235, 235, 235, 235, 235, 236, - 237, 237, 238, 238 + 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 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1132,9 +1139,9 @@ static const yytype_uint8 yyr2[] = 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, 2, 1, 1, 0, 4, 6, 8, 1, - 2, 1, 2, 1, 2, 1, 1, 1, 0, 1, - 1, 0, 1, 3 + 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 }; @@ -1631,31 +1638,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio switch (yytype) { case 3: /* IDENTIFIER */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ +#line 141 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1637 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1644 "bison_parser.cpp" /* yacc.c:1257 */ break; case 4: /* STRING */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ +#line 141 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1643 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1650 "bison_parser.cpp" /* yacc.c:1257 */ break; case 5: /* FLOATVAL */ -#line 138 "bison_parser.y" /* yacc.c:1257 */ +#line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1649 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1656 "bison_parser.cpp" /* yacc.c:1257 */ break; case 6: /* INTVAL */ -#line 138 "bison_parser.y" /* yacc.c:1257 */ +#line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1655 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1662 "bison_parser.cpp" /* yacc.c:1257 */ break; case 153: /* statement_list */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).stmt_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -1664,23 +1671,23 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).stmt_vec)); } -#line 1668 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1675 "bison_parser.cpp" /* yacc.c:1257 */ break; case 154: /* statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1674 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1681 "bison_parser.cpp" /* yacc.c:1257 */ break; case 155: /* preparable_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1680 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1687 "bison_parser.cpp" /* yacc.c:1257 */ break; case 156: /* opt_hints */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1689,11 +1696,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1693 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1700 "bison_parser.cpp" /* yacc.c:1257 */ break; case 157: /* hint_list */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1702,71 +1709,71 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1706 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1713 "bison_parser.cpp" /* yacc.c:1257 */ break; case 158: /* hint */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1712 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1719 "bison_parser.cpp" /* yacc.c:1257 */ break; case 159: /* prepare_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).prep_stmt)); } -#line 1718 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1725 "bison_parser.cpp" /* yacc.c:1257 */ break; case 160: /* prepare_target_query */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ +#line 141 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1724 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1731 "bison_parser.cpp" /* yacc.c:1257 */ break; case 161: /* execute_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).exec_stmt)); } -#line 1730 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1737 "bison_parser.cpp" /* yacc.c:1257 */ break; case 162: /* import_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).import_stmt)); } -#line 1736 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1743 "bison_parser.cpp" /* yacc.c:1257 */ break; case 163: /* import_file_type */ -#line 138 "bison_parser.y" /* yacc.c:1257 */ +#line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1742 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1749 "bison_parser.cpp" /* yacc.c:1257 */ break; case 164: /* file_path */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ +#line 141 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1748 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1755 "bison_parser.cpp" /* yacc.c:1257 */ break; case 165: /* show_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).show_stmt)); } -#line 1754 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1761 "bison_parser.cpp" /* yacc.c:1257 */ break; case 166: /* create_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).create_stmt)); } -#line 1760 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1767 "bison_parser.cpp" /* yacc.c:1257 */ break; case 167: /* opt_not_exists */ -#line 138 "bison_parser.y" /* yacc.c:1257 */ +#line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1766 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1773 "bison_parser.cpp" /* yacc.c:1257 */ break; case 168: /* column_def_commalist */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).column_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).column_vec))) { @@ -1775,53 +1782,53 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).column_vec)); } -#line 1779 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1786 "bison_parser.cpp" /* yacc.c:1257 */ break; case 169: /* column_def */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).column_t)); } -#line 1785 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1792 "bison_parser.cpp" /* yacc.c:1257 */ break; case 170: /* column_type */ -#line 138 "bison_parser.y" /* yacc.c:1257 */ +#line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1791 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1798 "bison_parser.cpp" /* yacc.c:1257 */ break; case 171: /* drop_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).drop_stmt)); } -#line 1797 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1804 "bison_parser.cpp" /* yacc.c:1257 */ break; case 172: /* opt_exists */ -#line 138 "bison_parser.y" /* yacc.c:1257 */ +#line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1803 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1810 "bison_parser.cpp" /* yacc.c:1257 */ break; case 173: /* delete_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1809 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1816 "bison_parser.cpp" /* yacc.c:1257 */ break; case 174: /* truncate_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1815 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1822 "bison_parser.cpp" /* yacc.c:1257 */ break; case 175: /* insert_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).insert_stmt)); } -#line 1821 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1828 "bison_parser.cpp" /* yacc.c:1257 */ break; case 176: /* opt_column_list */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -1830,17 +1837,17 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 1834 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1841 "bison_parser.cpp" /* yacc.c:1257 */ break; case 177: /* update_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_stmt)); } -#line 1840 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1847 "bison_parser.cpp" /* yacc.c:1257 */ break; case 178: /* update_clause_commalist */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).update_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -1849,53 +1856,53 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).update_vec)); } -#line 1853 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1860 "bison_parser.cpp" /* yacc.c:1257 */ break; case 179: /* update_clause */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_t)); } -#line 1859 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1866 "bison_parser.cpp" /* yacc.c:1257 */ break; case 180: /* select_statement */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1865 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1872 "bison_parser.cpp" /* yacc.c:1257 */ break; case 181: /* select_with_paren */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1871 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1878 "bison_parser.cpp" /* yacc.c:1257 */ break; case 182: /* select_paren_or_clause */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1877 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1884 "bison_parser.cpp" /* yacc.c:1257 */ break; case 183: /* select_no_paren */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1883 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1890 "bison_parser.cpp" /* yacc.c:1257 */ break; case 187: /* select_clause */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1889 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1896 "bison_parser.cpp" /* yacc.c:1257 */ break; case 188: /* opt_distinct */ -#line 138 "bison_parser.y" /* yacc.c:1257 */ +#line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1895 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1902 "bison_parser.cpp" /* yacc.c:1257 */ break; case 189: /* select_list */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1904,35 +1911,35 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1908 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1915 "bison_parser.cpp" /* yacc.c:1257 */ break; case 190: /* from_clause */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 1914 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1921 "bison_parser.cpp" /* yacc.c:1257 */ break; case 191: /* opt_where */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1920 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1927 "bison_parser.cpp" /* yacc.c:1257 */ break; case 192: /* opt_group */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).group_t)); } -#line 1926 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1933 "bison_parser.cpp" /* yacc.c:1257 */ break; case 193: /* opt_having */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1932 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1939 "bison_parser.cpp" /* yacc.c:1257 */ break; case 194: /* opt_order */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -1941,11 +1948,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 1945 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1952 "bison_parser.cpp" /* yacc.c:1257 */ break; case 195: /* order_list */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -1954,35 +1961,35 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 1958 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1965 "bison_parser.cpp" /* yacc.c:1257 */ break; case 196: /* order_desc */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).order)); } -#line 1964 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1971 "bison_parser.cpp" /* yacc.c:1257 */ break; case 197: /* opt_order_type */ -#line 138 "bison_parser.y" /* yacc.c:1257 */ +#line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1970 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1977 "bison_parser.cpp" /* yacc.c:1257 */ break; case 198: /* opt_top */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).limit)); } -#line 1976 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1983 "bison_parser.cpp" /* yacc.c:1257 */ break; case 199: /* opt_limit */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).limit)); } -#line 1982 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1989 "bison_parser.cpp" /* yacc.c:1257 */ break; case 200: /* expr_list */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1991,11 +1998,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1995 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2002 "bison_parser.cpp" /* yacc.c:1257 */ break; case 201: /* literal_list */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2004,167 +2011,167 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2008 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2015 "bison_parser.cpp" /* yacc.c:1257 */ break; case 202: /* expr_alias */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2014 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2021 "bison_parser.cpp" /* yacc.c:1257 */ break; case 203: /* expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2020 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2027 "bison_parser.cpp" /* yacc.c:1257 */ break; case 204: /* operand */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2026 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2033 "bison_parser.cpp" /* yacc.c:1257 */ break; case 205: /* scalar_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2032 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2039 "bison_parser.cpp" /* yacc.c:1257 */ break; case 206: /* unary_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2038 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2045 "bison_parser.cpp" /* yacc.c:1257 */ break; case 207: /* binary_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2044 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2051 "bison_parser.cpp" /* yacc.c:1257 */ break; case 208: /* logic_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2050 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2057 "bison_parser.cpp" /* yacc.c:1257 */ break; case 209: /* in_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2056 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2063 "bison_parser.cpp" /* yacc.c:1257 */ break; case 210: /* case_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2062 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2069 "bison_parser.cpp" /* yacc.c:1257 */ break; case 211: /* case_list */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2068 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2075 "bison_parser.cpp" /* yacc.c:1257 */ break; case 212: /* exists_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2074 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2081 "bison_parser.cpp" /* yacc.c:1257 */ break; case 213: /* comp_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2080 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2087 "bison_parser.cpp" /* yacc.c:1257 */ break; case 214: /* function_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2086 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2093 "bison_parser.cpp" /* yacc.c:1257 */ break; case 215: /* array_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2092 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2099 "bison_parser.cpp" /* yacc.c:1257 */ break; case 216: /* array_index */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2098 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2105 "bison_parser.cpp" /* yacc.c:1257 */ break; case 217: /* between_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2104 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2111 "bison_parser.cpp" /* yacc.c:1257 */ break; case 218: /* column_name */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2110 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2117 "bison_parser.cpp" /* yacc.c:1257 */ break; case 219: /* literal */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2116 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2123 "bison_parser.cpp" /* yacc.c:1257 */ break; case 220: /* string_literal */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2122 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2129 "bison_parser.cpp" /* yacc.c:1257 */ break; case 221: /* num_literal */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2128 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2135 "bison_parser.cpp" /* yacc.c:1257 */ break; case 222: /* int_literal */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2134 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2141 "bison_parser.cpp" /* yacc.c:1257 */ break; case 223: /* null_literal */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2140 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2147 "bison_parser.cpp" /* yacc.c:1257 */ break; case 224: /* param_expr */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2146 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2153 "bison_parser.cpp" /* yacc.c:1257 */ break; case 225: /* table_ref */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2152 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2159 "bison_parser.cpp" /* yacc.c:1257 */ break; case 226: /* table_ref_atomic */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2158 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2165 "bison_parser.cpp" /* yacc.c:1257 */ break; case 227: /* nonjoin_table_ref_atomic */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2164 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2171 "bison_parser.cpp" /* yacc.c:1257 */ break; case 228: /* table_ref_commalist */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).table_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2173,59 +2180,71 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).table_vec)); } -#line 2177 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2184 "bison_parser.cpp" /* yacc.c:1257 */ break; case 229: /* table_ref_name */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2183 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2190 "bison_parser.cpp" /* yacc.c:1257 */ break; case 230: /* table_ref_name_no_alias */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2189 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2196 "bison_parser.cpp" /* yacc.c:1257 */ break; case 231: /* table_name */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2195 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2202 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 232: /* alias */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } -#line 2201 "bison_parser.cpp" /* yacc.c:1257 */ + case 232: /* table_alias */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).alias_t)); } +#line 2208 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 233: /* opt_alias */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } -#line 2207 "bison_parser.cpp" /* yacc.c:1257 */ + case 233: /* opt_table_alias */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).alias_t)); } +#line 2214 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 234: /* join_clause */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ + case 234: /* alias */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).alias_t)); } +#line 2220 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 235: /* opt_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 */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2213 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2232 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 235: /* opt_join_type */ -#line 138 "bison_parser.y" /* yacc.c:1257 */ + case 237: /* opt_join_type */ +#line 139 "bison_parser.y" /* yacc.c:1257 */ { } -#line 2219 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2238 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 236: /* join_condition */ -#line 149 "bison_parser.y" /* yacc.c:1257 */ + case 238: /* join_condition */ +#line 150 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2225 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2244 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 238: /* ident_commalist */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ + case 240: /* ident_commalist */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2234,7 +2253,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 2238 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2257 "bison_parser.cpp" /* yacc.c:1257 */ break; @@ -2342,7 +2361,7 @@ YYLTYPE yylloc = yyloc_default; yychar = YYEMPTY; /* Cause a token to be read. */ /* User initialization code. */ -#line 73 "bison_parser.y" /* yacc.c:1436 */ +#line 73 "bison_parser.y" /* yacc.c:1429 */ { // Initialize yylloc.first_column = 0; @@ -2353,7 +2372,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2357 "bison_parser.cpp" /* yacc.c:1436 */ +#line 2376 "bison_parser.cpp" /* yacc.c:1429 */ yylsp[0] = yylloc; goto yysetstate; @@ -2540,7 +2559,7 @@ yyreduce: switch (yyn) { case 2: -#line 247 "bison_parser.y" /* yacc.c:1661 */ +#line 249 "bison_parser.y" /* yacc.c:1646 */ { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -2558,226 +2577,226 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 2562 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2581 "bison_parser.cpp" /* yacc.c:1646 */ break; case 3: -#line 268 "bison_parser.y" /* yacc.c:1661 */ +#line 270 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[0].statement)->stringLength = yylloc.string_length; yylloc.string_length = 0; (yyval.stmt_vec) = new std::vector(); (yyval.stmt_vec)->push_back((yyvsp[0].statement)); } -#line 2573 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2592 "bison_parser.cpp" /* yacc.c:1646 */ break; case 4: -#line 274 "bison_parser.y" /* yacc.c:1661 */ +#line 276 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[0].statement)->stringLength = yylloc.string_length; yylloc.string_length = 0; (yyvsp[-2].stmt_vec)->push_back((yyvsp[0].statement)); (yyval.stmt_vec) = (yyvsp[-2].stmt_vec); } -#line 2584 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2603 "bison_parser.cpp" /* yacc.c:1646 */ break; case 5: -#line 283 "bison_parser.y" /* yacc.c:1661 */ +#line 285 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2593 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2612 "bison_parser.cpp" /* yacc.c:1646 */ break; case 6: -#line 287 "bison_parser.y" /* yacc.c:1661 */ +#line 289 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2602 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2621 "bison_parser.cpp" /* yacc.c:1646 */ break; case 7: -#line 291 "bison_parser.y" /* yacc.c:1661 */ +#line 293 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 2610 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2629 "bison_parser.cpp" /* yacc.c:1646 */ break; case 8: -#line 298 "bison_parser.y" /* yacc.c:1661 */ +#line 300 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 2616 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2635 "bison_parser.cpp" /* yacc.c:1646 */ break; case 9: -#line 299 "bison_parser.y" /* yacc.c:1661 */ +#line 301 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 2622 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2641 "bison_parser.cpp" /* yacc.c:1646 */ break; case 10: -#line 300 "bison_parser.y" /* yacc.c:1661 */ +#line 302 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 2628 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2647 "bison_parser.cpp" /* yacc.c:1646 */ break; case 11: -#line 301 "bison_parser.y" /* yacc.c:1661 */ +#line 303 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 2634 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2653 "bison_parser.cpp" /* yacc.c:1646 */ break; case 12: -#line 302 "bison_parser.y" /* yacc.c:1661 */ +#line 304 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2640 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2659 "bison_parser.cpp" /* yacc.c:1646 */ break; case 13: -#line 303 "bison_parser.y" /* yacc.c:1661 */ +#line 305 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2646 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2665 "bison_parser.cpp" /* yacc.c:1646 */ break; case 14: -#line 304 "bison_parser.y" /* yacc.c:1661 */ +#line 306 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 2652 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2671 "bison_parser.cpp" /* yacc.c:1646 */ break; case 15: -#line 305 "bison_parser.y" /* yacc.c:1661 */ +#line 307 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 2658 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2677 "bison_parser.cpp" /* yacc.c:1646 */ break; case 16: -#line 306 "bison_parser.y" /* yacc.c:1661 */ +#line 308 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 2664 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2683 "bison_parser.cpp" /* yacc.c:1646 */ break; case 17: -#line 315 "bison_parser.y" /* yacc.c:1661 */ +#line 317 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 2670 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2689 "bison_parser.cpp" /* yacc.c:1646 */ break; case 18: -#line 316 "bison_parser.y" /* yacc.c:1661 */ +#line 318 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = nullptr; } -#line 2676 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2695 "bison_parser.cpp" /* yacc.c:1646 */ break; case 19: -#line 321 "bison_parser.y" /* yacc.c:1661 */ +#line 323 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 2682 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2701 "bison_parser.cpp" /* yacc.c:1646 */ break; case 20: -#line 322 "bison_parser.y" /* yacc.c:1661 */ +#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 2688 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2707 "bison_parser.cpp" /* yacc.c:1646 */ break; case 21: -#line 326 "bison_parser.y" /* yacc.c:1661 */ +#line 328 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 2697 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2716 "bison_parser.cpp" /* yacc.c:1646 */ break; case 22: -#line 330 "bison_parser.y" /* yacc.c:1661 */ +#line 332 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 2707 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2726 "bison_parser.cpp" /* yacc.c:1646 */ break; case 23: -#line 342 "bison_parser.y" /* yacc.c:1661 */ +#line 344 "bison_parser.y" /* yacc.c:1646 */ { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 2717 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2736 "bison_parser.cpp" /* yacc.c:1646 */ break; case 25: -#line 352 "bison_parser.y" /* yacc.c:1661 */ +#line 354 "bison_parser.y" /* yacc.c:1646 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 2726 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2745 "bison_parser.cpp" /* yacc.c:1646 */ break; case 26: -#line 356 "bison_parser.y" /* yacc.c:1661 */ +#line 358 "bison_parser.y" /* yacc.c:1646 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 2736 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2755 "bison_parser.cpp" /* yacc.c:1646 */ break; case 27: -#line 368 "bison_parser.y" /* yacc.c:1661 */ +#line 370 "bison_parser.y" /* yacc.c:1646 */ { (yyval.import_stmt) = new ImportStatement((ImportType) (yyvsp[-4].uval)); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); (yyval.import_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 2747 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2766 "bison_parser.cpp" /* yacc.c:1646 */ break; case 28: -#line 377 "bison_parser.y" /* yacc.c:1661 */ +#line 379 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kImportCSV; } -#line 2753 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2772 "bison_parser.cpp" /* yacc.c:1646 */ break; case 29: -#line 381 "bison_parser.y" /* yacc.c:1661 */ +#line 383 "bison_parser.y" /* yacc.c:1646 */ { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 2759 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2778 "bison_parser.cpp" /* yacc.c:1646 */ break; case 30: -#line 391 "bison_parser.y" /* yacc.c:1661 */ +#line 393 "bison_parser.y" /* yacc.c:1646 */ { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 2767 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2786 "bison_parser.cpp" /* yacc.c:1646 */ break; case 31: -#line 394 "bison_parser.y" /* yacc.c:1661 */ +#line 396 "bison_parser.y" /* yacc.c:1646 */ { (yyval.show_stmt) = new ShowStatement(kShowColumns); (yyval.show_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.show_stmt)->name = (yyvsp[0].table_name).name; } -#line 2777 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2796 "bison_parser.cpp" /* yacc.c:1646 */ break; case 32: -#line 408 "bison_parser.y" /* yacc.c:1661 */ +#line 410 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -2785,11 +2804,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-4].table_name).name; (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 2789 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2808 "bison_parser.cpp" /* yacc.c:1646 */ break; case 33: -#line 415 "bison_parser.y" /* yacc.c:1661 */ +#line 417 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2797,11 +2816,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 2801 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2820 "bison_parser.cpp" /* yacc.c:1646 */ break; case 34: -#line 422 "bison_parser.y" /* yacc.c:1661 */ +#line 424 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2810,132 +2829,132 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 2814 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2833 "bison_parser.cpp" /* yacc.c:1646 */ break; case 35: -#line 433 "bison_parser.y" /* yacc.c:1661 */ +#line 435 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 2820 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2839 "bison_parser.cpp" /* yacc.c:1646 */ break; case 36: -#line 434 "bison_parser.y" /* yacc.c:1661 */ +#line 436 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 2826 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2845 "bison_parser.cpp" /* yacc.c:1646 */ break; case 37: -#line 438 "bison_parser.y" /* yacc.c:1661 */ +#line 440 "bison_parser.y" /* yacc.c:1646 */ { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 2832 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2851 "bison_parser.cpp" /* yacc.c:1646 */ break; case 38: -#line 439 "bison_parser.y" /* yacc.c:1661 */ +#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 2838 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2857 "bison_parser.cpp" /* yacc.c:1646 */ break; case 39: -#line 443 "bison_parser.y" /* yacc.c:1661 */ +#line 445 "bison_parser.y" /* yacc.c:1646 */ { (yyval.column_t) = new ColumnDefinition((yyvsp[-1].sval), (ColumnDefinition::DataType) (yyvsp[0].uval)); } -#line 2846 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2865 "bison_parser.cpp" /* yacc.c:1646 */ break; case 40: -#line 450 "bison_parser.y" /* yacc.c:1661 */ +#line 452 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2852 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2871 "bison_parser.cpp" /* yacc.c:1646 */ break; case 41: -#line 451 "bison_parser.y" /* yacc.c:1661 */ +#line 453 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2858 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2877 "bison_parser.cpp" /* yacc.c:1646 */ break; case 42: -#line 452 "bison_parser.y" /* yacc.c:1661 */ +#line 454 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::DOUBLE; } -#line 2864 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2883 "bison_parser.cpp" /* yacc.c:1646 */ break; case 43: -#line 453 "bison_parser.y" /* yacc.c:1661 */ +#line 455 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::TEXT; } -#line 2870 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2889 "bison_parser.cpp" /* yacc.c:1646 */ break; case 44: -#line 463 "bison_parser.y" /* yacc.c:1661 */ +#line 465 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropTable); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 2881 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2900 "bison_parser.cpp" /* yacc.c:1646 */ break; case 45: -#line 469 "bison_parser.y" /* yacc.c:1661 */ +#line 471 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropView); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 2892 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2911 "bison_parser.cpp" /* yacc.c:1646 */ break; case 46: -#line 475 "bison_parser.y" /* yacc.c:1661 */ +#line 477 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 2902 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2921 "bison_parser.cpp" /* yacc.c:1646 */ break; case 47: -#line 483 "bison_parser.y" /* yacc.c:1661 */ +#line 485 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 2908 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2927 "bison_parser.cpp" /* yacc.c:1646 */ break; case 48: -#line 484 "bison_parser.y" /* yacc.c:1661 */ +#line 486 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 2914 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2933 "bison_parser.cpp" /* yacc.c:1646 */ break; case 49: -#line 493 "bison_parser.y" /* yacc.c:1661 */ +#line 495 "bison_parser.y" /* yacc.c:1646 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[-1].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[-1].table_name).name; (yyval.delete_stmt)->expr = (yyvsp[0].expr); } -#line 2925 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2944 "bison_parser.cpp" /* yacc.c:1646 */ break; case 50: -#line 502 "bison_parser.y" /* yacc.c:1661 */ +#line 504 "bison_parser.y" /* yacc.c:1646 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 2935 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2954 "bison_parser.cpp" /* yacc.c:1646 */ break; case 51: -#line 515 "bison_parser.y" /* yacc.c:1661 */ +#line 517 "bison_parser.y" /* yacc.c:1646 */ { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -2943,11 +2962,11 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 2947 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2966 "bison_parser.cpp" /* yacc.c:1646 */ break; case 52: -#line 522 "bison_parser.y" /* yacc.c:1661 */ +#line 524 "bison_parser.y" /* yacc.c:1646 */ { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -2955,56 +2974,56 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 2959 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2978 "bison_parser.cpp" /* yacc.c:1646 */ break; case 53: -#line 533 "bison_parser.y" /* yacc.c:1661 */ +#line 535 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 2965 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2984 "bison_parser.cpp" /* yacc.c:1646 */ break; case 54: -#line 534 "bison_parser.y" /* yacc.c:1661 */ +#line 536 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = nullptr; } -#line 2971 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2990 "bison_parser.cpp" /* yacc.c:1646 */ break; case 55: -#line 544 "bison_parser.y" /* yacc.c:1661 */ +#line 546 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_stmt) = new UpdateStatement(); (yyval.update_stmt)->table = (yyvsp[-3].table); (yyval.update_stmt)->updates = (yyvsp[-1].update_vec); (yyval.update_stmt)->where = (yyvsp[0].expr); } -#line 2982 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3001 "bison_parser.cpp" /* yacc.c:1646 */ break; case 56: -#line 553 "bison_parser.y" /* yacc.c:1661 */ +#line 555 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 2988 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3007 "bison_parser.cpp" /* yacc.c:1646 */ break; case 57: -#line 554 "bison_parser.y" /* yacc.c:1661 */ +#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 2994 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3013 "bison_parser.cpp" /* yacc.c:1646 */ break; case 58: -#line 558 "bison_parser.y" /* yacc.c:1661 */ +#line 560 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3004 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3023 "bison_parser.cpp" /* yacc.c:1646 */ break; case 61: -#line 572 "bison_parser.y" /* yacc.c:1661 */ +#line 574 "bison_parser.y" /* yacc.c:1646 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3019,23 +3038,23 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3023 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3042 "bison_parser.cpp" /* yacc.c:1646 */ break; case 62: -#line 589 "bison_parser.y" /* yacc.c:1661 */ +#line 591 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3029 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3048 "bison_parser.cpp" /* yacc.c:1646 */ break; case 63: -#line 590 "bison_parser.y" /* yacc.c:1661 */ +#line 592 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3035 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3054 "bison_parser.cpp" /* yacc.c:1646 */ break; case 66: -#line 599 "bison_parser.y" /* yacc.c:1661 */ +#line 601 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -3046,11 +3065,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3050 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3069 "bison_parser.cpp" /* yacc.c:1646 */ break; case 67: -#line 609 "bison_parser.y" /* yacc.c:1661 */ +#line 611 "bison_parser.y" /* yacc.c:1646 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3065,11 +3084,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3069 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3088 "bison_parser.cpp" /* yacc.c:1646 */ break; case 74: -#line 641 "bison_parser.y" /* yacc.c:1661 */ +#line 643 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -3079,606 +3098,627 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 3083 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3102 "bison_parser.cpp" /* yacc.c:1646 */ break; case 75: -#line 653 "bison_parser.y" /* yacc.c:1661 */ +#line 655 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 3089 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3108 "bison_parser.cpp" /* yacc.c:1646 */ break; case 76: -#line 654 "bison_parser.y" /* yacc.c:1661 */ +#line 656 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 3095 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3114 "bison_parser.cpp" /* yacc.c:1646 */ break; case 78: -#line 662 "bison_parser.y" /* yacc.c:1661 */ +#line 664 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = (yyvsp[0].table); } -#line 3101 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3120 "bison_parser.cpp" /* yacc.c:1646 */ break; case 79: -#line 667 "bison_parser.y" /* yacc.c:1661 */ +#line 669 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[0].expr); } -#line 3107 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3126 "bison_parser.cpp" /* yacc.c:1646 */ break; case 80: -#line 668 "bison_parser.y" /* yacc.c:1661 */ +#line 670 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = nullptr; } -#line 3113 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3132 "bison_parser.cpp" /* yacc.c:1646 */ break; case 81: -#line 672 "bison_parser.y" /* yacc.c:1661 */ +#line 674 "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 3123 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3142 "bison_parser.cpp" /* yacc.c:1646 */ break; case 82: -#line 677 "bison_parser.y" /* yacc.c:1661 */ +#line 679 "bison_parser.y" /* yacc.c:1646 */ { (yyval.group_t) = nullptr; } -#line 3129 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3148 "bison_parser.cpp" /* yacc.c:1646 */ break; case 83: -#line 681 "bison_parser.y" /* yacc.c:1661 */ +#line 683 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[0].expr); } -#line 3135 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3154 "bison_parser.cpp" /* yacc.c:1646 */ break; case 84: -#line 682 "bison_parser.y" /* yacc.c:1661 */ +#line 684 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = nullptr; } -#line 3141 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3160 "bison_parser.cpp" /* yacc.c:1646 */ break; case 85: -#line 685 "bison_parser.y" /* yacc.c:1661 */ +#line 687 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 3147 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3166 "bison_parser.cpp" /* yacc.c:1646 */ break; case 86: -#line 686 "bison_parser.y" /* yacc.c:1661 */ +#line 688 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_vec) = nullptr; } -#line 3153 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3172 "bison_parser.cpp" /* yacc.c:1646 */ break; case 87: -#line 690 "bison_parser.y" /* yacc.c:1661 */ +#line 692 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 3159 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3178 "bison_parser.cpp" /* yacc.c:1646 */ break; case 88: -#line 691 "bison_parser.y" /* yacc.c:1661 */ +#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 3165 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3184 "bison_parser.cpp" /* yacc.c:1646 */ break; case 89: -#line 695 "bison_parser.y" /* yacc.c:1661 */ +#line 697 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 3171 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3190 "bison_parser.cpp" /* yacc.c:1646 */ break; case 90: -#line 699 "bison_parser.y" /* yacc.c:1661 */ +#line 701 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_type) = kOrderAsc; } -#line 3177 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3196 "bison_parser.cpp" /* yacc.c:1646 */ break; case 91: -#line 700 "bison_parser.y" /* yacc.c:1661 */ +#line 702 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_type) = kOrderDesc; } -#line 3183 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3202 "bison_parser.cpp" /* yacc.c:1646 */ break; case 92: -#line 701 "bison_parser.y" /* yacc.c:1661 */ +#line 703 "bison_parser.y" /* yacc.c:1646 */ { (yyval.order_type) = kOrderAsc; } -#line 3189 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3208 "bison_parser.cpp" /* yacc.c:1646 */ break; case 93: -#line 707 "bison_parser.y" /* yacc.c:1661 */ +#line 709 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 3195 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3214 "bison_parser.cpp" /* yacc.c:1646 */ break; case 94: -#line 708 "bison_parser.y" /* yacc.c:1661 */ +#line 710 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = nullptr; } -#line 3201 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3220 "bison_parser.cpp" /* yacc.c:1646 */ break; case 95: -#line 712 "bison_parser.y" /* yacc.c:1661 */ +#line 714 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 3207 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3226 "bison_parser.cpp" /* yacc.c:1646 */ break; case 96: -#line 713 "bison_parser.y" /* yacc.c:1661 */ +#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); } -#line 3213 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3232 "bison_parser.cpp" /* yacc.c:1646 */ break; case 97: -#line 714 "bison_parser.y" /* yacc.c:1661 */ +#line 716 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } -#line 3219 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3238 "bison_parser.cpp" /* yacc.c:1646 */ break; case 98: -#line 715 "bison_parser.y" /* yacc.c:1661 */ +#line 717 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = nullptr; } -#line 3225 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3244 "bison_parser.cpp" /* yacc.c:1646 */ break; case 99: -#line 716 "bison_parser.y" /* yacc.c:1661 */ +#line 718 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = nullptr; } -#line 3231 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3250 "bison_parser.cpp" /* yacc.c:1646 */ break; case 100: -#line 717 "bison_parser.y" /* yacc.c:1661 */ +#line 719 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } -#line 3237 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3256 "bison_parser.cpp" /* yacc.c:1646 */ break; case 101: -#line 718 "bison_parser.y" /* yacc.c:1661 */ +#line 720 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } -#line 3243 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3262 "bison_parser.cpp" /* yacc.c:1646 */ break; case 102: -#line 719 "bison_parser.y" /* yacc.c:1661 */ +#line 721 "bison_parser.y" /* yacc.c:1646 */ { (yyval.limit) = nullptr; } -#line 3249 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3268 "bison_parser.cpp" /* yacc.c:1646 */ break; case 103: -#line 726 "bison_parser.y" /* yacc.c:1661 */ +#line 728 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3255 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3274 "bison_parser.cpp" /* yacc.c:1646 */ break; case 104: -#line 727 "bison_parser.y" /* yacc.c:1661 */ +#line 729 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3261 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3280 "bison_parser.cpp" /* yacc.c:1646 */ break; case 105: -#line 731 "bison_parser.y" /* yacc.c:1661 */ +#line 733 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3267 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3286 "bison_parser.cpp" /* yacc.c:1646 */ break; case 106: -#line 732 "bison_parser.y" /* yacc.c:1661 */ +#line 734 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3273 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3292 "bison_parser.cpp" /* yacc.c:1646 */ break; case 107: -#line 736 "bison_parser.y" /* yacc.c:1661 */ +#line 738 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); - (yyval.expr)->alias = (yyvsp[0].sval); + if ((yyvsp[0].alias_t)) { + (yyval.expr)->alias = strdup((yyvsp[0].alias_t)->name); + delete (yyvsp[0].alias_t); + } } -#line 3282 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3304 "bison_parser.cpp" /* yacc.c:1646 */ break; case 113: -#line 751 "bison_parser.y" /* yacc.c:1661 */ +#line 756 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); } -#line 3288 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3310 "bison_parser.cpp" /* yacc.c:1646 */ break; case 121: -#line 759 "bison_parser.y" /* yacc.c:1661 */ +#line 764 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 3294 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3316 "bison_parser.cpp" /* yacc.c:1646 */ break; case 124: -#line 768 "bison_parser.y" /* yacc.c:1661 */ +#line 773 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 3300 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3322 "bison_parser.cpp" /* yacc.c:1646 */ break; case 125: -#line 769 "bison_parser.y" /* yacc.c:1661 */ +#line 774 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 3306 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3328 "bison_parser.cpp" /* yacc.c:1646 */ break; case 126: -#line 770 "bison_parser.y" /* yacc.c:1661 */ +#line 775 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 3312 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3334 "bison_parser.cpp" /* yacc.c:1646 */ break; case 127: -#line 771 "bison_parser.y" /* yacc.c:1661 */ +#line 776 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 3318 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3340 "bison_parser.cpp" /* yacc.c:1646 */ break; case 128: -#line 772 "bison_parser.y" /* yacc.c:1661 */ +#line 777 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 3324 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3346 "bison_parser.cpp" /* yacc.c:1646 */ break; case 130: -#line 777 "bison_parser.y" /* yacc.c:1661 */ +#line 782 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 3330 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3352 "bison_parser.cpp" /* yacc.c:1646 */ break; case 131: -#line 778 "bison_parser.y" /* yacc.c:1661 */ +#line 783 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 3336 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3358 "bison_parser.cpp" /* yacc.c:1646 */ break; case 132: -#line 779 "bison_parser.y" /* yacc.c:1661 */ +#line 784 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 3342 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3364 "bison_parser.cpp" /* yacc.c:1646 */ break; case 133: -#line 780 "bison_parser.y" /* yacc.c:1661 */ +#line 785 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 3348 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3370 "bison_parser.cpp" /* yacc.c:1646 */ break; case 134: -#line 781 "bison_parser.y" /* yacc.c:1661 */ +#line 786 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 3354 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3376 "bison_parser.cpp" /* yacc.c:1646 */ break; case 135: -#line 782 "bison_parser.y" /* yacc.c:1661 */ +#line 787 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 3360 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3382 "bison_parser.cpp" /* yacc.c:1646 */ break; case 136: -#line 783 "bison_parser.y" /* yacc.c:1661 */ +#line 788 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 3366 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3388 "bison_parser.cpp" /* yacc.c:1646 */ break; case 137: -#line 784 "bison_parser.y" /* yacc.c:1661 */ +#line 789 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 3372 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3394 "bison_parser.cpp" /* yacc.c:1646 */ break; case 138: -#line 785 "bison_parser.y" /* yacc.c:1661 */ +#line 790 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 3378 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3400 "bison_parser.cpp" /* yacc.c:1646 */ break; case 139: -#line 786 "bison_parser.y" /* yacc.c:1661 */ +#line 791 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 3384 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3406 "bison_parser.cpp" /* yacc.c:1646 */ break; case 140: -#line 790 "bison_parser.y" /* yacc.c:1661 */ +#line 795 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 3390 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3412 "bison_parser.cpp" /* yacc.c:1646 */ break; case 141: -#line 791 "bison_parser.y" /* yacc.c:1661 */ +#line 796 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 3396 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3418 "bison_parser.cpp" /* yacc.c:1646 */ break; case 142: -#line 795 "bison_parser.y" /* yacc.c:1661 */ +#line 800 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 3402 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3424 "bison_parser.cpp" /* yacc.c:1646 */ break; case 143: -#line 796 "bison_parser.y" /* yacc.c:1661 */ +#line 801 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 3408 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3430 "bison_parser.cpp" /* yacc.c:1646 */ break; case 144: -#line 797 "bison_parser.y" /* yacc.c:1661 */ +#line 802 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 3414 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3436 "bison_parser.cpp" /* yacc.c:1646 */ break; case 145: -#line 798 "bison_parser.y" /* yacc.c:1661 */ +#line 803 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 3420 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3442 "bison_parser.cpp" /* yacc.c:1646 */ break; case 146: -#line 804 "bison_parser.y" /* yacc.c:1661 */ +#line 809 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 3426 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3448 "bison_parser.cpp" /* yacc.c:1646 */ break; case 147: -#line 805 "bison_parser.y" /* yacc.c:1661 */ +#line 810 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3432 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3454 "bison_parser.cpp" /* yacc.c:1646 */ break; case 148: -#line 806 "bison_parser.y" /* yacc.c:1661 */ +#line 811 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 3438 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3460 "bison_parser.cpp" /* yacc.c:1646 */ break; case 149: -#line 807 "bison_parser.y" /* yacc.c:1661 */ +#line 812 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3444 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3466 "bison_parser.cpp" /* yacc.c:1646 */ break; case 150: -#line 811 "bison_parser.y" /* yacc.c:1661 */ +#line 816 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 3450 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3472 "bison_parser.cpp" /* yacc.c:1646 */ break; case 151: -#line 812 "bison_parser.y" /* yacc.c:1661 */ +#line 817 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 3456 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3478 "bison_parser.cpp" /* yacc.c:1646 */ break; case 152: -#line 816 "bison_parser.y" /* yacc.c:1661 */ +#line 821 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 3462 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3484 "bison_parser.cpp" /* yacc.c:1646 */ break; case 153: -#line 817 "bison_parser.y" /* yacc.c:1661 */ +#line 822 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 3468 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3490 "bison_parser.cpp" /* yacc.c:1646 */ break; case 154: -#line 821 "bison_parser.y" /* yacc.c:1661 */ +#line 826 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3474 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3496 "bison_parser.cpp" /* yacc.c:1646 */ break; case 155: -#line 822 "bison_parser.y" /* yacc.c:1661 */ +#line 827 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3480 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3502 "bison_parser.cpp" /* yacc.c:1646 */ break; case 156: -#line 823 "bison_parser.y" /* yacc.c:1661 */ +#line 828 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 3486 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3508 "bison_parser.cpp" /* yacc.c:1646 */ break; case 157: -#line 824 "bison_parser.y" /* yacc.c:1661 */ +#line 829 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 3492 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3514 "bison_parser.cpp" /* yacc.c:1646 */ break; case 158: -#line 825 "bison_parser.y" /* yacc.c:1661 */ +#line 830 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 3498 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3520 "bison_parser.cpp" /* yacc.c:1646 */ break; case 159: -#line 826 "bison_parser.y" /* yacc.c:1661 */ +#line 831 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 3504 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3526 "bison_parser.cpp" /* yacc.c:1646 */ break; case 160: -#line 827 "bison_parser.y" /* yacc.c:1661 */ +#line 832 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 3510 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3532 "bison_parser.cpp" /* yacc.c:1646 */ break; case 161: -#line 831 "bison_parser.y" /* yacc.c:1661 */ +#line 836 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 3516 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3538 "bison_parser.cpp" /* yacc.c:1646 */ break; case 162: -#line 832 "bison_parser.y" /* yacc.c:1661 */ +#line 837 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 3522 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3544 "bison_parser.cpp" /* yacc.c:1646 */ break; case 163: -#line 836 "bison_parser.y" /* yacc.c:1661 */ +#line 841 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 3528 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3550 "bison_parser.cpp" /* yacc.c:1646 */ break; case 164: -#line 840 "bison_parser.y" /* yacc.c:1661 */ +#line 845 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 3534 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3556 "bison_parser.cpp" /* yacc.c:1646 */ break; case 165: -#line 844 "bison_parser.y" /* yacc.c:1661 */ +#line 849 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3540 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3562 "bison_parser.cpp" /* yacc.c:1646 */ break; case 166: -#line 848 "bison_parser.y" /* yacc.c:1661 */ +#line 853 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 3546 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3568 "bison_parser.cpp" /* yacc.c:1646 */ break; case 167: -#line 849 "bison_parser.y" /* yacc.c:1661 */ +#line 854 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 3552 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3574 "bison_parser.cpp" /* yacc.c:1646 */ break; case 168: -#line 850 "bison_parser.y" /* yacc.c:1661 */ +#line 855 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeStar(); } -#line 3558 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3580 "bison_parser.cpp" /* yacc.c:1646 */ break; case 169: -#line 851 "bison_parser.y" /* yacc.c:1661 */ +#line 856 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 3564 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3586 "bison_parser.cpp" /* yacc.c:1646 */ break; case 174: -#line 862 "bison_parser.y" /* yacc.c:1661 */ +#line 867 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 3570 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3592 "bison_parser.cpp" /* yacc.c:1646 */ break; case 175: -#line 867 "bison_parser.y" /* yacc.c:1661 */ +#line 872 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 3576 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3598 "bison_parser.cpp" /* yacc.c:1646 */ break; case 177: -#line 872 "bison_parser.y" /* yacc.c:1661 */ +#line 877 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 3582 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3604 "bison_parser.cpp" /* yacc.c:1646 */ break; case 178: -#line 876 "bison_parser.y" /* yacc.c:1661 */ +#line 881 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeNullLiteral(); } -#line 3588 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3610 "bison_parser.cpp" /* yacc.c:1646 */ break; case 179: -#line 880 "bison_parser.y" /* yacc.c:1661 */ +#line 885 "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 3598 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3620 "bison_parser.cpp" /* yacc.c:1646 */ break; case 181: -#line 893 "bison_parser.y" /* yacc.c:1661 */ +#line 898 "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 3609 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3631 "bison_parser.cpp" /* yacc.c:1646 */ break; case 185: -#line 909 "bison_parser.y" /* yacc.c:1661 */ +#line 914 "bison_parser.y" /* yacc.c:1646 */ { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); - tbl->alias = (yyvsp[0].sval); + tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3620 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3642 "bison_parser.cpp" /* yacc.c:1646 */ break; case 186: -#line 918 "bison_parser.y" /* yacc.c:1661 */ +#line 923 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 3626 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3648 "bison_parser.cpp" /* yacc.c:1646 */ break; case 187: -#line 919 "bison_parser.y" /* yacc.c:1661 */ +#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 3632 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3654 "bison_parser.cpp" /* yacc.c:1646 */ break; case 188: -#line 924 "bison_parser.y" /* yacc.c:1661 */ +#line 929 "bison_parser.y" /* yacc.c:1646 */ { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; tbl->name = (yyvsp[-1].table_name).name; - tbl->alias = (yyvsp[0].sval); + tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3644 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3666 "bison_parser.cpp" /* yacc.c:1646 */ break; case 189: -#line 935 "bison_parser.y" /* yacc.c:1661 */ +#line 940 "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 3654 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3676 "bison_parser.cpp" /* yacc.c:1646 */ break; case 190: -#line 944 "bison_parser.y" /* yacc.c:1661 */ +#line 949 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} -#line 3660 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3682 "bison_parser.cpp" /* yacc.c:1646 */ break; case 191: -#line 945 "bison_parser.y" /* yacc.c:1661 */ +#line 950 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 3666 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3688 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 192: -#line 950 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.sval) = (yyvsp[0].sval); } -#line 3672 "bison_parser.cpp" /* yacc.c:1661 */ + 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 956 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.sval) = nullptr; } -#line 3678 "bison_parser.cpp" /* yacc.c:1661 */ +#line 962 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = nullptr; } +#line 3700 "bison_parser.cpp" /* yacc.c:1646 */ break; case 196: -#line 965 "bison_parser.y" /* yacc.c:1661 */ +#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)); } +#line 3712 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 199: +#line 973 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = nullptr; } +#line 3718 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 200: +#line 982 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3686,11 +3726,11 @@ yyreduce: (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 3690 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3730 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 197: -#line 973 "bison_parser.y" /* yacc.c:1661 */ + case 201: +#line 990 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3699,11 +3739,11 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 3703 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3743 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 198: -#line 983 "bison_parser.y" /* yacc.c:1661 */ + case 202: +#line 1000 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3719,83 +3759,83 @@ yyreduce: (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 3723 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 199: -#line 1001 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.uval) = kJoinInner; } -#line 3729 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 200: -#line 1002 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.uval) = kJoinLeft; } -#line 3735 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 201: -#line 1003 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.uval) = kJoinLeft; } -#line 3741 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 202: -#line 1004 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.uval) = kJoinRight; } -#line 3747 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3763 "bison_parser.cpp" /* yacc.c:1646 */ break; case 203: -#line 1005 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.uval) = kJoinRight; } -#line 3753 "bison_parser.cpp" /* yacc.c:1661 */ +#line 1018 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinInner; } +#line 3769 "bison_parser.cpp" /* yacc.c:1646 */ break; case 204: -#line 1006 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.uval) = kJoinFull; } -#line 3759 "bison_parser.cpp" /* yacc.c:1661 */ +#line 1019 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinLeft; } +#line 3775 "bison_parser.cpp" /* yacc.c:1646 */ break; case 205: -#line 1007 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.uval) = kJoinFull; } -#line 3765 "bison_parser.cpp" /* yacc.c:1661 */ +#line 1020 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinLeft; } +#line 3781 "bison_parser.cpp" /* yacc.c:1646 */ break; case 206: -#line 1008 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.uval) = kJoinFull; } -#line 3771 "bison_parser.cpp" /* yacc.c:1661 */ +#line 1021 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinRight; } +#line 3787 "bison_parser.cpp" /* yacc.c:1646 */ break; case 207: -#line 1009 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.uval) = kJoinCross; } -#line 3777 "bison_parser.cpp" /* yacc.c:1661 */ +#line 1022 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinRight; } +#line 3793 "bison_parser.cpp" /* yacc.c:1646 */ break; case 208: -#line 1010 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.uval) = kJoinInner; } -#line 3783 "bison_parser.cpp" /* yacc.c:1661 */ +#line 1023 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } +#line 3799 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 209: +#line 1024 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } +#line 3805 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 210: +#line 1025 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } +#line 3811 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 211: +#line 1026 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinCross; } +#line 3817 "bison_parser.cpp" /* yacc.c:1646 */ break; case 212: -#line 1030 "bison_parser.y" /* yacc.c:1661 */ +#line 1027 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinInner; } +#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)); } -#line 3789 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3829 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 213: -#line 1031 "bison_parser.y" /* yacc.c:1661 */ + 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); } -#line 3795 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3835 "bison_parser.cpp" /* yacc.c:1646 */ break; -#line 3799 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3839 "bison_parser.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4030,11 +4070,10 @@ yyreturn: #endif return yyresult; } -#line 1034 "bison_parser.y" /* yacc.c:1906 */ +#line 1051 "bison_parser.y" /* yacc.c:1906 */ /********************************* ** Section 4: Additional C code *********************************/ /* empty */ - diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 7b6edc9..194d13f 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -48,7 +48,7 @@ extern int hsql_debug; #endif /* "%code requires" blocks. */ -#line 35 "bison_parser.y" /* yacc.c:1915 */ +#line 35 "bison_parser.y" /* yacc.c:1909 */ // %code requires block @@ -72,7 +72,7 @@ extern int hsql_debug; } \ } -#line 76 "bison_parser.h" /* yacc.c:1915 */ +#line 76 "bison_parser.h" /* yacc.c:1909 */ /* Token type. */ #ifndef HSQL_TOKENTYPE @@ -218,7 +218,7 @@ extern int hsql_debug; union HSQL_STYPE { -#line 95 "bison_parser.y" /* yacc.c:1915 */ +#line 95 "bison_parser.y" /* yacc.c:1909 */ double fval; int64_t ival; @@ -247,6 +247,7 @@ union HSQL_STYPE hsql::ColumnDefinition* column_t; hsql::GroupByDescription* group_t; hsql::UpdateClause* update_t; + hsql::Alias* alias_t; std::vector* stmt_vec; @@ -257,7 +258,7 @@ union HSQL_STYPE std::vector* expr_vec; std::vector* order_vec; -#line 261 "bison_parser.h" /* yacc.c:1915 */ +#line 262 "bison_parser.h" /* yacc.c:1909 */ }; typedef union HSQL_STYPE HSQL_STYPE; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 3b40551..8e4fc00 100755 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -120,6 +120,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha hsql::ColumnDefinition* column_t; hsql::GroupByDescription* group_t; hsql::UpdateClause* update_t; + hsql::Alias* alias_t; std::vector* stmt_vec; @@ -133,7 +134,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha /********************************* - ** Descrutor symbols + ** Destructor symbols *********************************/ %destructor { } %destructor { free( ($$.name) ); free( ($$.schema) ); } @@ -189,7 +190,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type drop_statement %type show_statement %type table_name -%type opt_alias alias file_path prepare_target_query +%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 @@ -205,6 +206,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type column_def %type update_clause %type opt_group +%type opt_table_alias table_alias opt_alias alias %type ident_commalist opt_column_list %type expr_list select_list literal_list hint_list opt_hints @@ -735,7 +737,10 @@ literal_list: expr_alias: expr opt_alias { $$ = $1; - $$->alias = $2; + if ($2) { + $$->alias = strdup($2->name); + delete $2; + } } ; @@ -906,7 +911,7 @@ table_ref_atomic: nonjoin_table_ref_atomic: table_ref_name - | '(' select_statement ')' opt_alias { + | '(' select_statement ')' opt_table_alias { auto tbl = new TableRef(kTableSelect); tbl->select = $2; tbl->alias = $4; @@ -921,7 +926,7 @@ table_ref_commalist: table_ref_name: - table_name opt_alias { + table_name opt_table_alias { auto tbl = new TableRef(kTableName); tbl->schema = $1.schema; tbl->name = $1.name; @@ -946,16 +951,28 @@ table_name: ; -alias: - AS IDENTIFIER { $$ = $2; } - | IDENTIFIER +table_alias: + alias + | AS IDENTIFIER '(' ident_commalist ')' { $$ = new Alias($2, $4); } ; + +opt_table_alias: + table_alias + | /* empty */ { $$ = nullptr; } + + +alias: + AS IDENTIFIER { $$ = new Alias($2); } + | IDENTIFIER { $$ = new Alias($1); } + ; + + opt_alias: alias | /* empty */ { $$ = nullptr; } - + /****************************** * Join Statements ******************************/ @@ -1037,4 +1054,3 @@ ident_commalist: *********************************/ /* empty */ - diff --git a/src/sql/Table.h b/src/sql/Table.h index 459943e..5ad951c 100755 --- a/src/sql/Table.h +++ b/src/sql/Table.h @@ -24,6 +24,14 @@ namespace hsql { char* name; }; + struct Alias { + Alias(char* name, std::vector* columns = nullptr); + ~Alias(); + + char* name; + std::vector* columns; + }; + // Holds reference to tables. Can be either table names or a select statement. struct TableRef { TableRef(TableRefType type); @@ -33,7 +41,7 @@ namespace hsql { char* schema; char* name; - char* alias; + Alias* alias; SelectStatement* select; std::vector* list; diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index 458a846..01fadae 100755 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -231,6 +231,21 @@ namespace hsql { } } + // Alias + Alias::Alias(char* name, std::vector* columns) : + name(name), + columns(columns) {} + + Alias::~Alias() { + free(name); + if (columns) { + for (char* column : *columns) { + free(column); + } + delete columns; + } + } + // TableRef TableRef::TableRef(TableRefType type) : type(type), @@ -244,10 +259,10 @@ namespace hsql { TableRef::~TableRef() { free(schema); free(name); - free(alias); delete select; delete join; + delete alias; if (list != nullptr) { for (TableRef* table : *list) { @@ -262,7 +277,7 @@ namespace hsql { } const char* TableRef::getName() const { - if (alias != nullptr) return alias; + if (alias) return alias->name; else return name; } diff --git a/src/util/sqlhelper.cpp b/src/util/sqlhelper.cpp index 74ef81b..1d718f7 100755 --- a/src/util/sqlhelper.cpp +++ b/src/util/sqlhelper.cpp @@ -6,6 +6,7 @@ namespace hsql { void printOperatorExpression(Expr* expr, uintmax_t numIndent); + void printAlias(Alias* alias, uintmax_t numIndent); std::string indent(uintmax_t numIndent) { return std::string(numIndent, '\t'); @@ -54,9 +55,20 @@ namespace hsql { for (TableRef* tbl : *table->list) printTableRefInfo(tbl, numIndent); break; } - if (table->alias != nullptr) { - inprint("Alias", numIndent + 1); - inprint(table->alias, numIndent + 2); + + if (table->alias) { + printAlias(table->alias, numIndent); + } + } + + void printAlias(Alias* alias, uintmax_t numIndent) { + inprint("Alias", numIndent + 1); + inprint(alias->name, numIndent + 2); + + if (alias->columns) { + for (char* column : *(alias->columns)) { + inprint(column, numIndent + 3); + } } } diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index 5437c4f..0aa4488 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -10,3 +10,4 @@ !INSERT INTO test_table VALUESd (1, 2, 'test'); !SELECT * FROM t WHERE a = ? AND b = ?;SELECT 1; !SHOW COLUMNS; +!select a + 1 as b(spam, eggs) from B; diff --git a/test/queries/tpc-h-13.sql b/test/queries/tpc-h-13.sql index dd2614c..a48f691 100644 --- a/test/queries/tpc-h-13.sql +++ b/test/queries/tpc-h-13.sql @@ -3,6 +3,6 @@ SELECT C_COUNT, COUNT(*) AS CUSTDIST FROM (SELECT C_CUSTKEY, COUNT(O_ORDERKEY) FROM CUSTOMER left outer join ORDERS on C_CUSTKEY = O_CUSTKEY AND O_COMMENT not like '%%special%%requests%%' - GROUP BY C_CUSTKEY) AS C_ORDERS + GROUP BY C_CUSTKEY) AS C_ORDERS (C_CUSTKEY, C_COUNT) GROUP BY C_COUNT ORDER BY CUSTDIST DESC, C_COUNT DESC; \ No newline at end of file diff --git a/test/select_tests.cpp b/test/select_tests.cpp index ecf544e..1ba3669 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -343,9 +343,55 @@ TEST(SelectColumnOrder) { // Make sure the order of the table list is corrects ASSERT_STREQ(stmt->fromTable->list->at(0)->name, "a"); - ASSERT_STREQ(stmt->fromTable->list->at(1)->alias, "b"); - ASSERT_STREQ(stmt->fromTable->list->at(2)->alias, "c"); - ASSERT_STREQ(stmt->fromTable->list->at(3)->alias, "d"); + ASSERT_STREQ(stmt->fromTable->list->at(1)->alias->name, "b"); + ASSERT_STREQ(stmt->fromTable->list->at(2)->alias->name, "c"); + ASSERT_STREQ(stmt->fromTable->list->at(3)->alias->name, "d"); +} + + +TEST(SelectAliasAbsent) { + TEST_PARSE_SINGLE_SQL( + "SELECT * FROM students;", + kStmtSelect, + SelectStatement, + result, + stmt); + + ASSERT_NULL(stmt->fromTable->alias); +} + +TEST(SelectAliasSimple) { + TEST_PARSE_SINGLE_SQL( + "SELECT * FROM students AS s1;", + kStmtSelect, + SelectStatement, + result, + stmt); + + Alias* alias = stmt->fromTable->alias; + ASSERT_NOTNULL(alias); + ASSERT_STREQ(alias->name, "s1"); + ASSERT_NULL(alias->columns); +} + +TEST(SelectAliasWithColumns) { + TEST_PARSE_SINGLE_SQL( + "SELECT * FROM students AS s1(id, city);", + kStmtSelect, + SelectStatement, + result, + stmt); + + Alias* alias = stmt->fromTable->alias; + ASSERT_NOTNULL(alias); + + ASSERT_NOTNULL(alias->name); + ASSERT_STREQ(alias->name, "s1"); + + ASSERT_NOTNULL(alias->columns); + ASSERT_EQ(alias->columns->size(), 2); + ASSERT_STREQ(alias->columns->at(0), "id"); + ASSERT_STREQ(alias->columns->at(1), "city"); } TEST(Operators) { From 7837a2a6f54942a8fee954562389639e1458abc1 Mon Sep 17 00:00:00 2001 From: mrks Date: Mon, 12 Feb 2018 11:36:47 +0100 Subject: [PATCH 2/2] Dummy-Commit to retrigger CI --- test/queries/queries-bad.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index 0aa4488..cf29f9d 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -10,4 +10,4 @@ !INSERT INTO test_table VALUESd (1, 2, 'test'); !SELECT * FROM t WHERE a = ? AND b = ?;SELECT 1; !SHOW COLUMNS; -!select a + 1 as b(spam, eggs) from B; +!select a + 2 as b(spam, eggs) from B;