diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index a9d3e0b..7273596 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -620,16 +620,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 52 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 593 +#define YYLAST 537 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 151 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 88 /* YYNRULES -- Number of rules. */ -#define YYNRULES 208 +#define YYNRULES 213 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 384 +#define YYNSTATES 392 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -697,18 +697,19 @@ static const yytype_uint16 yyrline[] = 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, 721, 722, - 726, 727, 731, 738, 739, 740, 741, 742, 746, 747, - 748, 749, 750, 751, 752, 753, 754, 758, 759, 763, - 764, 765, 766, 767, 771, 772, 773, 774, 775, 776, - 777, 778, 779, 780, 781, 785, 786, 790, 791, 792, - 793, 799, 800, 801, 802, 806, 807, 811, 812, 816, - 817, 818, 819, 820, 821, 822, 826, 827, 831, 835, - 839, 843, 844, 845, 846, 850, 851, 852, 853, 857, - 862, 863, 867, 871, 875, 887, 888, 898, 899, 903, - 904, 913, 914, 919, 930, 939, 940, 945, 946, 950, - 951, 959, 967, 977, 996, 997, 998, 999, 1000, 1001, - 1002, 1003, 1004, 1005, 1010, 1019, 1020, 1025, 1026 + 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 }; #endif @@ -786,59 +787,60 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -288 +#define YYPACT_NINF -306 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-288))) + (!!((Yystate) == (-306))) -#define YYTABLE_NINF -204 +#define YYTABLE_NINF -209 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-204))) + (!!((Yytable_value) == (-209))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 234, 17, 30, 45, 149, -35, -10, 24, 84, 80, - 30, -31, 8, -36, 179, 50, -288, 103, 103, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, 22, - -288, 21, 204, 61, -288, 73, 142, 109, 109, 30, - 133, 30, 246, 245, 147, -288, 148, 148, 30, -288, - 119, 128, -288, 234, -288, 205, -288, -288, -288, -288, - -288, -36, 190, 180, -36, 231, -288, 293, 11, 294, - 188, 30, 30, 227, -288, 219, 157, -288, -288, -288, - 200, 300, 264, 30, 30, -288, -288, -288, -288, 162, - -288, 241, -288, -288, -288, 200, 241, 246, -288, -288, - -288, -288, -288, -288, -27, -288, -288, -288, -288, -288, - -288, -288, -288, 274, -58, 157, 200, -288, 311, 314, - -2, 99, 173, 72, 226, 176, 230, -288, 76, 240, - 175, -288, 6, 268, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, 199, -59, - -288, -288, -288, -288, 323, 231, 181, -288, -51, 231, - 282, -288, 11, -288, 217, 328, 218, -8, 248, -288, - -288, 66, 191, -288, 12, 15, 291, 200, -53, -33, - 196, 230, 327, 200, 49, 197, -83, 3, 227, 200, - -288, 200, 339, 200, -288, -288, 230, -288, 230, -60, - 202, 20, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 246, 200, 300, - -288, 203, 78, -288, -288, 200, -288, -288, -288, -288, - 246, -288, 271, -5, 96, -288, -36, 30, -288, 341, - 11, -288, 200, -288, -288, 206, 28, 16, 200, 200, - -288, 291, 266, 23, -288, -288, -36, -288, 185, -288, - 208, -288, 4, -288, 295, -288, -288, -288, 256, 301, - 355, 230, 214, 76, -288, 270, 222, 355, 355, 355, - 355, 379, 379, 379, 379, 49, 49, 41, 41, 41, - 51, 225, -8, -288, 11, -288, 323, -288, -288, 311, - -288, -288, -288, -288, -288, -288, 328, -288, -288, -288, - 102, 113, -288, 200, 200, -288, 75, 55, 215, -288, - 216, 280, -288, -288, -288, 302, 306, 310, 296, 3, - -288, 269, -288, 230, 355, 76, 235, 124, -288, -288, - 130, -288, -288, -288, -288, -288, -8, 95, -288, 200, - -288, 4, 3, -288, -288, -288, 3, 224, 200, 327, - 237, 138, -288, -288, -288, -288, -8, -288, -288, 473, - -32, -288, -288, 242, 200, 200, -288, 18, -8, -288, - -8, 243, 253, -288 + 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 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -847,72 +849,73 @@ 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, 206, 3, 18, 18, 16, + 0, 0, 0, 0, 0, 211, 3, 18, 18, 16, 9, 7, 10, 15, 12, 13, 11, 14, 8, 59, - 60, 86, 0, 185, 50, 25, 0, 36, 36, 0, - 0, 0, 0, 76, 0, 184, 48, 48, 0, 30, - 0, 0, 1, 205, 2, 0, 6, 5, 70, 71, - 69, 0, 73, 0, 0, 97, 46, 0, 0, 0, - 0, 0, 0, 80, 28, 0, 54, 172, 93, 75, + 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, + 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, - 64, 86, 65, 72, 68, 0, 86, 0, 66, 186, - 169, 170, 173, 174, 0, 100, 165, 166, 171, 167, - 168, 24, 23, 0, 0, 54, 0, 49, 0, 0, - 0, 161, 0, 0, 0, 0, 0, 163, 0, 0, - 77, 98, 190, 103, 110, 111, 112, 105, 107, 113, - 106, 124, 114, 115, 109, 104, 117, 118, 0, 80, - 56, 47, 44, 45, 0, 97, 85, 87, 92, 97, - 95, 26, 0, 35, 0, 0, 0, 79, 0, 29, - 207, 0, 0, 52, 76, 0, 0, 0, 0, 0, - 0, 0, 120, 0, 119, 0, 0, 0, 80, 0, - 188, 0, 0, 0, 189, 102, 0, 121, 0, 0, + 64, 86, 65, 72, 68, 0, 86, 0, 0, 66, + 191, 174, 175, 178, 179, 0, 105, 170, 171, 176, + 172, 173, 24, 23, 0, 0, 54, 0, 49, 0, + 0, 0, 166, 0, 0, 0, 0, 0, 168, 0, + 0, 77, 103, 195, 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, 0, 0, 0, 0, 0, 125, 0, 124, 0, + 0, 0, 80, 0, 193, 0, 0, 0, 194, 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, 0, 0, 0, 0, 0, 0, - 55, 21, 0, 19, 61, 0, 91, 90, 89, 67, - 0, 101, 0, 0, 0, 37, 0, 0, 53, 0, - 0, 156, 0, 162, 164, 0, 0, 0, 0, 0, - 143, 0, 0, 0, 116, 108, 0, 78, 175, 177, - 0, 179, 190, 178, 82, 99, 135, 187, 136, 0, - 131, 0, 0, 0, 122, 0, 134, 133, 149, 150, - 151, 152, 153, 154, 155, 126, 125, 128, 127, 129, - 130, 0, 58, 57, 0, 17, 0, 88, 96, 0, - 41, 42, 43, 40, 39, 33, 0, 34, 27, 208, - 0, 0, 147, 0, 0, 141, 0, 0, 0, 158, - 0, 0, 202, 194, 200, 198, 201, 196, 0, 0, - 183, 0, 74, 0, 132, 0, 0, 0, 123, 159, - 0, 20, 32, 38, 51, 157, 145, 0, 144, 0, - 148, 190, 0, 197, 199, 195, 0, 176, 0, 160, - 0, 0, 139, 137, 22, 142, 146, 180, 191, 203, - 84, 140, 138, 0, 0, 0, 81, 0, 204, 192, - 83, 161, 0, 193 + 0, 0, 0, 0, 55, 21, 0, 19, 61, 0, + 91, 90, 89, 67, 0, 0, 0, 106, 0, 0, + 0, 37, 0, 0, 53, 0, 0, 161, 0, 167, + 169, 0, 0, 0, 0, 0, 148, 0, 0, 0, + 121, 113, 0, 78, 180, 182, 0, 184, 195, 183, + 82, 104, 140, 192, 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, + 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 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -288, -288, -288, 335, -288, 373, -288, 116, -288, -288, - -288, -288, -288, 114, -288, -288, 376, -288, 110, -288, - -288, 370, -288, -288, -288, 303, -288, -288, 201, -152, - 42, 357, -13, 391, -288, -288, 107, 249, -288, -288, - -124, -288, -288, 68, -288, 207, -288, -288, -119, -175, - -203, 244, -94, -70, -288, -288, -288, -288, -288, -288, - 272, -288, -288, -288, -288, -288, -288, 69, -66, -113, - -288, -39, -288, -288, -288, -287, 97, -288, -288, -288, - 2, -288, -251, -288, -288, -288, -288, -288 + -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 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 14, 15, 16, 17, 56, 222, 223, 18, 112, - 19, 20, 75, 168, 21, 22, 71, 234, 235, 304, - 23, 83, 24, 25, 26, 120, 27, 149, 150, 28, - 29, 91, 30, 61, 62, 94, 31, 80, 129, 188, - 117, 332, 376, 65, 156, 157, 228, 43, 98, 130, - 104, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 179, 140, 141, 142, 143, 144, 145, 146, 147, 106, - 107, 108, 109, 110, 257, 258, 259, 260, 261, 44, - 262, 194, 195, 263, 328, 379, 54, 171 + -1, 14, 15, 16, 17, 56, 226, 227, 18, 113, + 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, + 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 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -920,130 +923,118 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 51, 158, 105, 78, 34, 169, 33, 190, 253, 190, - 375, 330, 45, 9, 116, 100, 101, 77, 243, 191, - 300, 381, 167, 164, 79, 220, 226, 48, 271, 178, - 58, 58, 301, 33, 186, 37, 224, 310, 193, 46, - 229, 73, 357, 76, 32, 177, 248, 9, 35, 191, - 85, 191, 227, 172, 182, 50, 184, 272, 160, 49, - 59, 59, 38, 255, 264, 249, 47, 311, 193, 369, - 193, 39, 250, 114, 115, 121, 100, 101, 77, 121, - 100, 101, 77, 246, 307, 152, 153, 165, 63, 302, - 219, 340, 60, 60, 191, 314, 231, 266, 337, 268, - 367, 102, 303, 90, 320, 40, 90, 173, 191, 13, - 274, 182, 122, 193, 249, 185, 122, 189, 192, 161, - 192, 315, 162, 313, 292, 9, 269, 193, 270, 275, - 191, 158, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 123, 256, 193, - 349, 123, 36, 244, 316, 317, 127, 191, 241, 155, - 361, 103, 102, 245, 159, 202, 102, 319, 92, 41, - 177, 92, 189, 202, 105, 202, 193, 191, 291, 52, - 348, 124, 216, 370, 217, 124, 169, 213, 214, 215, - 216, 298, 217, 42, 217, 125, 193, 191, 53, 125, - 365, 334, 55, 121, 100, 101, 77, 66, 67, 126, - 127, 321, 238, 126, 127, 239, 193, 128, 68, 346, - 347, 128, 103, 69, 295, 70, 103, 296, 105, 121, - 100, 101, 77, 121, 100, 101, 77, 74, 318, 308, - 122, 1, 305, 322, 174, 306, 175, 323, 344, 2, - 321, 162, 77, 324, 325, 366, 3, 79, 81, 345, - 336, 4, 189, 359, 82, 86, 180, 326, 5, 6, - 363, -203, 327, 189, 87, 123, 364, 7, 8, 162, - 378, 380, 322, 9, 372, 196, 323, 189, 10, 89, - 102, 93, 324, 325, 97, 95, 99, 113, 111, 118, - 116, 123, 119, 148, 151, 123, 326, 154, 63, 124, - -203, 327, 11, 197, 163, 100, 102, 170, 176, 183, - 102, 187, 360, 125, 189, 218, 221, 12, 230, 232, - 225, 233, 236, 237, -181, 181, 240, 126, 127, 181, - 9, 251, 267, 254, 309, 128, 197, 273, 294, 125, - 103, 299, 312, 125, 271, 331, 198, 329, 191, 335, - 338, 350, 351, 126, 127, 217, 352, 126, 127, 339, - 353, 128, 197, -182, 354, 128, 103, 199, 355, 13, - 103, 362, 356, 371, 358, 200, 201, 377, 88, 198, - 175, 57, 202, 203, 204, 205, 206, 207, 208, 383, - 197, 209, 210, 333, 211, 212, 213, 214, 215, 216, - 252, 217, 341, 342, 72, 198, 343, 84, 166, 201, - 293, 96, 64, 242, 197, 202, 203, 204, 205, 206, - 207, 208, 297, 265, 209, 210, 252, 211, 212, 213, - 214, 215, 216, -204, 217, 201, 382, 0, 0, 368, - 247, 202, 203, 204, 205, 206, 207, 208, 0, 0, - 209, 210, 0, 211, 212, 213, 214, 215, 216, 0, - 217, 0, 0, 201, 0, 0, 0, 0, 0, 202, - -204, -204, -204, -204, 207, 208, 0, 0, 209, 210, - 0, 211, 212, 213, 214, 215, 216, 201, 217, 321, - 0, 0, 0, 202, 0, 0, 0, 0, -204, -204, - 0, 0, -204, -204, 0, 211, 212, 213, 214, 215, - 216, 0, 217, 0, 0, 0, 0, 0, 0, 0, - 0, 322, 0, 0, 0, 323, 0, 0, 0, 0, - 0, 324, 325, 0, 0, 373, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, - 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 374 + 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, + 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 }; static const yytype_int16 yycheck[] = { - 13, 95, 68, 42, 2, 118, 3, 3, 183, 3, - 42, 262, 10, 49, 73, 4, 5, 6, 3, 102, - 25, 3, 116, 81, 12, 149, 77, 19, 88, 123, - 9, 9, 37, 3, 128, 70, 155, 240, 121, 70, - 159, 39, 329, 41, 27, 98, 79, 49, 3, 102, - 48, 102, 103, 55, 124, 13, 126, 117, 97, 51, - 39, 39, 97, 146, 188, 98, 97, 242, 121, 356, - 121, 81, 105, 71, 72, 3, 4, 5, 6, 3, - 4, 5, 6, 177, 236, 83, 84, 145, 67, 94, - 149, 294, 71, 71, 102, 79, 162, 191, 273, 193, - 351, 90, 107, 61, 256, 81, 64, 120, 102, 145, - 90, 181, 40, 121, 98, 128, 40, 149, 114, 146, - 114, 105, 149, 95, 218, 49, 196, 121, 198, 109, - 102, 225, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 75, 145, 121, - 95, 75, 3, 138, 248, 249, 138, 102, 146, 91, - 335, 150, 90, 176, 96, 124, 90, 144, 61, 85, - 98, 64, 149, 124, 240, 124, 121, 102, 217, 0, - 105, 109, 141, 358, 143, 109, 299, 138, 139, 140, - 141, 230, 143, 113, 143, 123, 121, 102, 148, 123, - 105, 271, 99, 3, 4, 5, 6, 3, 147, 137, - 138, 26, 146, 137, 138, 149, 121, 145, 145, 313, - 314, 145, 150, 81, 146, 116, 150, 149, 294, 3, - 4, 5, 6, 3, 4, 5, 6, 104, 251, 237, - 40, 7, 146, 58, 145, 149, 147, 62, 146, 15, - 26, 149, 6, 68, 69, 349, 22, 12, 111, 146, - 273, 27, 149, 333, 116, 146, 40, 82, 34, 35, - 146, 86, 87, 149, 146, 75, 146, 43, 44, 149, - 374, 375, 58, 49, 146, 17, 62, 149, 54, 84, - 90, 101, 68, 69, 63, 115, 3, 109, 4, 80, - 73, 75, 145, 3, 40, 75, 82, 145, 67, 109, - 86, 87, 78, 45, 40, 4, 90, 3, 145, 143, - 90, 81, 335, 123, 149, 126, 3, 93, 46, 112, - 149, 3, 114, 85, 149, 109, 145, 137, 138, 109, - 49, 145, 3, 146, 3, 145, 45, 145, 145, 123, - 150, 80, 146, 123, 88, 60, 88, 149, 102, 145, - 90, 146, 146, 137, 138, 143, 86, 137, 138, 144, - 68, 145, 45, 149, 68, 145, 150, 109, 68, 145, - 150, 146, 86, 146, 115, 117, 118, 145, 53, 88, - 147, 18, 124, 125, 126, 127, 128, 129, 130, 146, - 45, 133, 134, 102, 136, 137, 138, 139, 140, 141, - 109, 143, 296, 299, 38, 88, 306, 47, 115, 118, - 219, 64, 31, 174, 45, 124, 125, 126, 127, 128, - 129, 130, 225, 189, 133, 134, 109, 136, 137, 138, - 139, 140, 141, 88, 143, 118, 377, -1, -1, 352, - 178, 124, 125, 126, 127, 128, 129, 130, -1, -1, - 133, 134, -1, 136, 137, 138, 139, 140, 141, -1, - 143, -1, -1, 118, -1, -1, -1, -1, -1, 124, + 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, + 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, 26, - -1, -1, -1, 124, -1, -1, -1, -1, 129, 130, - -1, -1, 133, 134, -1, 136, 137, 138, 139, 140, - 141, -1, 143, -1, -1, -1, -1, -1, -1, -1, - -1, 58, -1, -1, -1, 62, -1, -1, -1, -1, - -1, 68, 69, -1, -1, 72, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, - 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 120 + -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 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1059,36 +1050,37 @@ static const yytype_uint8 yystos[] = 71, 184, 185, 67, 184, 194, 3, 147, 145, 81, 116, 167, 167, 231, 104, 163, 231, 6, 222, 12, 188, 111, 116, 172, 172, 231, 146, 146, 154, 84, - 181, 182, 187, 101, 186, 115, 182, 63, 199, 3, - 4, 5, 90, 150, 201, 219, 220, 221, 222, 223, - 224, 4, 160, 109, 231, 231, 73, 191, 80, 145, - 176, 3, 40, 75, 109, 123, 137, 138, 145, 189, - 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 212, 213, 214, 215, 216, 217, 218, 219, 3, 178, - 179, 40, 231, 231, 145, 194, 195, 196, 203, 194, - 222, 146, 149, 40, 81, 145, 176, 203, 164, 220, - 3, 238, 55, 183, 145, 147, 145, 98, 203, 211, - 40, 109, 204, 143, 204, 183, 203, 81, 190, 149, - 3, 102, 114, 121, 232, 233, 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, 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, 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, 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 + 181, 182, 187, 101, 186, 115, 182, 46, 63, 199, + 3, 4, 5, 90, 150, 201, 219, 220, 221, 222, + 223, 224, 4, 160, 109, 231, 231, 73, 191, 80, + 145, 176, 3, 40, 75, 109, 123, 137, 138, 145, + 189, 200, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 212, 213, 214, 215, 216, 217, 218, 219, 3, + 178, 179, 40, 231, 231, 145, 194, 195, 196, 203, + 194, 222, 90, 101, 222, 146, 149, 40, 81, 145, + 176, 203, 164, 220, 3, 238, 55, 183, 145, 147, + 145, 98, 203, 211, 40, 109, 204, 143, 204, 183, + 203, 81, 190, 149, 3, 102, 114, 121, 232, 233, + 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, + 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1103,18 +1095,19 @@ static const yytype_uint8 yyr1[] = 180, 180, 181, 181, 182, 182, 183, 183, 184, 185, 185, 185, 186, 186, 187, 188, 188, 189, 190, 191, 191, 192, 192, 193, 193, 194, 194, 195, 195, 196, - 197, 197, 197, 198, 198, 199, 199, 199, 200, 200, - 201, 201, 202, 203, 203, 203, 203, 203, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 205, 205, 206, - 206, 206, 206, 206, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 208, 208, 209, 209, 209, - 209, 210, 210, 210, 210, 211, 211, 212, 212, 213, - 213, 213, 213, 213, 213, 213, 214, 214, 215, 216, - 217, 218, 218, 218, 218, 219, 219, 219, 219, 220, - 221, 221, 222, 223, 224, 225, 225, 226, 226, 227, - 227, 228, 228, 229, 230, 231, 231, 232, 232, 233, - 233, 234, 234, 234, 235, 235, 235, 235, 235, 235, - 235, 235, 235, 235, 236, 237, 237, 238, 238 + 197, 197, 197, 198, 198, 199, 199, 199, 199, 199, + 199, 199, 199, 200, 200, 201, 201, 202, 203, 203, + 203, 203, 203, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 205, 205, 206, 206, 206, 206, 206, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 208, 208, 209, 209, 209, 209, 210, 210, 210, 210, + 211, 211, 212, 212, 213, 213, 213, 213, 213, 213, + 213, 214, 214, 215, 216, 217, 218, 218, 218, 218, + 219, 219, 219, 219, 220, 221, 221, 222, 223, 224, + 225, 225, 226, 226, 227, 227, 228, 228, 229, 230, + 231, 231, 232, 232, 233, 233, 234, 234, 234, 235, + 235, 235, 235, 235, 235, 235, 235, 235, 235, 236, + 237, 237, 238, 238 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1129,18 +1122,19 @@ static const yytype_uint8 yyr2[] = 1, 5, 3, 3, 1, 1, 3, 5, 2, 1, 1, 1, 1, 0, 7, 1, 0, 1, 2, 2, 0, 4, 0, 2, 0, 3, 0, 1, 3, 2, - 1, 1, 0, 2, 0, 2, 4, 0, 1, 3, - 1, 3, 2, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 1, 2, - 2, 2, 3, 4, 1, 3, 3, 3, 3, 3, - 3, 3, 4, 3, 3, 3, 3, 5, 6, 5, - 6, 4, 6, 3, 5, 4, 5, 4, 5, 3, - 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, - 5, 1, 3, 1, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, - 4, 1, 3, 2, 1, 1, 3, 2, 1, 1, - 0, 4, 6, 8, 1, 2, 1, 2, 1, 2, - 1, 1, 1, 0, 1, 1, 0, 1, 3 + 1, 1, 0, 2, 0, 2, 4, 2, 2, 2, + 4, 4, 0, 1, 3, 1, 3, 2, 1, 1, + 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 1, 2, 2, 2, 3, 4, 1, + 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, + 3, 3, 5, 6, 5, 6, 4, 6, 3, 5, + 4, 5, 4, 5, 3, 3, 3, 3, 3, 3, + 3, 3, 5, 4, 4, 5, 1, 3, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 1, 1, 4, 1, 3, 2, 1, + 1, 3, 2, 1, 1, 0, 4, 6, 8, 1, + 2, 1, 2, 1, 2, 1, 1, 1, 0, 1, + 1, 0, 1, 3 }; @@ -1639,25 +1633,25 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio case 3: /* IDENTIFIER */ #line 140 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1643 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1637 "bison_parser.cpp" /* yacc.c:1257 */ break; case 4: /* STRING */ #line 140 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1649 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1643 "bison_parser.cpp" /* yacc.c:1257 */ break; case 5: /* FLOATVAL */ #line 138 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1655 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1649 "bison_parser.cpp" /* yacc.c:1257 */ break; case 6: /* INTVAL */ #line 138 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1661 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1655 "bison_parser.cpp" /* yacc.c:1257 */ break; case 153: /* statement_list */ @@ -1670,19 +1664,19 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).stmt_vec)); } -#line 1674 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1668 "bison_parser.cpp" /* yacc.c:1257 */ break; case 154: /* statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1680 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1674 "bison_parser.cpp" /* yacc.c:1257 */ break; case 155: /* preparable_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1686 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1680 "bison_parser.cpp" /* yacc.c:1257 */ break; case 156: /* opt_hints */ @@ -1695,7 +1689,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1699 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1693 "bison_parser.cpp" /* yacc.c:1257 */ break; case 157: /* hint_list */ @@ -1708,67 +1702,67 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1712 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1706 "bison_parser.cpp" /* yacc.c:1257 */ break; case 158: /* hint */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1718 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1712 "bison_parser.cpp" /* yacc.c:1257 */ break; case 159: /* prepare_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).prep_stmt)); } -#line 1724 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1718 "bison_parser.cpp" /* yacc.c:1257 */ break; case 160: /* prepare_target_query */ #line 140 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1730 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1724 "bison_parser.cpp" /* yacc.c:1257 */ break; case 161: /* execute_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).exec_stmt)); } -#line 1736 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1730 "bison_parser.cpp" /* yacc.c:1257 */ break; case 162: /* import_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).import_stmt)); } -#line 1742 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1736 "bison_parser.cpp" /* yacc.c:1257 */ break; case 163: /* import_file_type */ #line 138 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1748 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1742 "bison_parser.cpp" /* yacc.c:1257 */ break; case 164: /* file_path */ #line 140 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1754 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1748 "bison_parser.cpp" /* yacc.c:1257 */ break; case 165: /* show_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).show_stmt)); } -#line 1760 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1754 "bison_parser.cpp" /* yacc.c:1257 */ break; case 166: /* create_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).create_stmt)); } -#line 1766 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1760 "bison_parser.cpp" /* yacc.c:1257 */ break; case 167: /* opt_not_exists */ #line 138 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1772 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1766 "bison_parser.cpp" /* yacc.c:1257 */ break; case 168: /* column_def_commalist */ @@ -1781,49 +1775,49 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).column_vec)); } -#line 1785 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1779 "bison_parser.cpp" /* yacc.c:1257 */ break; case 169: /* column_def */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).column_t)); } -#line 1791 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1785 "bison_parser.cpp" /* yacc.c:1257 */ break; case 170: /* column_type */ #line 138 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1797 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1791 "bison_parser.cpp" /* yacc.c:1257 */ break; case 171: /* drop_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).drop_stmt)); } -#line 1803 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1797 "bison_parser.cpp" /* yacc.c:1257 */ break; case 172: /* opt_exists */ #line 138 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1809 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1803 "bison_parser.cpp" /* yacc.c:1257 */ break; case 173: /* delete_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1815 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1809 "bison_parser.cpp" /* yacc.c:1257 */ break; case 174: /* truncate_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1821 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1815 "bison_parser.cpp" /* yacc.c:1257 */ break; case 175: /* insert_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).insert_stmt)); } -#line 1827 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1821 "bison_parser.cpp" /* yacc.c:1257 */ break; case 176: /* opt_column_list */ @@ -1836,13 +1830,13 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 1840 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1834 "bison_parser.cpp" /* yacc.c:1257 */ break; case 177: /* update_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_stmt)); } -#line 1846 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1840 "bison_parser.cpp" /* yacc.c:1257 */ break; case 178: /* update_clause_commalist */ @@ -1855,49 +1849,49 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).update_vec)); } -#line 1859 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1853 "bison_parser.cpp" /* yacc.c:1257 */ break; case 179: /* update_clause */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_t)); } -#line 1865 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1859 "bison_parser.cpp" /* yacc.c:1257 */ break; case 180: /* select_statement */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1871 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1865 "bison_parser.cpp" /* yacc.c:1257 */ break; case 181: /* select_with_paren */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1877 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1871 "bison_parser.cpp" /* yacc.c:1257 */ break; case 182: /* select_paren_or_clause */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1883 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1877 "bison_parser.cpp" /* yacc.c:1257 */ break; case 183: /* select_no_paren */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1889 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1883 "bison_parser.cpp" /* yacc.c:1257 */ break; case 187: /* select_clause */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1895 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1889 "bison_parser.cpp" /* yacc.c:1257 */ break; case 188: /* opt_distinct */ #line 138 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1901 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1895 "bison_parser.cpp" /* yacc.c:1257 */ break; case 189: /* select_list */ @@ -1910,31 +1904,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1914 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1908 "bison_parser.cpp" /* yacc.c:1257 */ break; case 190: /* from_clause */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 1920 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1914 "bison_parser.cpp" /* yacc.c:1257 */ break; case 191: /* opt_where */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1926 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1920 "bison_parser.cpp" /* yacc.c:1257 */ break; case 192: /* opt_group */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).group_t)); } -#line 1932 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1926 "bison_parser.cpp" /* yacc.c:1257 */ break; case 193: /* opt_having */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1938 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1932 "bison_parser.cpp" /* yacc.c:1257 */ break; case 194: /* opt_order */ @@ -1947,7 +1941,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 1951 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1945 "bison_parser.cpp" /* yacc.c:1257 */ break; case 195: /* order_list */ @@ -1960,31 +1954,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 1964 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1958 "bison_parser.cpp" /* yacc.c:1257 */ break; case 196: /* order_desc */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).order)); } -#line 1970 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1964 "bison_parser.cpp" /* yacc.c:1257 */ break; case 197: /* opt_order_type */ #line 138 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1976 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1970 "bison_parser.cpp" /* yacc.c:1257 */ break; case 198: /* opt_top */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).limit)); } -#line 1982 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1976 "bison_parser.cpp" /* yacc.c:1257 */ break; case 199: /* opt_limit */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).limit)); } -#line 1988 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1982 "bison_parser.cpp" /* yacc.c:1257 */ break; case 200: /* expr_list */ @@ -1997,7 +1991,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2001 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1995 "bison_parser.cpp" /* yacc.c:1257 */ break; case 201: /* literal_list */ @@ -2010,163 +2004,163 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2014 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2008 "bison_parser.cpp" /* yacc.c:1257 */ break; case 202: /* expr_alias */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2020 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2014 "bison_parser.cpp" /* yacc.c:1257 */ break; case 203: /* expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2026 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2020 "bison_parser.cpp" /* yacc.c:1257 */ break; case 204: /* operand */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2032 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2026 "bison_parser.cpp" /* yacc.c:1257 */ break; case 205: /* scalar_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2038 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2032 "bison_parser.cpp" /* yacc.c:1257 */ break; case 206: /* unary_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2044 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2038 "bison_parser.cpp" /* yacc.c:1257 */ break; case 207: /* binary_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2050 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2044 "bison_parser.cpp" /* yacc.c:1257 */ break; case 208: /* logic_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2056 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2050 "bison_parser.cpp" /* yacc.c:1257 */ break; case 209: /* in_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2062 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2056 "bison_parser.cpp" /* yacc.c:1257 */ break; case 210: /* case_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2068 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2062 "bison_parser.cpp" /* yacc.c:1257 */ break; case 211: /* case_list */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2074 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2068 "bison_parser.cpp" /* yacc.c:1257 */ break; case 212: /* exists_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2080 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2074 "bison_parser.cpp" /* yacc.c:1257 */ break; case 213: /* comp_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2086 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2080 "bison_parser.cpp" /* yacc.c:1257 */ break; case 214: /* function_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2092 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2086 "bison_parser.cpp" /* yacc.c:1257 */ break; case 215: /* array_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2098 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2092 "bison_parser.cpp" /* yacc.c:1257 */ break; case 216: /* array_index */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2104 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2098 "bison_parser.cpp" /* yacc.c:1257 */ break; case 217: /* between_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2110 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2104 "bison_parser.cpp" /* yacc.c:1257 */ break; case 218: /* column_name */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2116 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2110 "bison_parser.cpp" /* yacc.c:1257 */ break; case 219: /* literal */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2122 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2116 "bison_parser.cpp" /* yacc.c:1257 */ break; case 220: /* string_literal */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2128 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2122 "bison_parser.cpp" /* yacc.c:1257 */ break; case 221: /* num_literal */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2134 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2128 "bison_parser.cpp" /* yacc.c:1257 */ break; case 222: /* int_literal */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2140 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2134 "bison_parser.cpp" /* yacc.c:1257 */ break; case 223: /* null_literal */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2146 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2140 "bison_parser.cpp" /* yacc.c:1257 */ break; case 224: /* param_expr */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2152 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2146 "bison_parser.cpp" /* yacc.c:1257 */ break; case 225: /* table_ref */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2158 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2152 "bison_parser.cpp" /* yacc.c:1257 */ break; case 226: /* table_ref_atomic */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2164 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2158 "bison_parser.cpp" /* yacc.c:1257 */ break; case 227: /* nonjoin_table_ref_atomic */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2170 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2164 "bison_parser.cpp" /* yacc.c:1257 */ break; case 228: /* table_ref_commalist */ @@ -2179,55 +2173,55 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).table_vec)); } -#line 2183 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2177 "bison_parser.cpp" /* yacc.c:1257 */ break; case 229: /* table_ref_name */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2189 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2183 "bison_parser.cpp" /* yacc.c:1257 */ break; case 230: /* table_ref_name_no_alias */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2195 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2189 "bison_parser.cpp" /* yacc.c:1257 */ break; case 231: /* table_name */ #line 139 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2201 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2195 "bison_parser.cpp" /* yacc.c:1257 */ break; case 232: /* alias */ #line 140 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 2207 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2201 "bison_parser.cpp" /* yacc.c:1257 */ break; case 233: /* opt_alias */ #line 140 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 2213 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2207 "bison_parser.cpp" /* yacc.c:1257 */ break; case 234: /* join_clause */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2219 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2213 "bison_parser.cpp" /* yacc.c:1257 */ break; case 235: /* opt_join_type */ #line 138 "bison_parser.y" /* yacc.c:1257 */ { } -#line 2225 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2219 "bison_parser.cpp" /* yacc.c:1257 */ break; case 236: /* join_condition */ #line 149 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2231 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2225 "bison_parser.cpp" /* yacc.c:1257 */ break; case 238: /* ident_commalist */ @@ -2240,7 +2234,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 2244 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2238 "bison_parser.cpp" /* yacc.c:1257 */ break; @@ -2348,7 +2342,7 @@ YYLTYPE yylloc = yyloc_default; yychar = YYEMPTY; /* Cause a token to be read. */ /* User initialization code. */ -#line 73 "bison_parser.y" /* yacc.c:1429 */ +#line 73 "bison_parser.y" /* yacc.c:1436 */ { // Initialize yylloc.first_column = 0; @@ -2359,7 +2353,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2363 "bison_parser.cpp" /* yacc.c:1429 */ +#line 2357 "bison_parser.cpp" /* yacc.c:1436 */ yylsp[0] = yylloc; goto yysetstate; @@ -2546,7 +2540,7 @@ yyreduce: switch (yyn) { case 2: -#line 247 "bison_parser.y" /* yacc.c:1646 */ +#line 247 "bison_parser.y" /* yacc.c:1661 */ { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -2564,226 +2558,226 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 2568 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2562 "bison_parser.cpp" /* yacc.c:1661 */ break; case 3: -#line 268 "bison_parser.y" /* yacc.c:1646 */ +#line 268 "bison_parser.y" /* yacc.c:1661 */ { (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 2579 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2573 "bison_parser.cpp" /* yacc.c:1661 */ break; case 4: -#line 274 "bison_parser.y" /* yacc.c:1646 */ +#line 274 "bison_parser.y" /* yacc.c:1661 */ { (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 2590 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2584 "bison_parser.cpp" /* yacc.c:1661 */ break; case 5: -#line 283 "bison_parser.y" /* yacc.c:1646 */ +#line 283 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2599 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2593 "bison_parser.cpp" /* yacc.c:1661 */ break; case 6: -#line 287 "bison_parser.y" /* yacc.c:1646 */ +#line 287 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2608 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2602 "bison_parser.cpp" /* yacc.c:1661 */ break; case 7: -#line 291 "bison_parser.y" /* yacc.c:1646 */ +#line 291 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 2616 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2610 "bison_parser.cpp" /* yacc.c:1661 */ break; case 8: -#line 298 "bison_parser.y" /* yacc.c:1646 */ +#line 298 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 2622 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2616 "bison_parser.cpp" /* yacc.c:1661 */ break; case 9: -#line 299 "bison_parser.y" /* yacc.c:1646 */ +#line 299 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 2628 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2622 "bison_parser.cpp" /* yacc.c:1661 */ break; case 10: -#line 300 "bison_parser.y" /* yacc.c:1646 */ +#line 300 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 2634 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2628 "bison_parser.cpp" /* yacc.c:1661 */ break; case 11: -#line 301 "bison_parser.y" /* yacc.c:1646 */ +#line 301 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 2640 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2634 "bison_parser.cpp" /* yacc.c:1661 */ break; case 12: -#line 302 "bison_parser.y" /* yacc.c:1646 */ +#line 302 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2646 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2640 "bison_parser.cpp" /* yacc.c:1661 */ break; case 13: -#line 303 "bison_parser.y" /* yacc.c:1646 */ +#line 303 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2652 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2646 "bison_parser.cpp" /* yacc.c:1661 */ break; case 14: -#line 304 "bison_parser.y" /* yacc.c:1646 */ +#line 304 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 2658 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2652 "bison_parser.cpp" /* yacc.c:1661 */ break; case 15: -#line 305 "bison_parser.y" /* yacc.c:1646 */ +#line 305 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 2664 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2658 "bison_parser.cpp" /* yacc.c:1661 */ break; case 16: -#line 306 "bison_parser.y" /* yacc.c:1646 */ +#line 306 "bison_parser.y" /* yacc.c:1661 */ { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 2670 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2664 "bison_parser.cpp" /* yacc.c:1661 */ break; case 17: -#line 315 "bison_parser.y" /* yacc.c:1646 */ +#line 315 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 2676 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2670 "bison_parser.cpp" /* yacc.c:1661 */ break; case 18: -#line 316 "bison_parser.y" /* yacc.c:1646 */ +#line 316 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr_vec) = nullptr; } -#line 2682 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2676 "bison_parser.cpp" /* yacc.c:1661 */ break; case 19: -#line 321 "bison_parser.y" /* yacc.c:1646 */ +#line 321 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 2688 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2682 "bison_parser.cpp" /* yacc.c:1661 */ break; case 20: -#line 322 "bison_parser.y" /* yacc.c:1646 */ +#line 322 "bison_parser.y" /* yacc.c:1661 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 2694 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2688 "bison_parser.cpp" /* yacc.c:1661 */ break; case 21: -#line 326 "bison_parser.y" /* yacc.c:1646 */ +#line 326 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 2703 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2697 "bison_parser.cpp" /* yacc.c:1661 */ break; case 22: -#line 330 "bison_parser.y" /* yacc.c:1646 */ +#line 330 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 2713 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2707 "bison_parser.cpp" /* yacc.c:1661 */ break; case 23: -#line 342 "bison_parser.y" /* yacc.c:1646 */ +#line 342 "bison_parser.y" /* yacc.c:1661 */ { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 2723 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2717 "bison_parser.cpp" /* yacc.c:1661 */ break; case 25: -#line 352 "bison_parser.y" /* yacc.c:1646 */ +#line 352 "bison_parser.y" /* yacc.c:1661 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 2732 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2726 "bison_parser.cpp" /* yacc.c:1661 */ break; case 26: -#line 356 "bison_parser.y" /* yacc.c:1646 */ +#line 356 "bison_parser.y" /* yacc.c:1661 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 2742 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2736 "bison_parser.cpp" /* yacc.c:1661 */ break; case 27: -#line 368 "bison_parser.y" /* yacc.c:1646 */ +#line 368 "bison_parser.y" /* yacc.c:1661 */ { (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 2753 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2747 "bison_parser.cpp" /* yacc.c:1661 */ break; case 28: -#line 377 "bison_parser.y" /* yacc.c:1646 */ +#line 377 "bison_parser.y" /* yacc.c:1661 */ { (yyval.uval) = kImportCSV; } -#line 2759 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2753 "bison_parser.cpp" /* yacc.c:1661 */ break; case 29: -#line 381 "bison_parser.y" /* yacc.c:1646 */ +#line 381 "bison_parser.y" /* yacc.c:1661 */ { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 2765 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2759 "bison_parser.cpp" /* yacc.c:1661 */ break; case 30: -#line 391 "bison_parser.y" /* yacc.c:1646 */ +#line 391 "bison_parser.y" /* yacc.c:1661 */ { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 2773 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2767 "bison_parser.cpp" /* yacc.c:1661 */ break; case 31: -#line 394 "bison_parser.y" /* yacc.c:1646 */ +#line 394 "bison_parser.y" /* yacc.c:1661 */ { (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 2783 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2777 "bison_parser.cpp" /* yacc.c:1661 */ break; case 32: -#line 408 "bison_parser.y" /* yacc.c:1646 */ +#line 408 "bison_parser.y" /* yacc.c:1661 */ { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -2791,11 +2785,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-4].table_name).name; (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 2795 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2789 "bison_parser.cpp" /* yacc.c:1661 */ break; case 33: -#line 415 "bison_parser.y" /* yacc.c:1646 */ +#line 415 "bison_parser.y" /* yacc.c:1661 */ { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2803,11 +2797,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 2807 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2801 "bison_parser.cpp" /* yacc.c:1661 */ break; case 34: -#line 422 "bison_parser.y" /* yacc.c:1646 */ +#line 422 "bison_parser.y" /* yacc.c:1661 */ { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2816,132 +2810,132 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 2820 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2814 "bison_parser.cpp" /* yacc.c:1661 */ break; case 35: -#line 433 "bison_parser.y" /* yacc.c:1646 */ +#line 433 "bison_parser.y" /* yacc.c:1661 */ { (yyval.bval) = true; } -#line 2826 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2820 "bison_parser.cpp" /* yacc.c:1661 */ break; case 36: -#line 434 "bison_parser.y" /* yacc.c:1646 */ +#line 434 "bison_parser.y" /* yacc.c:1661 */ { (yyval.bval) = false; } -#line 2832 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2826 "bison_parser.cpp" /* yacc.c:1661 */ break; case 37: -#line 438 "bison_parser.y" /* yacc.c:1646 */ +#line 438 "bison_parser.y" /* yacc.c:1661 */ { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 2838 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2832 "bison_parser.cpp" /* yacc.c:1661 */ break; case 38: -#line 439 "bison_parser.y" /* yacc.c:1646 */ +#line 439 "bison_parser.y" /* yacc.c:1661 */ { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 2844 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2838 "bison_parser.cpp" /* yacc.c:1661 */ break; case 39: -#line 443 "bison_parser.y" /* yacc.c:1646 */ +#line 443 "bison_parser.y" /* yacc.c:1661 */ { (yyval.column_t) = new ColumnDefinition((yyvsp[-1].sval), (ColumnDefinition::DataType) (yyvsp[0].uval)); } -#line 2852 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2846 "bison_parser.cpp" /* yacc.c:1661 */ break; case 40: -#line 450 "bison_parser.y" /* yacc.c:1646 */ +#line 450 "bison_parser.y" /* yacc.c:1661 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2858 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2852 "bison_parser.cpp" /* yacc.c:1661 */ break; case 41: -#line 451 "bison_parser.y" /* yacc.c:1646 */ +#line 451 "bison_parser.y" /* yacc.c:1661 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2864 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2858 "bison_parser.cpp" /* yacc.c:1661 */ break; case 42: -#line 452 "bison_parser.y" /* yacc.c:1646 */ +#line 452 "bison_parser.y" /* yacc.c:1661 */ { (yyval.uval) = ColumnDefinition::DOUBLE; } -#line 2870 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2864 "bison_parser.cpp" /* yacc.c:1661 */ break; case 43: -#line 453 "bison_parser.y" /* yacc.c:1646 */ +#line 453 "bison_parser.y" /* yacc.c:1661 */ { (yyval.uval) = ColumnDefinition::TEXT; } -#line 2876 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2870 "bison_parser.cpp" /* yacc.c:1661 */ break; case 44: -#line 463 "bison_parser.y" /* yacc.c:1646 */ +#line 463 "bison_parser.y" /* yacc.c:1661 */ { (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 2887 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2881 "bison_parser.cpp" /* yacc.c:1661 */ break; case 45: -#line 469 "bison_parser.y" /* yacc.c:1646 */ +#line 469 "bison_parser.y" /* yacc.c:1661 */ { (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 2898 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2892 "bison_parser.cpp" /* yacc.c:1661 */ break; case 46: -#line 475 "bison_parser.y" /* yacc.c:1646 */ +#line 475 "bison_parser.y" /* yacc.c:1661 */ { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 2908 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2902 "bison_parser.cpp" /* yacc.c:1661 */ break; case 47: -#line 483 "bison_parser.y" /* yacc.c:1646 */ +#line 483 "bison_parser.y" /* yacc.c:1661 */ { (yyval.bval) = true; } -#line 2914 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2908 "bison_parser.cpp" /* yacc.c:1661 */ break; case 48: -#line 484 "bison_parser.y" /* yacc.c:1646 */ +#line 484 "bison_parser.y" /* yacc.c:1661 */ { (yyval.bval) = false; } -#line 2920 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2914 "bison_parser.cpp" /* yacc.c:1661 */ break; case 49: -#line 493 "bison_parser.y" /* yacc.c:1646 */ +#line 493 "bison_parser.y" /* yacc.c:1661 */ { (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 2931 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2925 "bison_parser.cpp" /* yacc.c:1661 */ break; case 50: -#line 502 "bison_parser.y" /* yacc.c:1646 */ +#line 502 "bison_parser.y" /* yacc.c:1661 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 2941 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2935 "bison_parser.cpp" /* yacc.c:1661 */ break; case 51: -#line 515 "bison_parser.y" /* yacc.c:1646 */ +#line 515 "bison_parser.y" /* yacc.c:1661 */ { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -2949,11 +2943,11 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 2953 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2947 "bison_parser.cpp" /* yacc.c:1661 */ break; case 52: -#line 522 "bison_parser.y" /* yacc.c:1646 */ +#line 522 "bison_parser.y" /* yacc.c:1661 */ { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -2961,56 +2955,56 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 2965 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2959 "bison_parser.cpp" /* yacc.c:1661 */ break; case 53: -#line 533 "bison_parser.y" /* yacc.c:1646 */ +#line 533 "bison_parser.y" /* yacc.c:1661 */ { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 2971 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2965 "bison_parser.cpp" /* yacc.c:1661 */ break; case 54: -#line 534 "bison_parser.y" /* yacc.c:1646 */ +#line 534 "bison_parser.y" /* yacc.c:1661 */ { (yyval.str_vec) = nullptr; } -#line 2977 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2971 "bison_parser.cpp" /* yacc.c:1661 */ break; case 55: -#line 544 "bison_parser.y" /* yacc.c:1646 */ +#line 544 "bison_parser.y" /* yacc.c:1661 */ { (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 2988 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2982 "bison_parser.cpp" /* yacc.c:1661 */ break; case 56: -#line 553 "bison_parser.y" /* yacc.c:1646 */ +#line 553 "bison_parser.y" /* yacc.c:1661 */ { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 2994 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2988 "bison_parser.cpp" /* yacc.c:1661 */ break; case 57: -#line 554 "bison_parser.y" /* yacc.c:1646 */ +#line 554 "bison_parser.y" /* yacc.c:1661 */ { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3000 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2994 "bison_parser.cpp" /* yacc.c:1661 */ break; case 58: -#line 558 "bison_parser.y" /* yacc.c:1646 */ +#line 558 "bison_parser.y" /* yacc.c:1661 */ { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3010 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3004 "bison_parser.cpp" /* yacc.c:1661 */ break; case 61: -#line 572 "bison_parser.y" /* yacc.c:1646 */ +#line 572 "bison_parser.y" /* yacc.c:1661 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3025,23 +3019,23 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3029 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3023 "bison_parser.cpp" /* yacc.c:1661 */ break; case 62: -#line 589 "bison_parser.y" /* yacc.c:1646 */ +#line 589 "bison_parser.y" /* yacc.c:1661 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3035 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3029 "bison_parser.cpp" /* yacc.c:1661 */ break; case 63: -#line 590 "bison_parser.y" /* yacc.c:1646 */ +#line 590 "bison_parser.y" /* yacc.c:1661 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3041 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3035 "bison_parser.cpp" /* yacc.c:1661 */ break; case 66: -#line 599 "bison_parser.y" /* yacc.c:1646 */ +#line 599 "bison_parser.y" /* yacc.c:1661 */ { (yyval.select_stmt) = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -3052,11 +3046,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3056 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3050 "bison_parser.cpp" /* yacc.c:1661 */ break; case 67: -#line 609 "bison_parser.y" /* yacc.c:1646 */ +#line 609 "bison_parser.y" /* yacc.c:1661 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3071,11 +3065,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3075 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3069 "bison_parser.cpp" /* yacc.c:1661 */ break; case 74: -#line 641 "bison_parser.y" /* yacc.c:1646 */ +#line 641 "bison_parser.y" /* yacc.c:1661 */ { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -3085,530 +3079,560 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 3089 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3083 "bison_parser.cpp" /* yacc.c:1661 */ break; case 75: -#line 653 "bison_parser.y" /* yacc.c:1646 */ +#line 653 "bison_parser.y" /* yacc.c:1661 */ { (yyval.bval) = true; } -#line 3095 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3089 "bison_parser.cpp" /* yacc.c:1661 */ break; case 76: -#line 654 "bison_parser.y" /* yacc.c:1646 */ +#line 654 "bison_parser.y" /* yacc.c:1661 */ { (yyval.bval) = false; } -#line 3101 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3095 "bison_parser.cpp" /* yacc.c:1661 */ break; case 78: -#line 662 "bison_parser.y" /* yacc.c:1646 */ +#line 662 "bison_parser.y" /* yacc.c:1661 */ { (yyval.table) = (yyvsp[0].table); } -#line 3107 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3101 "bison_parser.cpp" /* yacc.c:1661 */ break; case 79: -#line 667 "bison_parser.y" /* yacc.c:1646 */ +#line 667 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr) = (yyvsp[0].expr); } -#line 3113 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3107 "bison_parser.cpp" /* yacc.c:1661 */ break; case 80: -#line 668 "bison_parser.y" /* yacc.c:1646 */ +#line 668 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr) = nullptr; } -#line 3119 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3113 "bison_parser.cpp" /* yacc.c:1661 */ break; case 81: -#line 672 "bison_parser.y" /* yacc.c:1646 */ +#line 672 "bison_parser.y" /* yacc.c:1661 */ { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 3129 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3123 "bison_parser.cpp" /* yacc.c:1661 */ break; case 82: -#line 677 "bison_parser.y" /* yacc.c:1646 */ +#line 677 "bison_parser.y" /* yacc.c:1661 */ { (yyval.group_t) = nullptr; } -#line 3135 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3129 "bison_parser.cpp" /* yacc.c:1661 */ break; case 83: -#line 681 "bison_parser.y" /* yacc.c:1646 */ +#line 681 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr) = (yyvsp[0].expr); } -#line 3141 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3135 "bison_parser.cpp" /* yacc.c:1661 */ break; case 84: -#line 682 "bison_parser.y" /* yacc.c:1646 */ +#line 682 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr) = nullptr; } -#line 3147 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3141 "bison_parser.cpp" /* yacc.c:1661 */ break; case 85: -#line 685 "bison_parser.y" /* yacc.c:1646 */ +#line 685 "bison_parser.y" /* yacc.c:1661 */ { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 3153 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3147 "bison_parser.cpp" /* yacc.c:1661 */ break; case 86: -#line 686 "bison_parser.y" /* yacc.c:1646 */ +#line 686 "bison_parser.y" /* yacc.c:1661 */ { (yyval.order_vec) = nullptr; } -#line 3159 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3153 "bison_parser.cpp" /* yacc.c:1661 */ break; case 87: -#line 690 "bison_parser.y" /* yacc.c:1646 */ +#line 690 "bison_parser.y" /* yacc.c:1661 */ { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 3165 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3159 "bison_parser.cpp" /* yacc.c:1661 */ break; case 88: -#line 691 "bison_parser.y" /* yacc.c:1646 */ +#line 691 "bison_parser.y" /* yacc.c:1661 */ { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 3171 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3165 "bison_parser.cpp" /* yacc.c:1661 */ break; case 89: -#line 695 "bison_parser.y" /* yacc.c:1646 */ +#line 695 "bison_parser.y" /* yacc.c:1661 */ { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 3177 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3171 "bison_parser.cpp" /* yacc.c:1661 */ break; case 90: -#line 699 "bison_parser.y" /* yacc.c:1646 */ +#line 699 "bison_parser.y" /* yacc.c:1661 */ { (yyval.order_type) = kOrderAsc; } -#line 3183 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3177 "bison_parser.cpp" /* yacc.c:1661 */ break; case 91: -#line 700 "bison_parser.y" /* yacc.c:1646 */ +#line 700 "bison_parser.y" /* yacc.c:1661 */ { (yyval.order_type) = kOrderDesc; } -#line 3189 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3183 "bison_parser.cpp" /* yacc.c:1661 */ break; case 92: -#line 701 "bison_parser.y" /* yacc.c:1646 */ +#line 701 "bison_parser.y" /* yacc.c:1661 */ { (yyval.order_type) = kOrderAsc; } -#line 3195 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3189 "bison_parser.cpp" /* yacc.c:1661 */ break; case 93: -#line 707 "bison_parser.y" /* yacc.c:1646 */ +#line 707 "bison_parser.y" /* yacc.c:1661 */ { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 3201 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3195 "bison_parser.cpp" /* yacc.c:1661 */ break; case 94: -#line 708 "bison_parser.y" /* yacc.c:1646 */ +#line 708 "bison_parser.y" /* yacc.c:1661 */ { (yyval.limit) = nullptr; } -#line 3207 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3201 "bison_parser.cpp" /* yacc.c:1661 */ break; case 95: -#line 712 "bison_parser.y" /* yacc.c:1646 */ +#line 712 "bison_parser.y" /* yacc.c:1661 */ { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 3213 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3207 "bison_parser.cpp" /* yacc.c:1661 */ break; case 96: -#line 713 "bison_parser.y" /* yacc.c:1646 */ +#line 713 "bison_parser.y" /* yacc.c:1661 */ { (yyval.limit) = new LimitDescription((yyvsp[-2].expr)->ival, (yyvsp[0].expr)->ival); delete (yyvsp[-2].expr); delete (yyvsp[0].expr); } -#line 3219 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3213 "bison_parser.cpp" /* yacc.c:1661 */ break; case 97: -#line 714 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } -#line 3225 "bison_parser.cpp" /* yacc.c:1646 */ +#line 714 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } +#line 3219 "bison_parser.cpp" /* yacc.c:1661 */ break; case 98: -#line 721 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3231 "bison_parser.cpp" /* yacc.c:1646 */ +#line 715 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.limit) = nullptr; } +#line 3225 "bison_parser.cpp" /* yacc.c:1661 */ break; case 99: -#line 722 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3237 "bison_parser.cpp" /* yacc.c:1646 */ +#line 716 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.limit) = nullptr; } +#line 3231 "bison_parser.cpp" /* yacc.c:1661 */ break; case 100: -#line 726 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3243 "bison_parser.cpp" /* yacc.c:1646 */ +#line 717 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } +#line 3237 "bison_parser.cpp" /* yacc.c:1661 */ break; case 101: -#line 727 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3249 "bison_parser.cpp" /* yacc.c:1646 */ +#line 718 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } +#line 3243 "bison_parser.cpp" /* yacc.c:1661 */ break; case 102: -#line 731 "bison_parser.y" /* yacc.c:1646 */ +#line 719 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.limit) = nullptr; } +#line 3249 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 103: +#line 726 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3255 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 104: +#line 727 "bison_parser.y" /* yacc.c:1661 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3261 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 105: +#line 731 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3267 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 106: +#line 732 "bison_parser.y" /* yacc.c:1661 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3273 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 107: +#line 736 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr) = (yyvsp[-1].expr); (yyval.expr)->alias = (yyvsp[0].sval); } -#line 3258 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3282 "bison_parser.cpp" /* yacc.c:1661 */ break; - case 108: -#line 746 "bison_parser.y" /* yacc.c:1646 */ + case 113: +#line 751 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr) = (yyvsp[-1].expr); } -#line 3264 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 116: -#line 754 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 3270 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 119: -#line 763 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 3276 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 120: -#line 764 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 3282 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3288 "bison_parser.cpp" /* yacc.c:1661 */ break; case 121: -#line 765 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 3288 "bison_parser.cpp" /* yacc.c:1646 */ +#line 759 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } +#line 3294 "bison_parser.cpp" /* yacc.c:1661 */ break; - case 122: -#line 766 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 3294 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 123: -#line 767 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 3300 "bison_parser.cpp" /* yacc.c:1646 */ + case 124: +#line 768 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } +#line 3300 "bison_parser.cpp" /* yacc.c:1661 */ break; case 125: -#line 772 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 3306 "bison_parser.cpp" /* yacc.c:1646 */ +#line 769 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } +#line 3306 "bison_parser.cpp" /* yacc.c:1661 */ break; case 126: -#line 773 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 3312 "bison_parser.cpp" /* yacc.c:1646 */ +#line 770 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } +#line 3312 "bison_parser.cpp" /* yacc.c:1661 */ break; case 127: -#line 774 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 3318 "bison_parser.cpp" /* yacc.c:1646 */ +#line 771 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } +#line 3318 "bison_parser.cpp" /* yacc.c:1661 */ break; case 128: -#line 775 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 3324 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 129: -#line 776 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 3330 "bison_parser.cpp" /* yacc.c:1646 */ +#line 772 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } +#line 3324 "bison_parser.cpp" /* yacc.c:1661 */ break; case 130: -#line 777 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 3336 "bison_parser.cpp" /* yacc.c:1646 */ +#line 777 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } +#line 3330 "bison_parser.cpp" /* yacc.c:1661 */ break; case 131: -#line 778 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 3342 "bison_parser.cpp" /* yacc.c:1646 */ +#line 778 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } +#line 3336 "bison_parser.cpp" /* yacc.c:1661 */ break; case 132: -#line 779 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 3348 "bison_parser.cpp" /* yacc.c:1646 */ +#line 779 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } +#line 3342 "bison_parser.cpp" /* yacc.c:1661 */ break; case 133: -#line 780 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 3354 "bison_parser.cpp" /* yacc.c:1646 */ +#line 780 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } +#line 3348 "bison_parser.cpp" /* yacc.c:1661 */ break; case 134: -#line 781 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 3360 "bison_parser.cpp" /* yacc.c:1646 */ +#line 781 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } +#line 3354 "bison_parser.cpp" /* yacc.c:1661 */ break; case 135: -#line 785 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 3366 "bison_parser.cpp" /* yacc.c:1646 */ +#line 782 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } +#line 3360 "bison_parser.cpp" /* yacc.c:1661 */ break; case 136: -#line 786 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 3372 "bison_parser.cpp" /* yacc.c:1646 */ +#line 783 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } +#line 3366 "bison_parser.cpp" /* yacc.c:1661 */ break; case 137: -#line 790 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 3378 "bison_parser.cpp" /* yacc.c:1646 */ +#line 784 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } +#line 3372 "bison_parser.cpp" /* yacc.c:1661 */ break; case 138: -#line 791 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 3384 "bison_parser.cpp" /* yacc.c:1646 */ +#line 785 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } +#line 3378 "bison_parser.cpp" /* yacc.c:1661 */ break; case 139: -#line 792 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 3390 "bison_parser.cpp" /* yacc.c:1646 */ +#line 786 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } +#line 3384 "bison_parser.cpp" /* yacc.c:1661 */ break; case 140: -#line 793 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 3396 "bison_parser.cpp" /* yacc.c:1646 */ +#line 790 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } +#line 3390 "bison_parser.cpp" /* yacc.c:1661 */ break; case 141: -#line 799 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 3402 "bison_parser.cpp" /* yacc.c:1646 */ +#line 791 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } +#line 3396 "bison_parser.cpp" /* yacc.c:1661 */ break; case 142: -#line 800 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3408 "bison_parser.cpp" /* yacc.c:1646 */ +#line 795 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } +#line 3402 "bison_parser.cpp" /* yacc.c:1661 */ break; case 143: -#line 801 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 3414 "bison_parser.cpp" /* yacc.c:1646 */ +#line 796 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } +#line 3408 "bison_parser.cpp" /* yacc.c:1661 */ break; case 144: -#line 802 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3420 "bison_parser.cpp" /* yacc.c:1646 */ +#line 797 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } +#line 3414 "bison_parser.cpp" /* yacc.c:1661 */ break; case 145: -#line 806 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 3426 "bison_parser.cpp" /* yacc.c:1646 */ +#line 798 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } +#line 3420 "bison_parser.cpp" /* yacc.c:1661 */ break; case 146: -#line 807 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 3432 "bison_parser.cpp" /* yacc.c:1646 */ +#line 804 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } +#line 3426 "bison_parser.cpp" /* yacc.c:1661 */ break; case 147: -#line 811 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 3438 "bison_parser.cpp" /* yacc.c:1646 */ +#line 805 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 3432 "bison_parser.cpp" /* yacc.c:1661 */ break; case 148: -#line 812 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 3444 "bison_parser.cpp" /* yacc.c:1646 */ +#line 806 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } +#line 3438 "bison_parser.cpp" /* yacc.c:1661 */ break; case 149: -#line 816 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3450 "bison_parser.cpp" /* yacc.c:1646 */ +#line 807 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 3444 "bison_parser.cpp" /* yacc.c:1661 */ break; case 150: -#line 817 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3456 "bison_parser.cpp" /* yacc.c:1646 */ +#line 811 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } +#line 3450 "bison_parser.cpp" /* yacc.c:1661 */ break; case 151: -#line 818 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 3462 "bison_parser.cpp" /* yacc.c:1646 */ +#line 812 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } +#line 3456 "bison_parser.cpp" /* yacc.c:1661 */ break; case 152: -#line 819 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 3468 "bison_parser.cpp" /* yacc.c:1646 */ +#line 816 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } +#line 3462 "bison_parser.cpp" /* yacc.c:1661 */ break; case 153: -#line 820 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 3474 "bison_parser.cpp" /* yacc.c:1646 */ +#line 817 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } +#line 3468 "bison_parser.cpp" /* yacc.c:1661 */ break; case 154: -#line 821 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 3480 "bison_parser.cpp" /* yacc.c:1646 */ +#line 821 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } +#line 3474 "bison_parser.cpp" /* yacc.c:1661 */ break; case 155: -#line 822 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 3486 "bison_parser.cpp" /* yacc.c:1646 */ +#line 822 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } +#line 3480 "bison_parser.cpp" /* yacc.c:1661 */ break; case 156: -#line 826 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 3492 "bison_parser.cpp" /* yacc.c:1646 */ +#line 823 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } +#line 3486 "bison_parser.cpp" /* yacc.c:1661 */ break; case 157: -#line 827 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 3498 "bison_parser.cpp" /* yacc.c:1646 */ +#line 824 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } +#line 3492 "bison_parser.cpp" /* yacc.c:1661 */ break; case 158: -#line 831 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 3504 "bison_parser.cpp" /* yacc.c:1646 */ +#line 825 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } +#line 3498 "bison_parser.cpp" /* yacc.c:1661 */ break; case 159: -#line 835 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 3510 "bison_parser.cpp" /* yacc.c:1646 */ +#line 826 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } +#line 3504 "bison_parser.cpp" /* yacc.c:1661 */ break; case 160: -#line 839 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3516 "bison_parser.cpp" /* yacc.c:1646 */ +#line 827 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } +#line 3510 "bison_parser.cpp" /* yacc.c:1661 */ break; case 161: -#line 843 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 3522 "bison_parser.cpp" /* yacc.c:1646 */ +#line 831 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } +#line 3516 "bison_parser.cpp" /* yacc.c:1661 */ break; case 162: -#line 844 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 3528 "bison_parser.cpp" /* yacc.c:1646 */ +#line 832 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } +#line 3522 "bison_parser.cpp" /* yacc.c:1661 */ break; case 163: -#line 845 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeStar(); } -#line 3534 "bison_parser.cpp" /* yacc.c:1646 */ +#line 836 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } +#line 3528 "bison_parser.cpp" /* yacc.c:1661 */ break; case 164: -#line 846 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 3540 "bison_parser.cpp" /* yacc.c:1646 */ +#line 840 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } +#line 3534 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 165: +#line 844 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 3540 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 166: +#line 848 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } +#line 3546 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 167: +#line 849 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } +#line 3552 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 168: +#line 850 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeStar(); } +#line 3558 "bison_parser.cpp" /* yacc.c:1661 */ break; case 169: -#line 857 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 3546 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 170: -#line 862 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 3552 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 172: -#line 867 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 3558 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 173: -#line 871 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeNullLiteral(); } -#line 3564 "bison_parser.cpp" /* yacc.c:1646 */ +#line 851 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } +#line 3564 "bison_parser.cpp" /* yacc.c:1661 */ break; case 174: -#line 875 "bison_parser.y" /* yacc.c:1646 */ +#line 862 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } +#line 3570 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 175: +#line 867 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } +#line 3576 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 177: +#line 872 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } +#line 3582 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 178: +#line 876 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.expr) = Expr::makeNullLiteral(); } +#line 3588 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 179: +#line 880 "bison_parser.y" /* yacc.c:1661 */ { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 3574 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3598 "bison_parser.cpp" /* yacc.c:1661 */ break; - case 176: -#line 888 "bison_parser.y" /* yacc.c:1646 */ + case 181: +#line 893 "bison_parser.y" /* yacc.c:1661 */ { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 3585 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3609 "bison_parser.cpp" /* yacc.c:1661 */ break; - case 180: -#line 904 "bison_parser.y" /* yacc.c:1646 */ + case 185: +#line 909 "bison_parser.y" /* yacc.c:1661 */ { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].sval); (yyval.table) = tbl; } -#line 3596 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3620 "bison_parser.cpp" /* yacc.c:1661 */ break; - case 181: -#line 913 "bison_parser.y" /* yacc.c:1646 */ + case 186: +#line 918 "bison_parser.y" /* yacc.c:1661 */ { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 3602 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3626 "bison_parser.cpp" /* yacc.c:1661 */ break; - case 182: -#line 914 "bison_parser.y" /* yacc.c:1646 */ + case 187: +#line 919 "bison_parser.y" /* yacc.c:1661 */ { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 3608 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3632 "bison_parser.cpp" /* yacc.c:1661 */ break; - case 183: -#line 919 "bison_parser.y" /* yacc.c:1646 */ + case 188: +#line 924 "bison_parser.y" /* yacc.c:1661 */ { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -3616,45 +3640,45 @@ yyreduce: tbl->alias = (yyvsp[0].sval); (yyval.table) = tbl; } -#line 3620 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3644 "bison_parser.cpp" /* yacc.c:1661 */ break; - case 184: -#line 930 "bison_parser.y" /* yacc.c:1646 */ + case 189: +#line 935 "bison_parser.y" /* yacc.c:1661 */ { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 3630 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 185: -#line 939 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} -#line 3636 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 186: -#line 940 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 3642 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 187: -#line 945 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.sval) = (yyvsp[0].sval); } -#line 3648 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3654 "bison_parser.cpp" /* yacc.c:1661 */ break; case 190: -#line 951 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.sval) = nullptr; } -#line 3654 "bison_parser.cpp" /* yacc.c:1646 */ +#line 944 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} +#line 3660 "bison_parser.cpp" /* yacc.c:1661 */ break; case 191: -#line 960 "bison_parser.y" /* yacc.c:1646 */ +#line 945 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } +#line 3666 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 192: +#line 950 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.sval) = (yyvsp[0].sval); } +#line 3672 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 195: +#line 956 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.sval) = nullptr; } +#line 3678 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 196: +#line 965 "bison_parser.y" /* yacc.c:1661 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3662,11 +3686,11 @@ yyreduce: (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 3666 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3690 "bison_parser.cpp" /* yacc.c:1661 */ break; - case 192: -#line 968 "bison_parser.y" /* yacc.c:1646 */ + case 197: +#line 973 "bison_parser.y" /* yacc.c:1661 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3675,11 +3699,11 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 3679 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3703 "bison_parser.cpp" /* yacc.c:1661 */ break; - case 193: -#line 978 "bison_parser.y" /* yacc.c:1646 */ + case 198: +#line 983 "bison_parser.y" /* yacc.c:1661 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3695,83 +3719,83 @@ yyreduce: (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 3699 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 194: -#line 996 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinInner; } -#line 3705 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 195: -#line 997 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinLeft; } -#line 3711 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 196: -#line 998 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinLeft; } -#line 3717 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 197: -#line 999 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinRight; } -#line 3723 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 198: -#line 1000 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinRight; } -#line 3729 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3723 "bison_parser.cpp" /* yacc.c:1661 */ break; case 199: -#line 1001 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } -#line 3735 "bison_parser.cpp" /* yacc.c:1646 */ +#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:1646 */ - { (yyval.uval) = kJoinFull; } -#line 3741 "bison_parser.cpp" /* yacc.c:1646 */ +#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:1646 */ - { (yyval.uval) = kJoinFull; } -#line 3747 "bison_parser.cpp" /* yacc.c:1646 */ +#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:1646 */ - { (yyval.uval) = kJoinCross; } -#line 3753 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1004 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.uval) = kJoinRight; } +#line 3747 "bison_parser.cpp" /* yacc.c:1661 */ break; case 203: -#line 1005 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinInner; } -#line 3759 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1005 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.uval) = kJoinRight; } +#line 3753 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 204: +#line 1006 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.uval) = kJoinFull; } +#line 3759 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 205: +#line 1007 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.uval) = kJoinFull; } +#line 3765 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 206: +#line 1008 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.uval) = kJoinFull; } +#line 3771 "bison_parser.cpp" /* yacc.c:1661 */ break; case 207: -#line 1025 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 3765 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1009 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.uval) = kJoinCross; } +#line 3777 "bison_parser.cpp" /* yacc.c:1661 */ break; case 208: -#line 1026 "bison_parser.y" /* yacc.c:1646 */ +#line 1010 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.uval) = kJoinInner; } +#line 3783 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 212: +#line 1030 "bison_parser.y" /* yacc.c:1661 */ + { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } +#line 3789 "bison_parser.cpp" /* yacc.c:1661 */ + break; + + case 213: +#line 1031 "bison_parser.y" /* yacc.c:1661 */ { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 3771 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3795 "bison_parser.cpp" /* yacc.c:1661 */ break; -#line 3775 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3799 "bison_parser.cpp" /* yacc.c:1661 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4006,7 +4030,7 @@ yyreturn: #endif return yyresult; } -#line 1029 "bison_parser.y" /* yacc.c:1906 */ +#line 1034 "bison_parser.y" /* yacc.c:1906 */ /********************************* ** Section 4: Additional C code diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 0d89603..7b6edc9 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:1909 */ +#line 35 "bison_parser.y" /* yacc.c:1915 */ // %code requires block @@ -72,7 +72,7 @@ extern int hsql_debug; } \ } -#line 76 "bison_parser.h" /* yacc.c:1909 */ +#line 76 "bison_parser.h" /* yacc.c:1915 */ /* Token type. */ #ifndef HSQL_TOKENTYPE @@ -218,7 +218,7 @@ extern int hsql_debug; union HSQL_STYPE { -#line 95 "bison_parser.y" /* yacc.c:1909 */ +#line 95 "bison_parser.y" /* yacc.c:1915 */ double fval; int64_t ival; @@ -257,7 +257,7 @@ union HSQL_STYPE std::vector* expr_vec; std::vector* order_vec; -#line 261 "bison_parser.h" /* yacc.c:1909 */ +#line 261 "bison_parser.h" /* yacc.c:1915 */ }; typedef union HSQL_STYPE HSQL_STYPE; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 02ae8e3..3b40551 100755 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -711,6 +711,11 @@ opt_top: opt_limit: LIMIT int_literal { $$ = new LimitDescription($2->ival, kNoOffset); delete $2; } | LIMIT int_literal OFFSET int_literal { $$ = new LimitDescription($2->ival, $4->ival); delete $2; delete $4; } + | OFFSET int_literal { $$ = new LimitDescription(kNoLimit, $2->ival); delete $2; } + | LIMIT ALL { $$ = nullptr; } + | LIMIT NULL { $$ = nullptr; } + | LIMIT ALL OFFSET int_literal { $$ = new LimitDescription(kNoLimit, $4->ival); delete $4; } + | LIMIT NULL OFFSET int_literal { $$ = new LimitDescription(kNoLimit, $4->ival); delete $4; } | /* empty */ { $$ = nullptr; } ; diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index a36cb11..b2a47ac 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -8,8 +8,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 1 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -47,6 +47,7 @@ typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; @@ -54,6 +55,7 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -84,17 +86,27 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#endif /* ! C99 */ - #endif /* ! FLEXINT_H */ -/* TODO: this is always defined, so inline it */ -#define yyconst const +#ifdef __cplusplus -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const #else -#define yynoreturn +#define yyconst #endif /* Returned upon end-of-file. */ @@ -147,15 +159,7 @@ typedef void* yyscan_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else #define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -177,7 +181,6 @@ typedef size_t yy_size_t; #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -207,12 +210,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -235,7 +238,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -291,7 +294,7 @@ static void hsql__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner YY_BUFFER_STATE hsql__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE hsql__scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE hsql__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); +YY_BUFFER_STATE hsql__scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *hsql_alloc (yy_size_t ,yyscan_t yyscanner ); void *hsql_realloc (void *,yy_size_t ,yyscan_t yyscanner ); @@ -323,7 +326,7 @@ void hsql_free (void * ,yyscan_t yyscanner ); /* Begin user sect3 */ -#define hsql_wrap(yyscanner) (/*CONSTCOND*/1) +#define hsql_wrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; @@ -335,14 +338,14 @@ typedef int yy_state_type; static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); -static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner ); +static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; @@ -464,7 +467,7 @@ static yyconst flex_int16_t yy_accept[942] = 0 } ; -static yyconst YY_CHAR yy_ec[256] = +static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -496,7 +499,7 @@ static yyconst YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst YY_CHAR yy_meta[68] = +static yyconst flex_int32_t yy_meta[68] = { 0, 1, 1, 2, 1, 3, 1, 1, 1, 1, 4, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, @@ -507,7 +510,7 @@ static yyconst YY_CHAR yy_meta[68] = 4, 4, 4, 4, 4, 4, 1 } ; -static yyconst flex_uint16_t yy_base[949] = +static yyconst flex_int16_t yy_base[949] = { 0, 0, 0, 67, 0, 454, 3713, 133, 135, 423, 0, 3713, 426, 131, 420, 133, 132, 405, 399, 129, 129, @@ -723,7 +726,7 @@ static yyconst flex_int16_t yy_def[949] = 0, 941, 941, 941, 941, 941, 941, 941 } ; -static yyconst flex_uint16_t yy_nxt[3781] = +static yyconst flex_int16_t yy_nxt[3781] = { 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, @@ -1597,7 +1600,7 @@ static yyconst flex_int16_t yy_chk[3781] = /*************************** ** Section 3: Rules ***************************/ -#line 1601 "flex_lexer.cpp" +#line 1604 "flex_lexer.cpp" #define INITIAL 0 #define COMMENT 1 @@ -1627,8 +1630,8 @@ struct yyguts_t size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; - int yy_n_chars; - int yyleng_r; + yy_size_t yy_n_chars; + yy_size_t yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; @@ -1679,23 +1682,19 @@ void hsql_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *hsql_get_in (yyscan_t yyscanner ); -void hsql_set_in (FILE * _in_str ,yyscan_t yyscanner ); +void hsql_set_in (FILE * in_str ,yyscan_t yyscanner ); FILE *hsql_get_out (yyscan_t yyscanner ); -void hsql_set_out (FILE * _out_str ,yyscan_t yyscanner ); +void hsql_set_out (FILE * out_str ,yyscan_t yyscanner ); - int hsql_get_leng (yyscan_t yyscanner ); +yy_size_t hsql_get_leng (yyscan_t yyscanner ); char *hsql_get_text (yyscan_t yyscanner ); int hsql_get_lineno (yyscan_t yyscanner ); -void hsql_set_lineno (int _line_number ,yyscan_t yyscanner ); - -int hsql_get_column (yyscan_t yyscanner ); - -void hsql_set_column (int _column_no ,yyscan_t yyscanner ); +void hsql_set_lineno (int line_number ,yyscan_t yyscanner ); YYSTYPE * hsql_get_lval (yyscan_t yyscanner ); @@ -1717,10 +1716,6 @@ extern int hsql_wrap (yyscan_t yyscanner ); #endif #endif -#ifndef YY_NO_UNPUT - -#endif - #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif @@ -1741,12 +1736,7 @@ static int input (yyscan_t yyscanner ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else #define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1754,7 +1744,7 @@ static int input (yyscan_t yyscanner ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#define ECHO fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -1765,7 +1755,7 @@ static int input (yyscan_t yyscanner ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - size_t n; \ + yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -1778,7 +1768,7 @@ static int input (yyscan_t yyscanner ); else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -1835,7 +1825,7 @@ extern int hsql_lex \ /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; +#define YY_BREAK break; #endif #define YY_RULE_SETUP \ @@ -1845,11 +1835,16 @@ extern int hsql_lex \ */ YY_DECL { - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +#line 51 "flex_lexer.l" + + +#line 1847 "flex_lexer.cpp" + yylval = yylval_param; yylloc = yylloc_param; @@ -1880,13 +1875,7 @@ YY_DECL hsql__load_buffer_state(yyscanner ); } - { -#line 51 "flex_lexer.l" - - -#line 1888 "flex_lexer.cpp" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; @@ -1902,7 +1891,7 @@ YY_DECL yy_match: do { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; @@ -1914,7 +1903,7 @@ yy_match: if ( yy_current_state >= 942 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_current_state != 941 ); @@ -2639,7 +2628,7 @@ YY_RULE_SETUP #line 219 "flex_lexer.l" ECHO; YY_BREAK -#line 2643 "flex_lexer.cpp" +#line 2632 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -2772,7 +2761,6 @@ case YY_STATE_EOF(COMMENT): "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of user's declarations */ } /* end of hsql_lex */ /* yy_get_next_buffer - try to read in a new buffer @@ -2785,9 +2773,9 @@ case YY_STATE_EOF(COMMENT): static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = yyg->yytext_ptr; - int number_to_move, i; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = yyg->yytext_ptr; + register int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) @@ -2816,7 +2804,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1); + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -2829,21 +2817,21 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -2856,7 +2844,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; + b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -2898,9 +2886,9 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) hsql_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); @@ -2919,15 +2907,15 @@ static int yy_get_next_buffer (yyscan_t yyscanner) static yy_state_type yy_get_previous_state (yyscan_t yyscanner) { - yy_state_type yy_current_state; - char *yy_cp; + register yy_state_type yy_current_state; + register char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_current_state = yyg->yy_start; for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) { - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; @@ -2939,7 +2927,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) if ( yy_current_state >= 942 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; @@ -2952,11 +2940,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) { - int yy_is_jam; + register int yy_is_jam; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ - char *yy_cp = yyg->yy_c_buf_p; + register char *yy_cp = yyg->yy_c_buf_p; - YY_CHAR yy_c = 1; + register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; @@ -2968,17 +2956,12 @@ static int yy_get_next_buffer (yyscan_t yyscanner) if ( yy_current_state >= 942 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 941); - (void)yyg; return yy_is_jam ? 0 : yy_current_state; } -#ifndef YY_NO_UNPUT - -#endif - #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner) @@ -3004,7 +2987,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { /* need more input */ - int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) @@ -3132,7 +3115,7 @@ static void hsql__load_buffer_state (yyscan_t yyscanner) if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in hsql__create_buffer()" ); - b->yy_buf_size = (yy_size_t)size; + b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. @@ -3284,7 +3267,7 @@ void hsql_pop_buffer_state (yyscan_t yyscanner) */ static void hsql_ensure_buffer_stack (yyscan_t yyscanner) { - int num_to_alloc; + yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { @@ -3293,15 +3276,15 @@ static void hsql_ensure_buffer_stack (yyscan_t yyscanner) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + num_to_alloc = 1; yyg->yy_buffer_stack = (struct yy_buffer_state**)hsql_alloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in hsql_ensure_buffer_stack()" ); - + memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; @@ -3310,7 +3293,7 @@ static void hsql_ensure_buffer_stack (yyscan_t yyscanner) if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; + int grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)hsql_realloc @@ -3330,7 +3313,7 @@ static void hsql_ensure_buffer_stack (yyscan_t yyscanner) * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE hsql__scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { @@ -3340,7 +3323,7 @@ YY_BUFFER_STATE hsql__scan_buffer (char * base, yy_size_t size , yyscan_t yysc base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return NULL; + return 0; b = (YY_BUFFER_STATE) hsql_alloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) @@ -3349,7 +3332,7 @@ YY_BUFFER_STATE hsql__scan_buffer (char * base, yy_size_t size , yyscan_t yysc b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; + b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; @@ -3372,25 +3355,24 @@ YY_BUFFER_STATE hsql__scan_buffer (char * base, yy_size_t size , yyscan_t yysc YY_BUFFER_STATE hsql__scan_string (yyconst char * yystr , yyscan_t yyscanner) { - return hsql__scan_bytes(yystr,(int) strlen(yystr) ,yyscanner); + return hsql__scan_bytes(yystr,strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to hsql_lex() will * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE hsql__scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) +YY_BUFFER_STATE hsql__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; - yy_size_t n; - int i; + yy_size_t n, i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); + n = _yybytes_len + 2; buf = (char *) hsql_alloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in hsql__scan_bytes()" ); @@ -3416,11 +3398,9 @@ YY_BUFFER_STATE hsql__scan_bytes (yyconst char * yybytes, int _yybytes_len , y #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) +static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - (void) fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -3458,7 +3438,7 @@ YY_EXTRA_TYPE hsql_get_extra (yyscan_t yyscanner) int hsql_get_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - + if (! YY_CURRENT_BUFFER) return 0; @@ -3471,7 +3451,7 @@ int hsql_get_lineno (yyscan_t yyscanner) int hsql_get_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - + if (! YY_CURRENT_BUFFER) return 0; @@ -3499,7 +3479,7 @@ FILE *hsql_get_out (yyscan_t yyscanner) /** Get the length of the current token. * @param yyscanner The scanner object. */ -int hsql_get_leng (yyscan_t yyscanner) +yy_size_t hsql_get_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; @@ -3526,51 +3506,51 @@ void hsql_set_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) } /** Set the current line number. - * @param _line_number line number + * @param line_number * @param yyscanner The scanner object. */ -void hsql_set_lineno (int _line_number , yyscan_t yyscanner) +void hsql_set_lineno (int line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - YY_FATAL_ERROR( "hsql_set_lineno called with no buffer" ); + yy_fatal_error( "hsql_set_lineno called with no buffer" , yyscanner); - yylineno = _line_number; + yylineno = line_number; } /** Set the current column. - * @param _column_no column number + * @param line_number * @param yyscanner The scanner object. */ -void hsql_set_column (int _column_no , yyscan_t yyscanner) +void hsql_set_column (int column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - YY_FATAL_ERROR( "hsql_set_column called with no buffer" ); + yy_fatal_error( "hsql_set_column called with no buffer" , yyscanner); - yycolumn = _column_no; + yycolumn = column_no; } /** Set the input stream. This does not discard the current * input buffer. - * @param _in_str A readable stream. + * @param in_str A readable stream. * @param yyscanner The scanner object. * @see hsql__switch_to_buffer */ -void hsql_set_in (FILE * _in_str , yyscan_t yyscanner) +void hsql_set_in (FILE * in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyin = _in_str ; + yyin = in_str ; } -void hsql_set_out (FILE * _out_str , yyscan_t yyscanner) +void hsql_set_out (FILE * out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyout = _out_str ; + yyout = out_str ; } int hsql_get_debug (yyscan_t yyscanner) @@ -3579,10 +3559,10 @@ int hsql_get_debug (yyscan_t yyscanner) return yy_flex_debug; } -void hsql_set_debug (int _bdebug , yyscan_t yyscanner) +void hsql_set_debug (int bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = _bdebug ; + yy_flex_debug = bdebug ; } /* Accessor methods for yylval and yylloc */ @@ -3658,20 +3638,20 @@ int hsql_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) errno = EINVAL; return 1; } - + *ptr_yy_globals = (yyscan_t) hsql_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); - + if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } - + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - + hsql_set_extra (yy_user_defined, *ptr_yy_globals); - + return yy_init_globals ( *ptr_yy_globals ); } @@ -3682,10 +3662,10 @@ static int yy_init_globals (yyscan_t yyscanner) * This function is called from hsql_lex_destroy(), so don't allocate here. */ - yyg->yy_buffer_stack = NULL; + yyg->yy_buffer_stack = 0; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = NULL; + yyg->yy_c_buf_p = (char *) 0; yyg->yy_init = 0; yyg->yy_start = 0; @@ -3698,8 +3678,8 @@ static int yy_init_globals (yyscan_t yyscanner) yyin = stdin; yyout = stdout; #else - yyin = NULL; - yyout = NULL; + yyin = (FILE *) 0; + yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by @@ -3745,10 +3725,7 @@ int hsql_lex_destroy (yyscan_t yyscanner) #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - - int i; + register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } @@ -3757,7 +3734,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yysca #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { - int n; + register int n; for ( n = 0; s[n]; ++n ) ; @@ -3767,16 +3744,11 @@ static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) void *hsql_alloc (yy_size_t size , yyscan_t yyscanner) { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - return malloc(size); + return (void *) malloc( size ); } void *hsql_realloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -3784,13 +3756,11 @@ void *hsql_realloc (void * ptr, yy_size_t size , yyscan_t yyscanner) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return realloc(ptr, size); + return (void *) realloc( (char *) ptr, size ); } void hsql_free (void * ptr , yyscan_t yyscanner) { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; free( (char *) ptr ); /* see hsql_realloc() for (char *) cast */ } diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index 4fb052b..2422929 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -12,8 +12,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 1 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -51,6 +51,7 @@ typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; @@ -58,6 +59,7 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -88,17 +90,27 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#endif /* ! C99 */ - #endif /* ! FLEXINT_H */ -/* TODO: this is always defined, so inline it */ -#define yyconst const +#ifdef __cplusplus -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const #else -#define yynoreturn +#define yyconst #endif /* An opaque pointer. */ @@ -120,15 +132,7 @@ typedef void* yyscan_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else #define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ #endif #ifndef YY_TYPEDEF_YY_BUFFER_STATE @@ -153,12 +157,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -181,7 +185,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -202,7 +206,7 @@ void hsql_pop_buffer_state (yyscan_t yyscanner ); YY_BUFFER_STATE hsql__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE hsql__scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE hsql__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); +YY_BUFFER_STATE hsql__scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *hsql_alloc (yy_size_t ,yyscan_t yyscanner ); void *hsql_realloc (void *,yy_size_t ,yyscan_t yyscanner ); @@ -210,7 +214,7 @@ void hsql_free (void * ,yyscan_t yyscanner ); /* Begin user sect3 */ -#define hsql_wrap(yyscanner) (/*CONSTCOND*/1) +#define hsql_wrap(n) 1 #define YY_SKIP_YYWRAP #define yytext_ptr yytext_r @@ -252,23 +256,19 @@ void hsql_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *hsql_get_in (yyscan_t yyscanner ); -void hsql_set_in (FILE * _in_str ,yyscan_t yyscanner ); +void hsql_set_in (FILE * in_str ,yyscan_t yyscanner ); FILE *hsql_get_out (yyscan_t yyscanner ); -void hsql_set_out (FILE * _out_str ,yyscan_t yyscanner ); +void hsql_set_out (FILE * out_str ,yyscan_t yyscanner ); - int hsql_get_leng (yyscan_t yyscanner ); +yy_size_t hsql_get_leng (yyscan_t yyscanner ); char *hsql_get_text (yyscan_t yyscanner ); int hsql_get_lineno (yyscan_t yyscanner ); -void hsql_set_lineno (int _line_number ,yyscan_t yyscanner ); - -int hsql_get_column (yyscan_t yyscanner ); - -void hsql_set_column (int _column_no ,yyscan_t yyscanner ); +void hsql_set_lineno (int line_number ,yyscan_t yyscanner ); YYSTYPE * hsql_get_lval (yyscan_t yyscanner ); @@ -304,12 +304,7 @@ static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else #define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ #endif /* Number of entries by which start-condition stack grows. */ @@ -347,6 +342,6 @@ extern int hsql_lex \ #line 219 "flex_lexer.l" -#line 351 "flex_lexer.h" +#line 346 "flex_lexer.h" #undef hsql_IN_HEADER #endif /* hsql_HEADER_H */ diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index 380db06..458a846 100755 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -156,8 +156,8 @@ namespace hsql { // LimitDescription LimitDescription::LimitDescription(int64_t limit, int64_t offset) : - limit(limit), - offset(offset) {} + limit(limit >= 0 ? limit : kNoLimit), + offset(offset > 0 ? offset : kNoOffset) {} // GroypByDescription GroupByDescription::GroupByDescription() : diff --git a/test/select_tests.cpp b/test/select_tests.cpp index 744cb46..ecf544e 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -438,4 +438,61 @@ TEST(JoinTypes) { stmt = (SelectStatement*) result.getStatement(11); ASSERT_NULL(stmt->fromTable->join); -} \ No newline at end of file +} + +TEST(SetLimitOffset) { + SelectStatement* stmt; + + TEST_PARSE_SQL_QUERY("select a from t1 limit 1; \ + select a from t1 limit 1 offset 1; \ + select a from t1 limit 0; \ + select a from t1 limit 0 offset 1; \ + select a from t1 limit 1 offset 0; \ + select a from t1 limit ALL offset 1; \ + select a from t1 limit NULL offset 1; \ + select a from t1 offset 1; \ + select top 10 a from t1; \ + select top 20 a from t1 limit 10;", + result, 10); + + stmt = (SelectStatement*) result.getStatement(0); + ASSERT_EQ(stmt->limit->limit, 1); + ASSERT_EQ(stmt->limit->offset, kNoOffset); + + stmt = (SelectStatement*) result.getStatement(1); + ASSERT_EQ(stmt->limit->limit, 1); + ASSERT_EQ(stmt->limit->offset, 1); + + stmt = (SelectStatement*) result.getStatement(2); + ASSERT_EQ(stmt->limit->limit, 0); + ASSERT_EQ(stmt->limit->offset, kNoOffset); + + stmt = (SelectStatement*) result.getStatement(3); + ASSERT_EQ(stmt->limit->limit, 0); + ASSERT_EQ(stmt->limit->offset, 1); + + stmt = (SelectStatement*) result.getStatement(4); + ASSERT_EQ(stmt->limit->limit, 1); + ASSERT_EQ(stmt->limit->offset, kNoOffset); + + stmt = (SelectStatement*) result.getStatement(5); + ASSERT_EQ(stmt->limit->limit, kNoLimit); + ASSERT_EQ(stmt->limit->offset, 1); + + stmt = (SelectStatement*) result.getStatement(6); + ASSERT_EQ(stmt->limit->limit, kNoLimit); + ASSERT_EQ(stmt->limit->offset, 1); + + stmt = (SelectStatement*) result.getStatement(7); + ASSERT_EQ(stmt->limit->limit, kNoLimit); + ASSERT_EQ(stmt->limit->offset, 1); + + stmt = (SelectStatement*) result.getStatement(8); + ASSERT_EQ(stmt->limit->limit, 10); + ASSERT_EQ(stmt->limit->offset, kNoOffset); + + stmt = (SelectStatement*) result.getStatement(9); + ASSERT_EQ(stmt->limit->limit, 10); + ASSERT_EQ(stmt->limit->offset, kNoOffset); +} +