diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 3b904b12f91..98e7aa64553 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -746,16 +746,18 @@ type DDL struct { // DDL strings. const ( - CreateStr = "create" - AlterStr = "alter" - DropStr = "drop" - RenameStr = "rename" - TruncateStr = "truncate" - FlushStr = "flush" - CreateVindexStr = "create vindex" - DropVindexStr = "drop vindex" - AddColVindexStr = "on table add vindex" - DropColVindexStr = "on table drop vindex" + CreateStr = "create" + AlterStr = "alter" + DropStr = "drop" + RenameStr = "rename" + TruncateStr = "truncate" + FlushStr = "flush" + CreateVindexStr = "create vindex" + DropVindexStr = "drop vindex" + AddVschemaTableStr = "add vschema table" + DropVschemaTableStr = "drop vschema table" + AddColVindexStr = "on table add vindex" + DropColVindexStr = "on table drop vindex" // Vindex DDL param to specify the owner of a vindex VindexOwnerStr = "owner" @@ -795,6 +797,10 @@ func (node *DDL) Format(buf *TrackedBuffer) { buf.Myprintf("alter vschema create vindex %v %v", node.VindexSpec.Name, node.VindexSpec) case DropVindexStr: buf.Myprintf("alter vschema drop vindex %v", node.VindexSpec.Name) + case AddVschemaTableStr: + buf.Myprintf("alter vschema add table %v", node.Table) + case DropVschemaTableStr: + buf.Myprintf("alter vschema drop table %v", node.Table) case AddColVindexStr: buf.Myprintf("alter vschema on %v add vindex %v (", node.Table, node.VindexSpec.Name) for i, col := range node.VindexCols { diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index b2ad3f136b0..bdafd2061ae 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -927,7 +927,9 @@ var ( }, { input: "alter vschema drop vindex hash_vdx", }, { - input: "alter vschema on a add vindex hash (id)", + input: "alter vschema add table a", + }, { + input: "alter vschema drop table a", }, { input: "alter vschema on a add vindex hash (id)", }, { diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index a1c4f30501c..7575306054c 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -635,318 +635,326 @@ var yyExca = [...]int{ 5, 29, -2, 4, -1, 37, - 159, 298, - 160, 298, - -2, 288, + 159, 300, + 160, 300, + -2, 290, -1, 267, - 112, 634, - -2, 630, + 112, 636, + -2, 632, -1, 268, - 112, 635, - -2, 631, + 112, 637, + -2, 633, -1, 331, - 82, 805, + 82, 807, -2, 60, -1, 332, - 82, 762, + 82, 764, -2, 61, -1, 337, - 82, 741, - -2, 596, - -1, 339, - 82, 783, + 82, 743, -2, 598, - -1, 596, - 1, 350, - 5, 350, - 12, 350, - 13, 350, - 14, 350, - 15, 350, - 17, 350, - 19, 350, - 30, 350, - 31, 350, - 42, 350, - 43, 350, - 44, 350, - 45, 350, - 46, 350, - 48, 350, - 49, 350, - 52, 350, - 53, 350, - 55, 350, - 56, 350, - 266, 350, - -2, 368, - -1, 599, + -1, 339, + 82, 785, + -2, 600, + -1, 597, + 1, 352, + 5, 352, + 12, 352, + 13, 352, + 14, 352, + 15, 352, + 17, 352, + 19, 352, + 30, 352, + 31, 352, + 42, 352, + 43, 352, + 44, 352, + 45, 352, + 46, 352, + 48, 352, + 49, 352, + 52, 352, + 53, 352, + 55, 352, + 56, 352, + 266, 352, + -2, 370, + -1, 600, 53, 43, 55, 43, -2, 45, - -1, 737, - 112, 637, - -2, 633, - -1, 953, + -1, 740, + 112, 639, + -2, 635, + -1, 958, 5, 30, - -2, 434, - -1, 982, + -2, 436, + -1, 987, 5, 29, - -2, 570, - -1, 1235, + -2, 572, + -1, 1240, 5, 30, - -2, 571, - -1, 1290, - 5, 29, -2, 573, - -1, 1371, + -1, 1295, + 5, 29, + -2, 575, + -1, 1376, 5, 30, - -2, 574, + -2, 576, } const yyPrivate = 57344 -const yyLast = 12060 +const yyLast = 12140 var yyAct = [...]int{ - 268, 1406, 1396, 1192, 1359, 1074, 1269, 561, 985, 1255, - 1302, 1127, 841, 1003, 818, 1161, 57, 463, 1124, 246, - 986, 816, 272, 918, 884, 1028, 1128, 1140, 1009, 850, - 274, 237, 81, 762, 298, 840, 208, 945, 336, 208, - 1097, 1134, 772, 465, 837, 560, 3, 769, 1054, 1045, - 854, 609, 820, 805, 592, 790, 493, 593, 499, 702, - 771, 880, 608, 435, 739, 798, 505, 208, 81, 330, - 270, 927, 208, 513, 208, 255, 238, 239, 240, 241, - 325, 870, 244, 327, 575, 56, 1399, 1383, 1394, 903, - 864, 1369, 1391, 1193, 1382, 1368, 1119, 245, 1229, 440, - 1313, 1016, 1155, 902, 1015, 831, 259, 1017, 1156, 1157, - 467, 333, 1335, 526, 525, 535, 536, 528, 529, 530, - 531, 532, 533, 534, 527, 832, 833, 537, 610, 487, - 611, 907, 195, 243, 197, 24, 25, 52, 27, 28, - 901, 61, 242, 1036, 1169, 1170, 1171, 203, 199, 200, - 201, 1258, 1174, 1172, 43, 483, 863, 1275, 1212, 29, - 48, 49, 452, 484, 481, 482, 871, 63, 64, 65, - 66, 67, 1210, 236, 476, 477, 469, 1360, 471, 38, - 1077, 1076, 1390, 54, 678, 677, 1393, 486, 1073, 799, - 898, 895, 896, 1410, 894, 1351, 208, 855, 1414, 208, - 1303, 1070, 1004, 1006, 453, 208, 442, 1072, 468, 470, - 197, 208, 1078, 1305, 81, 1311, 81, 681, 81, 81, - 670, 81, 857, 81, 857, 905, 908, 196, 1150, 1149, - 1148, 438, 81, 472, 445, 473, 474, 210, 475, 198, - 478, 549, 550, 1340, 31, 32, 34, 33, 36, 488, - 50, 1029, 912, 1238, 1084, 911, 449, 963, 939, 1178, - 711, 900, 81, 517, 838, 265, 501, 459, 202, 703, - 1098, 37, 44, 45, 489, 490, 46, 47, 35, 1005, - 857, 1304, 1336, 899, 537, 527, 1121, 871, 537, 708, - 920, 39, 40, 1349, 41, 42, 466, 502, 436, 1408, - 547, 512, 1409, 1071, 1407, 1069, 1367, 1100, 1321, 436, - 1179, 598, 958, 957, 1061, 956, 1312, 1310, 856, 447, - 856, 448, 746, 208, 208, 208, 904, 1173, 791, 81, - 1138, 434, 511, 510, 1354, 81, 744, 745, 743, 906, - 1102, 70, 1106, 1059, 1101, 591, 1099, 205, 612, 512, - 704, 1104, 511, 510, 596, 714, 715, 672, 507, 1123, - 1103, 441, 511, 510, 455, 456, 457, 1415, 919, 512, - 511, 510, 333, 1105, 1107, 510, 856, 71, 326, 512, - 53, 853, 851, 437, 852, 439, 860, 512, 710, 849, - 855, 512, 861, 791, 503, 972, 577, 578, 579, 580, - 581, 582, 583, 511, 510, 600, 1416, 729, 731, 732, - 1060, 1034, 606, 730, 1373, 1065, 1062, 1055, 1063, 1058, - 512, 1265, 1264, 1056, 1057, 709, 528, 529, 530, 531, - 532, 533, 534, 527, 194, 208, 537, 1064, 443, 444, - 81, 54, 511, 510, 1049, 208, 208, 81, 1048, 1037, - 208, 742, 763, 208, 764, 1375, 208, 669, 22, 512, - 208, 1350, 81, 81, 676, 1286, 1262, 81, 81, 81, - 81, 81, 81, 936, 937, 938, 1081, 81, 81, 691, - 692, 1018, 1046, 1019, 693, 694, 695, 696, 697, 698, - 1308, 1392, 1378, 492, 699, 700, 1308, 1363, 690, 322, - 323, 1347, 1308, 492, 492, 81, 1195, 446, 1029, 208, - 451, 1308, 1341, 1308, 1307, 81, 458, 1024, 250, 1253, - 1252, 716, 460, 765, 530, 531, 532, 533, 534, 527, - 687, 688, 537, 682, 1240, 492, 1237, 492, 1185, 1184, - 1376, 551, 552, 553, 554, 555, 556, 557, 558, 1181, - 1182, 741, 1181, 1180, 1318, 740, 737, 951, 492, 81, - 686, 736, 526, 525, 535, 536, 528, 529, 530, 531, - 532, 533, 534, 527, 802, 492, 537, 673, 491, 718, - 774, 492, 24, 671, 668, 619, 618, 1317, 733, 735, - 208, 781, 785, 603, 24, 461, 454, 792, 208, 208, - 1314, 1125, 208, 208, 1137, 1137, 81, 1175, 1010, 776, - 1289, 858, 58, 1010, 825, 946, 602, 774, 980, 81, - 766, 767, 981, 826, 1233, 777, 778, 1320, 596, 1087, - 54, 787, 596, 795, 590, 604, 599, 602, 788, 802, - 967, 801, 54, 965, 962, 794, 960, 796, 797, 333, - 24, 802, 951, 1183, 299, 51, 1137, 807, 810, 811, - 812, 808, 842, 809, 813, 824, 802, 1141, 1142, 1020, - 829, 208, 81, 951, 81, 828, 830, 951, 81, 81, - 602, 208, 208, 845, 966, 208, 81, 964, 961, 890, - 959, 892, 886, 807, 810, 811, 812, 808, 54, 809, - 813, 605, 208, 916, 208, 208, 51, 208, 712, 680, - 252, 54, 1384, 1357, 251, 872, 873, 874, 1271, 866, - 867, 868, 869, 1260, 865, 1075, 882, 883, 1245, 288, - 287, 290, 291, 292, 293, 877, 878, 879, 289, 294, - 885, 1166, 1141, 1142, 1401, 1023, 620, 881, 876, 875, - 737, 888, 1397, 1168, 1144, 736, 674, 675, 54, 1125, - 1050, 679, 706, 684, 326, 997, 999, 685, 811, 812, - 998, 928, 995, 929, 741, 724, 1147, 996, 740, 1146, - 994, 993, 256, 257, 935, 738, 1388, 1381, 747, 748, - 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, - 759, 760, 761, 208, 208, 208, 208, 208, 941, 1083, - 924, 1386, 934, 506, 933, 208, 1041, 494, 208, 617, - 725, 462, 208, 1033, 987, 1356, 208, 297, 504, 495, - 1355, 950, 1287, 596, 596, 596, 596, 596, 1031, 1025, - 1231, 81, 1267, 891, 982, 971, 683, 1011, 596, 969, - 815, 253, 254, 1021, 506, 1012, 596, 988, 932, 79, - 991, 989, 990, 776, 992, 247, 931, 1000, 464, 1325, - 464, 248, 464, 464, 1008, 464, 58, 464, 1324, 1273, - 1030, 1010, 1013, 485, 842, 701, 464, 1403, 1402, 81, - 81, 508, 1403, 1337, 1259, 335, 707, 60, 62, 601, - 55, 800, 1, 1026, 1027, 1395, 51, 1052, 1194, 1268, - 897, 1358, 1301, 1160, 827, 1040, 81, 1042, 1043, 1044, - 848, 546, 839, 69, 548, 1053, 1047, 433, 68, 1348, - 847, 208, 846, 1079, 1309, 1257, 859, 1035, 862, 1167, - 81, 1353, 1032, 625, 1066, 623, 624, 622, 1038, 1039, - 627, 626, 559, 621, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 221, 574, 576, 576, 576, 576, 576, - 576, 576, 576, 584, 585, 586, 587, 1080, 597, 328, - 1091, 814, 889, 1089, 81, 81, 1120, 613, 1090, 1126, - 887, 1108, 913, 914, 1096, 509, 915, 72, 1068, 1109, - 1067, 893, 737, 987, 479, 480, 223, 1114, 81, 545, - 942, 943, 944, 917, 1136, 930, 1129, 1014, 923, 1145, - 334, 81, 1132, 81, 81, 713, 1152, 498, 1323, 1131, - 1272, 970, 572, 789, 273, 1159, 728, 286, 261, 283, - 1154, 335, 285, 335, 284, 335, 335, 719, 335, 1151, - 335, 208, 1164, 1165, 1163, 979, 1158, 519, 271, 335, - 263, 595, 588, 806, 842, 804, 842, 803, 208, 1143, - 1139, 594, 1086, 1228, 81, 1334, 723, 81, 81, 208, - 26, 717, 59, 1176, 1177, 81, 1187, 258, 208, 515, - 19, 18, 17, 20, 464, 16, 15, 14, 1188, 450, - 1190, 464, 30, 21, 1199, 13, 12, 11, 10, 1201, - 9, 8, 7, 6, 5, 1200, 464, 464, 596, 4, - 249, 464, 464, 464, 464, 464, 464, 1208, 1089, 23, - 2, 464, 464, 0, 0, 0, 1225, 492, 0, 773, - 775, 0, 0, 0, 0, 1232, 0, 0, 0, 0, - 0, 0, 0, 1241, 0, 793, 335, 0, 1242, 81, - 987, 0, 614, 0, 0, 0, 0, 81, 0, 0, - 0, 1021, 1251, 0, 526, 525, 535, 536, 528, 529, - 530, 531, 532, 533, 534, 527, 0, 81, 537, 1205, - 1206, 0, 1207, 0, 81, 1209, 0, 1211, 0, 0, - 0, 0, 842, 51, 1266, 0, 0, 0, 0, 0, - 0, 0, 1093, 1094, 0, 0, 0, 0, 563, 0, - 0, 0, 0, 0, 0, 1110, 1111, 1112, 1113, 0, - 1115, 1116, 1117, 1118, 0, 0, 0, 1270, 81, 81, - 0, 81, 1085, 0, 0, 0, 81, 0, 81, 81, - 81, 208, 817, 1254, 81, 1296, 597, 1297, 1298, 1299, - 1288, 1295, 1261, 0, 1263, 1300, 0, 335, 1129, 1306, - 0, 0, 81, 0, 335, 0, 0, 0, 0, 0, - 0, 1322, 1290, 0, 0, 0, 496, 500, 1274, 335, - 335, 0, 0, 0, 335, 335, 335, 335, 335, 335, - 0, 1338, 0, 518, 335, 335, 1315, 0, 1316, 81, - 0, 0, 1346, 0, 1345, 0, 0, 0, 0, 0, - 0, 81, 81, 0, 1129, 0, 464, 1361, 464, 0, - 0, 0, 720, 1365, 1362, 0, 0, 1339, 562, 0, - 464, 81, 515, 0, 948, 335, 1370, 573, 949, 0, - 0, 0, 208, 0, 0, 953, 954, 955, 1203, 0, - 987, 81, 1186, 0, 1270, 842, 968, 0, 0, 1380, - 0, 974, 0, 975, 976, 977, 978, 0, 0, 1189, - 0, 0, 0, 1385, 1387, 81, 768, 0, 0, 0, - 1198, 940, 0, 0, 1389, 1002, 783, 783, 1400, 521, - 0, 524, 783, 0, 0, 1411, 0, 538, 539, 540, - 541, 542, 543, 544, 1092, 522, 523, 520, 526, 525, - 535, 536, 528, 529, 530, 531, 532, 533, 534, 527, - 0, 0, 537, 335, 526, 525, 535, 536, 528, 529, - 530, 531, 532, 533, 534, 527, 335, 0, 537, 0, - 0, 0, 0, 983, 984, 0, 0, 597, 597, 597, - 597, 597, 0, 218, 0, 0, 0, 0, 0, 0, - 0, 0, 817, 0, 1007, 0, 0, 0, 0, 0, - 597, 0, 1276, 1277, 0, 1278, 1279, 231, 1280, 1281, - 0, 1282, 1283, 1284, 0, 0, 0, 0, 0, 335, - 0, 335, 0, 0, 0, 909, 910, 0, 0, 0, + 268, 1411, 1401, 1197, 1364, 1079, 272, 990, 562, 844, + 1008, 1274, 1132, 1166, 991, 1260, 57, 821, 246, 1133, + 1129, 1307, 840, 887, 873, 853, 923, 843, 1139, 1033, + 1014, 1102, 81, 561, 3, 819, 208, 336, 1145, 208, + 765, 775, 705, 1059, 1050, 857, 950, 298, 808, 823, + 772, 742, 793, 593, 610, 237, 494, 500, 609, 594, + 255, 330, 883, 514, 325, 801, 435, 208, 81, 327, + 932, 506, 208, 56, 208, 1404, 774, 1388, 1399, 1374, + 1396, 1198, 1387, 1373, 867, 245, 1124, 1234, 440, 1318, + 468, 203, 199, 200, 201, 1161, 1162, 1160, 270, 61, + 238, 239, 240, 241, 834, 259, 244, 576, 488, 1340, + 527, 526, 536, 537, 529, 530, 531, 532, 533, 534, + 535, 528, 243, 906, 538, 63, 64, 65, 66, 67, + 1174, 1175, 1176, 835, 836, 242, 1041, 905, 1179, 1177, + 1021, 484, 611, 1020, 612, 195, 1022, 197, 866, 485, + 482, 483, 218, 1263, 453, 874, 470, 1280, 472, 1217, + 1215, 236, 477, 478, 680, 910, 487, 1082, 1081, 678, + 1398, 1395, 1365, 1078, 904, 802, 231, 1356, 858, 1419, + 1103, 454, 1415, 442, 1308, 197, 1009, 1011, 469, 471, + 1083, 684, 671, 860, 860, 1345, 208, 1310, 679, 208, + 860, 599, 1155, 1154, 1153, 208, 438, 681, 445, 210, + 198, 208, 202, 1316, 81, 1243, 81, 1105, 81, 81, + 1183, 81, 1034, 81, 901, 898, 899, 211, 897, 436, + 917, 841, 81, 916, 214, 550, 551, 205, 1089, 968, + 196, 1075, 222, 217, 944, 714, 518, 1077, 528, 460, + 1107, 538, 1111, 450, 1106, 538, 1104, 513, 1354, 908, + 911, 1109, 81, 1010, 436, 1309, 502, 706, 326, 711, + 1108, 1184, 70, 437, 220, 439, 467, 963, 1066, 1341, + 230, 1326, 1143, 1110, 1112, 503, 613, 874, 1413, 859, + 859, 1414, 1126, 1412, 1372, 903, 859, 434, 490, 491, + 925, 856, 854, 511, 855, 794, 212, 1064, 71, 852, + 858, 299, 51, 1178, 1317, 1315, 447, 902, 448, 513, + 794, 449, 977, 208, 208, 208, 441, 512, 511, 81, + 1039, 673, 1359, 224, 215, 81, 225, 226, 227, 229, + 508, 228, 234, 1076, 513, 1074, 216, 219, 707, 213, + 233, 232, 504, 512, 511, 1420, 456, 457, 458, 592, + 907, 749, 1378, 51, 531, 532, 533, 534, 535, 528, + 513, 251, 538, 909, 1065, 747, 748, 746, 924, 1070, + 1067, 1060, 1068, 1063, 863, 512, 511, 1061, 1062, 601, + 864, 261, 1128, 1270, 1421, 717, 718, 446, 607, 1380, + 452, 1069, 513, 443, 444, 54, 459, 732, 734, 735, + 1269, 194, 461, 733, 1054, 745, 274, 1053, 466, 578, + 579, 580, 581, 582, 583, 584, 529, 530, 531, 532, + 533, 534, 535, 528, 1042, 208, 538, 1355, 1291, 962, + 81, 961, 1267, 512, 511, 208, 208, 81, 713, 22, + 1086, 208, 1352, 766, 208, 767, 1200, 208, 512, 511, + 513, 208, 1051, 81, 81, 941, 942, 943, 81, 81, + 81, 81, 81, 81, 1034, 513, 322, 323, 81, 81, + 1023, 1029, 1024, 1313, 1397, 712, 333, 526, 536, 537, + 529, 530, 531, 532, 533, 534, 535, 528, 693, 768, + 538, 690, 512, 511, 297, 689, 81, 1383, 493, 250, + 208, 1313, 1368, 1313, 493, 604, 81, 674, 685, 513, + 672, 719, 1313, 1346, 591, 465, 600, 465, 669, 465, + 465, 691, 465, 462, 465, 455, 79, 1313, 1312, 1258, + 1257, 1245, 493, 465, 527, 526, 536, 537, 529, 530, + 531, 532, 533, 534, 535, 528, 740, 605, 538, 603, + 81, 1242, 493, 51, 493, 721, 1190, 1189, 1381, 743, + 1186, 1187, 335, 1186, 1185, 1323, 784, 788, 547, 736, + 1322, 549, 795, 288, 287, 290, 291, 292, 293, 738, + 1319, 208, 289, 294, 956, 493, 1180, 951, 779, 208, + 208, 805, 493, 208, 208, 777, 493, 81, 1015, 560, + 861, 564, 565, 566, 567, 568, 569, 570, 571, 572, + 81, 575, 577, 577, 577, 577, 577, 577, 577, 577, + 585, 586, 587, 588, 1092, 598, 621, 798, 829, 497, + 501, 1142, 780, 781, 791, 804, 675, 676, 790, 769, + 770, 805, 682, 620, 619, 326, 519, 58, 688, 875, + 876, 877, 797, 1015, 799, 800, 827, 832, 831, 972, + 805, 24, 208, 81, 1130, 81, 24, 1142, 956, 81, + 81, 208, 208, 777, 208, 208, 548, 848, 208, 81, + 970, 563, 889, 967, 965, 985, 828, 956, 603, 986, + 574, 492, 1238, 1325, 1294, 208, 1142, 208, 208, 805, + 208, 728, 1188, 971, 869, 870, 871, 872, 335, 54, + 335, 24, 335, 335, 54, 335, 1025, 335, 885, 886, + 880, 881, 882, 833, 969, 956, 335, 966, 964, 603, + 597, 606, 810, 813, 814, 815, 811, 333, 812, 816, + 715, 465, 740, 810, 813, 814, 815, 811, 465, 812, + 816, 683, 54, 1146, 1147, 252, 516, 1389, 1362, 54, + 1276, 1265, 868, 933, 465, 465, 934, 1250, 888, 465, + 465, 465, 465, 465, 465, 1171, 1146, 1147, 1080, 465, + 465, 1028, 803, 884, 743, 879, 878, 891, 946, 1406, + 1402, 1173, 1149, 940, 1130, 830, 208, 208, 208, 208, + 208, 992, 1055, 54, 709, 687, 727, 1002, 208, 1000, + 1152, 208, 1003, 1151, 1001, 208, 999, 998, 1004, 208, + 814, 815, 1393, 335, 1386, 987, 256, 257, 1088, 615, + 929, 507, 1391, 939, 81, 976, 938, 1046, 618, 463, + 955, 495, 1038, 1026, 779, 1361, 505, 1360, 1292, 993, + 1017, 51, 996, 496, 1016, 1005, 994, 995, 974, 997, + 1036, 1030, 1236, 892, 1013, 1272, 564, 894, 708, 686, + 818, 507, 914, 915, 247, 918, 919, 1035, 1018, 920, + 253, 254, 81, 81, 1043, 1044, 1045, 937, 1047, 1048, + 1049, 1031, 1032, 729, 730, 936, 922, 1330, 248, 58, + 820, 928, 1329, 1278, 598, 1015, 486, 1408, 1407, 1408, + 704, 81, 509, 1342, 1052, 1264, 710, 60, 62, 602, + 55, 1, 1400, 1199, 1273, 900, 208, 739, 744, 1363, + 1306, 1165, 1071, 851, 335, 81, 842, 69, 433, 68, + 1353, 335, 1058, 850, 849, 1314, 563, 1262, 862, 782, + 783, 1040, 865, 1172, 1358, 1085, 1037, 335, 335, 626, + 624, 625, 335, 335, 335, 335, 335, 335, 623, 628, + 627, 622, 335, 335, 465, 221, 465, 328, 817, 81, + 81, 1125, 992, 1131, 1096, 1114, 1095, 614, 1101, 890, + 465, 510, 72, 1113, 1073, 839, 740, 1072, 896, 480, + 723, 481, 223, 81, 546, 597, 935, 1019, 334, 597, + 516, 1141, 1136, 335, 1137, 333, 81, 716, 81, 81, + 499, 1157, 1328, 1277, 1134, 1150, 975, 1164, 845, 573, + 792, 1156, 265, 273, 731, 286, 283, 1159, 285, 284, + 722, 945, 984, 1163, 520, 1168, 208, 271, 263, 596, + 589, 1169, 1170, 809, 771, 807, 1181, 1182, 806, 1148, + 1144, 595, 1091, 208, 786, 786, 1233, 1339, 726, 81, + 786, 26, 81, 81, 208, 59, 258, 19, 18, 17, + 81, 20, 16, 208, 536, 537, 529, 530, 531, 532, + 533, 534, 535, 528, 930, 931, 538, 501, 15, 14, + 451, 335, 1204, 988, 989, 1192, 30, 598, 598, 598, + 598, 598, 1205, 21, 335, 13, 12, 1193, 1206, 1195, + 11, 1213, 820, 739, 1012, 10, 9, 1090, 8, 7, + 598, 6, 5, 4, 249, 23, 2, 0, 0, 992, + 0, 0, 1237, 0, 0, 0, 0, 1247, 1246, 0, + 0, 0, 0, 744, 81, 0, 0, 0, 0, 957, + 0, 0, 81, 1026, 0, 0, 1256, 335, 0, 335, + 0, 0, 0, 912, 913, 0, 978, 0, 1210, 1211, + 0, 1212, 81, 335, 1214, 0, 1216, 0, 0, 81, + 0, 0, 0, 0, 465, 720, 0, 0, 0, 0, + 1266, 0, 1268, 0, 0, 0, 464, 0, 0, 335, + 0, 0, 597, 597, 597, 597, 597, 0, 0, 0, + 0, 0, 465, 0, 0, 0, 1279, 597, 0, 0, + 0, 0, 0, 81, 81, 597, 81, 0, 0, 0, + 0, 81, 1259, 81, 81, 81, 208, 1191, 1293, 81, + 0, 0, 845, 776, 778, 1300, 1301, 0, 1302, 1303, + 1304, 0, 1311, 1305, 1194, 1295, 0, 81, 0, 796, + 0, 0, 0, 0, 0, 1203, 1134, 0, 0, 1320, + 0, 1321, 1327, 0, 0, 0, 0, 0, 1135, 0, + 51, 0, 0, 0, 0, 0, 0, 1343, 0, 786, + 0, 0, 0, 0, 81, 0, 1350, 1087, 552, 553, + 554, 555, 556, 557, 558, 559, 81, 81, 1351, 0, + 1344, 0, 0, 0, 0, 0, 1367, 1366, 0, 1370, + 0, 0, 1134, 0, 0, 0, 81, 0, 335, 992, + 1375, 0, 0, 0, 0, 0, 0, 208, 0, 0, + 0, 0, 0, 1094, 0, 0, 81, 0, 0, 1127, + 0, 0, 0, 0, 1385, 1230, 493, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1119, 1390, 1392, + 81, 0, 0, 0, 0, 0, 1056, 335, 0, 0, + 0, 0, 0, 1405, 598, 1394, 0, 1158, 0, 0, + 1416, 0, 0, 527, 526, 536, 537, 529, 530, 531, + 532, 533, 534, 535, 528, 335, 0, 538, 0, 0, + 1097, 0, 473, 0, 474, 475, 1232, 476, 0, 479, + 0, 0, 0, 0, 845, 0, 845, 0, 489, 335, + 527, 526, 536, 537, 529, 530, 531, 532, 533, 534, + 535, 528, 0, 0, 538, 1252, 1253, 1254, 0, 0, + 953, 0, 0, 335, 954, 0, 0, 0, 0, 0, + 0, 958, 959, 960, 0, 0, 0, 0, 0, 0, + 786, 0, 973, 1138, 1140, 0, 0, 979, 0, 980, + 981, 982, 983, 465, 0, 0, 0, 0, 1094, 597, + 0, 0, 0, 0, 0, 0, 0, 1140, 0, 0, + 1235, 1007, 0, 0, 0, 0, 0, 563, 0, 0, + 335, 0, 335, 1167, 0, 1248, 0, 0, 1249, 0, + 0, 1251, 0, 0, 0, 0, 0, 0, 0, 0, + 1135, 0, 0, 1296, 0, 0, 0, 0, 1379, 0, + 0, 0, 0, 741, 0, 0, 750, 751, 752, 753, + 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, + 764, 0, 845, 1196, 1324, 0, 1201, 1202, 0, 0, + 0, 0, 0, 0, 335, 0, 0, 498, 0, 0, + 0, 0, 522, 0, 525, 0, 1135, 0, 51, 0, + 539, 540, 541, 542, 543, 544, 545, 1275, 523, 524, + 521, 527, 526, 536, 537, 529, 530, 531, 532, 533, + 534, 535, 528, 206, 0, 538, 235, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 786, 0, 0, + 0, 0, 0, 0, 0, 0, 670, 1100, 0, 0, + 0, 262, 0, 677, 206, 0, 0, 0, 335, 206, + 0, 206, 0, 0, 0, 0, 1261, 0, 0, 694, + 695, 0, 0, 0, 696, 697, 698, 699, 700, 701, + 1227, 493, 0, 0, 702, 703, 335, 0, 0, 0, 0, 0, 0, 335, 0, 0, 0, 0, 0, 0, - 0, 0, 497, 0, 705, 0, 0, 0, 0, 1095, - 0, 0, 0, 0, 0, 1222, 492, 0, 211, 335, - 0, 0, 0, 0, 464, 214, 0, 0, 0, 726, - 727, 0, 0, 222, 217, 0, 0, 0, 206, 0, - 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, - 464, 0, 0, 526, 525, 535, 536, 528, 529, 530, - 531, 532, 533, 534, 527, 220, 262, 537, 0, 206, - 0, 230, 0, 0, 206, 0, 206, 0, 0, 0, - 0, 0, 562, 0, 0, 779, 780, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 212, 525, 535, - 536, 528, 529, 530, 531, 532, 533, 534, 527, 783, - 0, 537, 0, 0, 0, 0, 1130, 0, 51, 0, - 0, 0, 0, 0, 224, 215, 0, 225, 226, 227, - 229, 836, 228, 234, 0, 0, 0, 216, 219, 0, - 213, 233, 232, 1374, 1404, 0, 0, 0, 335, 1202, - 0, 0, 0, 0, 0, 0, 1204, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1213, 1214, 1215, - 0, 1218, 0, 0, 1221, 0, 1224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1234, - 1235, 1236, 0, 1239, 1219, 492, 1051, 335, 206, 0, - 0, 206, 0, 0, 0, 0, 0, 206, 0, 0, - 1250, 0, 0, 206, 0, 0, 0, 1216, 492, 0, - 1226, 0, 597, 335, 0, 0, 0, 0, 925, 926, - 0, 500, 526, 525, 535, 536, 528, 529, 530, 531, - 532, 533, 534, 527, 0, 0, 537, 335, 0, 0, - 0, 0, 0, 0, 1227, 526, 525, 535, 536, 528, - 529, 530, 531, 532, 533, 534, 527, 0, 0, 537, - 0, 335, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1247, 1248, 1249, 0, 1285, 783, 0, - 0, 1133, 1135, 952, 526, 525, 535, 536, 528, 529, - 530, 531, 532, 533, 534, 527, 0, 0, 537, 0, - 973, 0, 0, 0, 0, 1135, 0, 0, 0, 0, - 0, 464, 0, 0, 0, 206, 206, 206, 335, 0, - 335, 1162, 0, 0, 0, 1326, 1327, 1328, 1329, 1330, - 1331, 1332, 1333, 535, 536, 528, 529, 530, 531, 532, - 533, 534, 527, 0, 0, 537, 1342, 1343, 1344, 0, - 0, 0, 0, 0, 0, 0, 0, 492, 1130, 0, - 0, 1291, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1191, 0, 0, 1196, 1197, 0, 0, 0, 0, - 0, 0, 335, 1366, 0, 0, 0, 0, 1371, 0, - 0, 1223, 1319, 0, 526, 525, 535, 536, 528, 529, - 530, 531, 532, 533, 534, 527, 0, 1377, 537, 0, - 0, 0, 0, 0, 1130, 0, 51, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 206, 0, 1082, - 0, 0, 0, 0, 0, 783, 0, 206, 206, 0, - 0, 0, 206, 0, 0, 206, 1220, 0, 206, 0, - 0, 0, 689, 1412, 1413, 0, 335, 0, 0, 0, - 0, 0, 0, 0, 1256, 526, 525, 535, 536, 528, - 529, 530, 531, 532, 533, 534, 527, 0, 0, 537, - 0, 1122, 0, 0, 335, 0, 0, 0, 0, 0, - 0, 335, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, - 689, 0, 0, 0, 0, 0, 0, 0, 1398, 1153, - 526, 525, 535, 536, 528, 529, 530, 531, 532, 533, - 534, 527, 0, 0, 537, 1292, 1293, 0, 1294, 0, - 0, 0, 0, 1256, 0, 1256, 1256, 1256, 0, 0, - 0, 1162, 262, 0, 0, 0, 0, 262, 262, 0, - 0, 784, 784, 262, 0, 0, 0, 784, 0, 1256, - 0, 0, 0, 0, 0, 0, 0, 262, 262, 262, - 262, 0, 206, 642, 0, 0, 0, 0, 0, 0, - 206, 822, 0, 0, 206, 206, 0, 0, 0, 0, - 947, 0, 0, 0, 0, 0, 1352, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 335, 335, - 526, 525, 535, 536, 528, 529, 530, 531, 532, 533, - 534, 527, 1230, 0, 537, 783, 0, 0, 1372, 562, - 0, 0, 0, 0, 0, 0, 0, 1243, 0, 0, - 1244, 0, 0, 1246, 0, 0, 0, 0, 1379, 0, - 0, 630, 0, 206, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 206, 206, 0, 0, 206, 0, 0, - 0, 0, 1256, 0, 0, 0, 0, 0, 0, 0, - 1217, 0, 0, 0, 206, 0, 921, 922, 643, 206, - 0, 0, 0, 0, 689, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, - 656, 657, 658, 659, 660, 661, 662, 0, 663, 664, - 665, 666, 667, 644, 645, 646, 647, 628, 629, 0, - 0, 631, 0, 632, 633, 634, 635, 636, 637, 638, - 639, 640, 641, 648, 649, 650, 651, 652, 653, 654, - 655, 0, 0, 262, 526, 525, 535, 536, 528, 529, - 530, 531, 532, 533, 534, 527, 0, 0, 537, 0, + 1403, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1369, 563, 0, 0, 0, 1224, 493, 527, 526, + 536, 537, 529, 530, 531, 532, 533, 534, 535, 528, + 0, 0, 538, 0, 1275, 845, 0, 1297, 1298, 0, + 1299, 0, 0, 0, 0, 1261, 0, 1261, 1261, 1261, + 0, 0, 0, 1167, 527, 526, 536, 537, 529, 530, + 531, 532, 533, 534, 535, 528, 0, 0, 538, 0, + 0, 1261, 0, 0, 0, 0, 0, 0, 0, 0, + 947, 948, 949, 206, 0, 0, 206, 1207, 0, 0, + 0, 0, 206, 0, 1209, 0, 0, 0, 206, 0, + 0, 0, 0, 0, 0, 1218, 1219, 1220, 1357, 1223, + 0, 0, 1226, 0, 1229, 0, 0, 0, 0, 0, + 335, 335, 0, 0, 0, 0, 0, 1239, 1240, 1241, + 0, 1244, 0, 0, 0, 0, 0, 786, 0, 0, + 1377, 0, 0, 0, 0, 0, 0, 0, 1255, 0, + 24, 25, 52, 27, 28, 0, 0, 0, 0, 0, + 1384, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 0, 0, 0, 0, 29, 48, 49, 0, 0, 893, + 0, 895, 0, 0, 1261, 0, 0, 0, 1221, 493, + 0, 0, 0, 0, 38, 921, 0, 0, 54, 0, + 0, 0, 0, 0, 493, 0, 0, 0, 0, 0, + 206, 206, 206, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1290, 527, 526, 536, 537, + 529, 530, 531, 532, 533, 534, 535, 528, 0, 0, + 538, 527, 526, 536, 537, 529, 530, 531, 532, 533, + 534, 535, 528, 0, 0, 538, 0, 0, 0, 31, + 32, 34, 33, 36, 0, 50, 0, 0, 0, 0, + 0, 0, 0, 1331, 1332, 1333, 1334, 1335, 1336, 1337, + 1338, 0, 0, 1231, 1098, 1099, 37, 44, 45, 0, + 0, 46, 47, 35, 1347, 1348, 1349, 1115, 1116, 1117, + 1118, 1228, 1120, 1121, 1122, 1123, 39, 40, 0, 41, + 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, + 0, 1371, 206, 206, 1225, 0, 1376, 0, 206, 0, + 0, 206, 0, 0, 206, 0, 0, 0, 692, 0, + 0, 0, 0, 0, 0, 1382, 643, 527, 526, 536, + 537, 529, 530, 531, 532, 533, 534, 535, 528, 0, + 0, 538, 0, 0, 0, 527, 526, 536, 537, 529, + 530, 531, 532, 533, 534, 535, 528, 0, 0, 538, + 0, 0, 0, 0, 0, 53, 0, 206, 0, 1057, + 0, 1417, 1418, 0, 0, 0, 692, 0, 527, 526, + 536, 537, 529, 530, 531, 532, 533, 534, 535, 528, + 0, 0, 538, 0, 0, 0, 0, 1084, 0, 0, + 1208, 0, 0, 0, 631, 527, 526, 536, 537, 529, + 530, 531, 532, 533, 534, 535, 528, 0, 262, 538, + 0, 0, 0, 262, 262, 0, 0, 787, 787, 262, + 1222, 0, 0, 787, 0, 0, 0, 0, 0, 0, + 0, 644, 0, 262, 262, 262, 262, 0, 206, 0, + 0, 0, 0, 0, 0, 0, 206, 825, 0, 0, + 206, 206, 0, 657, 658, 659, 660, 661, 662, 663, + 0, 664, 665, 666, 667, 668, 645, 646, 647, 648, + 629, 630, 0, 0, 632, 0, 633, 634, 635, 636, + 637, 638, 639, 640, 641, 642, 649, 650, 651, 652, + 653, 654, 655, 656, 527, 526, 536, 537, 529, 530, + 531, 532, 533, 534, 535, 528, 0, 0, 538, 0, + 0, 0, 0, 0, 1281, 1282, 952, 1283, 1284, 206, + 1285, 1286, 0, 1287, 1288, 1289, 0, 0, 206, 206, + 0, 206, 206, 0, 0, 206, 527, 526, 536, 537, + 529, 530, 531, 532, 533, 534, 535, 528, 0, 0, + 538, 0, 206, 0, 926, 927, 0, 206, 0, 0, + 0, 0, 692, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 262, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 784, 206, 206, 206, 206, 206, - 0, 0, 0, 0, 0, 0, 0, 1001, 0, 0, - 206, 0, 0, 0, 822, 0, 0, 0, 206, 0, - 0, 526, 525, 535, 536, 528, 529, 530, 531, 532, - 533, 534, 527, 1364, 562, 537, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 787, 206, 206, 206, 206, 206, 1271, 0, + 0, 0, 0, 0, 0, 1006, 0, 0, 206, 0, + 0, 0, 825, 0, 0, 0, 206, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1409, 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, 0, @@ -958,14 +966,14 @@ var yyAct = [...]int{ 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 689, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 692, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 784, 138, 0, 0, 0, 0, 269, + 0, 0, 0, 787, 138, 0, 0, 0, 0, 269, 0, 0, 0, 102, 0, 266, 0, 0, 0, 119, 309, 121, 0, 0, 158, 130, 0, 0, 0, 0, - 300, 301, 0, 0, 0, 0, 0, 0, 834, 0, + 300, 301, 0, 0, 0, 0, 0, 0, 837, 0, 54, 0, 0, 267, 288, 287, 290, 291, 292, 293, - 0, 0, 95, 289, 294, 295, 296, 835, 0, 0, + 0, 0, 95, 289, 294, 295, 296, 838, 0, 0, 264, 281, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 279, 0, 0, 0, 0, 320, @@ -976,7 +984,7 @@ var yyAct = [...]int{ 0, 98, 0, 152, 140, 174, 0, 141, 151, 122, 166, 146, 173, 181, 182, 163, 180, 189, 84, 162, 172, 96, 155, 86, 170, 160, 128, 114, 115, 85, - 784, 149, 101, 106, 100, 137, 167, 168, 99, 192, + 787, 149, 101, 106, 100, 137, 167, 168, 99, 192, 90, 179, 88, 91, 178, 135, 165, 171, 129, 126, 87, 169, 127, 125, 117, 104, 111, 143, 124, 144, 112, 132, 131, 133, 0, 0, 0, 159, 176, 193, @@ -987,16 +995,16 @@ var yyAct = [...]int{ 304, 305, 307, 0, 306, 82, 0, 120, 190, 147, 105, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 822, 0, 0, 0, 421, 412, 0, + 0, 0, 0, 825, 0, 0, 0, 421, 412, 0, 383, 424, 361, 375, 432, 376, 377, 405, 347, 391, 138, 373, 0, 364, 342, 370, 343, 362, 385, 102, 388, 360, 414, 394, 423, 119, 430, 121, 399, 0, 158, 130, 0, 0, 387, 416, 389, 410, 382, 406, 352, 398, 425, 374, 403, 426, 0, 0, 0, 80, - 0, 843, 844, 0, 0, 0, 0, 0, 95, 0, + 0, 846, 847, 0, 0, 0, 0, 0, 95, 0, 401, 420, 372, 402, 404, 341, 400, 0, 345, 348, - 431, 418, 367, 368, 1022, 0, 0, 0, 0, 0, - 784, 386, 390, 407, 380, 0, 0, 0, 0, 0, + 431, 418, 367, 368, 1027, 0, 0, 0, 0, 0, + 787, 386, 390, 407, 380, 0, 0, 0, 0, 0, 0, 0, 0, 365, 206, 397, 0, 0, 0, 349, 346, 0, 0, 384, 0, 0, 0, 351, 0, 366, 408, 0, 340, 108, 411, 417, 381, 209, 419, 379, @@ -1019,7 +1027,7 @@ var yyAct = [...]int{ 102, 388, 360, 414, 394, 423, 119, 430, 121, 399, 0, 158, 130, 0, 0, 387, 416, 389, 410, 382, 406, 352, 398, 425, 374, 403, 426, 0, 0, 0, - 80, 0, 843, 844, 0, 0, 0, 0, 0, 95, + 80, 0, 846, 847, 0, 0, 0, 0, 0, 95, 0, 401, 420, 372, 402, 404, 341, 400, 0, 345, 348, 431, 418, 367, 368, 0, 0, 0, 0, 0, 0, 0, 386, 390, 407, 380, 0, 0, 0, 0, @@ -1075,7 +1083,7 @@ var yyAct = [...]int{ 0, 95, 0, 401, 420, 372, 402, 404, 341, 400, 0, 345, 348, 431, 418, 367, 368, 0, 0, 0, 0, 0, 0, 0, 386, 390, 407, 380, 0, 0, - 0, 0, 0, 0, 1088, 0, 365, 0, 397, 0, + 0, 0, 0, 0, 1093, 0, 365, 0, 397, 0, 0, 0, 349, 346, 0, 0, 384, 0, 0, 0, 351, 0, 366, 408, 0, 340, 108, 411, 417, 381, 209, 419, 379, 378, 422, 145, 0, 161, 110, 118, @@ -1101,7 +1109,7 @@ var yyAct = [...]int{ 0, 0, 95, 0, 401, 420, 372, 402, 404, 341, 400, 0, 345, 348, 431, 418, 367, 368, 0, 0, 0, 0, 0, 0, 0, 386, 390, 407, 380, 0, - 0, 0, 0, 0, 0, 734, 0, 365, 0, 397, + 0, 0, 0, 0, 0, 737, 0, 365, 0, 397, 0, 0, 0, 349, 346, 0, 0, 384, 0, 0, 0, 351, 0, 366, 408, 0, 340, 108, 411, 417, 381, 209, 419, 379, 378, 422, 145, 0, 161, 110, @@ -1238,7 +1246,7 @@ var yyAct = [...]int{ 422, 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, 415, 363, 371, 98, 369, 152, 140, 174, 396, 141, 151, 122, 166, 146, 173, 181, 182, - 163, 180, 189, 84, 162, 607, 96, 155, 86, 170, + 163, 180, 189, 84, 162, 608, 96, 155, 86, 170, 160, 128, 114, 115, 85, 0, 149, 101, 106, 100, 137, 167, 168, 99, 192, 90, 179, 88, 338, 178, 135, 165, 171, 129, 126, 87, 169, 127, 125, 117, @@ -1275,7 +1283,7 @@ var yyAct = [...]int{ 153, 97, 175, 157, 355, 358, 353, 354, 392, 393, 427, 428, 429, 409, 350, 0, 356, 357, 0, 413, 395, 82, 0, 120, 190, 147, 105, 177, 138, 0, - 0, 770, 0, 269, 0, 0, 0, 102, 0, 266, + 0, 773, 0, 269, 0, 0, 0, 102, 0, 266, 0, 0, 0, 119, 309, 121, 0, 0, 158, 130, 0, 0, 0, 0, 300, 301, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 267, 288, 287, @@ -1303,7 +1311,7 @@ var yyAct = [...]int{ 0, 269, 0, 0, 0, 102, 0, 266, 0, 0, 0, 119, 309, 121, 0, 0, 158, 130, 0, 0, 0, 0, 300, 301, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 492, 267, 288, 287, 290, 291, + 0, 0, 54, 0, 493, 267, 288, 287, 290, 291, 292, 293, 0, 0, 95, 289, 294, 295, 296, 0, 0, 0, 264, 281, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1411,7 +1419,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 108, 0, 0, 0, 209, 0, 0, 318, 0, 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, 0, 0, 0, 98, - 0, 152, 140, 174, 1405, 141, 151, 122, 166, 146, + 0, 152, 140, 174, 1410, 141, 151, 122, 166, 146, 173, 181, 182, 163, 180, 189, 84, 162, 172, 96, 155, 86, 170, 160, 128, 114, 115, 85, 0, 149, 101, 106, 100, 137, 167, 168, 99, 192, 90, 179, @@ -1453,8 +1461,8 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 95, 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, 526, 525, 535, 536, 528, - 529, 530, 531, 532, 533, 534, 527, 0, 0, 537, + 0, 0, 0, 0, 0, 527, 526, 536, 537, 529, + 530, 531, 532, 533, 534, 535, 528, 0, 0, 538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 209, 0, 0, 0, 0, 145, 0, 161, 110, 118, 83, 89, 0, @@ -1469,14 +1477,14 @@ var yyAct = [...]int{ 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 138, 0, 0, 0, 514, 0, 0, + 0, 0, 0, 138, 0, 0, 0, 515, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 0, 516, 0, 0, 0, 0, 0, - 0, 95, 0, 0, 0, 0, 0, 511, 510, 0, + 0, 0, 80, 0, 517, 0, 0, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 512, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 512, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 513, 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, 108, 0, 0, 0, @@ -1516,11 +1524,11 @@ var yyAct = [...]int{ 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 0, 75, 0, 0, 0, 0, 0, 0, 0, 138, - 0, 0, 0, 821, 0, 0, 0, 82, 102, 120, + 0, 0, 0, 824, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 0, - 823, 0, 0, 0, 0, 0, 0, 95, 0, 0, + 826, 0, 0, 0, 0, 0, 0, 95, 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, @@ -1587,11 +1595,11 @@ var yyAct = [...]int{ 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 138, 0, 0, 0, 821, 0, 0, 0, 82, 102, + 138, 0, 0, 0, 824, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, - 0, 823, 0, 0, 0, 0, 0, 0, 95, 0, + 0, 826, 0, 0, 0, 0, 0, 0, 95, 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, @@ -1600,7 +1608,7 @@ var yyAct = [...]int{ 0, 0, 0, 108, 0, 0, 0, 209, 0, 0, 0, 0, 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, 0, 0, 0, 98, 0, 152, - 140, 174, 0, 819, 151, 122, 166, 146, 173, 181, + 140, 174, 0, 822, 151, 122, 166, 146, 173, 181, 182, 163, 180, 189, 84, 162, 172, 96, 155, 86, 170, 160, 128, 114, 115, 85, 0, 149, 101, 106, 100, 137, 167, 168, 99, 192, 90, 179, 88, 91, @@ -1614,7 +1622,7 @@ var yyAct = [...]int{ 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 0, 0, 721, 0, 0, 722, 0, + 0, 0, 80, 0, 0, 724, 0, 0, 725, 0, 0, 95, 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, @@ -1635,10 +1643,10 @@ var yyAct = [...]int{ 148, 191, 139, 153, 97, 175, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 82, 0, 120, 190, 147, 105, - 177, 102, 0, 616, 0, 0, 0, 119, 0, 121, + 177, 102, 0, 617, 0, 0, 0, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 80, 0, 615, 0, 0, 0, 0, 0, 0, + 0, 80, 0, 616, 0, 0, 0, 0, 0, 0, 95, 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, @@ -1684,7 +1692,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 207, 0, 823, + 0, 0, 0, 0, 0, 0, 0, 207, 0, 826, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1708,7 +1716,7 @@ var yyAct = [...]int{ 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 267, 0, 786, 0, 0, 0, 0, 0, 0, 95, + 267, 0, 789, 0, 0, 0, 0, 0, 0, 95, 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, @@ -1731,7 +1739,7 @@ var yyAct = [...]int{ 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 267, 0, 782, 0, 0, 0, 0, + 0, 0, 0, 267, 0, 785, 0, 0, 0, 0, 0, 0, 95, 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, @@ -1754,7 +1762,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 80, 0, 516, 0, + 0, 0, 0, 0, 0, 0, 80, 0, 517, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1775,7 +1783,7 @@ var yyAct = [...]int{ 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 82, 0, - 120, 190, 147, 105, 177, 589, 102, 0, 0, 0, + 120, 190, 147, 105, 177, 590, 102, 0, 0, 0, 0, 0, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, @@ -1919,14 +1927,15 @@ var yyAct = [...]int{ } var yyPact = [...]int{ - 129, -1000, -181, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1854, -1000, -193, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 894, 922, -1000, -1000, -1000, -1000, -1000, -1000, + 218, 7888, 20, 87, -31, 11175, 86, 119, 11641, -1000, + -3, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -81, -94, + -1000, 715, -1000, -1000, -1000, -1000, -1000, 867, 892, 759, + 870, 796, -1000, 6206, 58, 58, 10942, 5462, -1000, -1000, + 207, 11641, 82, 11641, -163, 55, 55, 55, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 861, 892, -1000, -1000, -1000, -1000, -1000, -1000, - 287, 7808, 7, 116, 25, 11095, 114, 1430, 11561, -1000, - 9, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -74, -83, - -1000, 644, -1000, -1000, -1000, -1000, -1000, 848, 855, 704, - 831, 742, -1000, 6126, 83, 83, 10862, 5382, -1000, -1000, - 241, 11561, 107, 11561, -152, 78, 78, 78, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1937,22 +1946,22 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 85, 11641, 201, -1000, 11641, 53, + 478, 53, 53, 53, 11641, -1000, 137, -1000, -1000, -1000, + 11641, 476, 819, 3374, 33, 3374, -1000, 3374, 3374, -1000, + 3374, 3, 3374, -75, 904, -1000, -1000, -1000, -1000, -50, + -1000, 3374, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 508, 832, 6705, 6705, 894, + -1000, 715, -1000, -1000, -1000, 820, -1000, -1000, 275, 911, + -1000, 7655, 134, -1000, 6705, 1528, 708, -1000, -1000, 708, + -1000, -1000, 122, -1000, -1000, 7183, 7183, 7183, 7183, 7183, + 7183, 7183, 7183, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 708, -1000, 6457, + 708, 708, 708, 708, 708, 708, 708, 708, 6705, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 10709, 9537, 11641, 504, -1000, 686, 5201, -91, + -1000, -1000, -1000, 204, 9304, -1000, -1000, -1000, 818, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 111, 11561, 204, -1000, 11561, 76, - 539, 76, 76, 76, 11561, -1000, 155, -1000, -1000, -1000, - 11561, 538, 791, 3294, 53, 3294, -1000, 3294, 3294, -1000, - 3294, 15, 3294, -61, 871, -1000, -1000, -1000, -1000, -29, - -1000, 3294, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 448, 798, 6625, 6625, 861, - -1000, 644, -1000, -1000, -1000, 792, -1000, -1000, 293, 880, - -1000, 7575, 151, -1000, 6625, 1325, 657, -1000, -1000, 657, - -1000, -1000, 128, -1000, -1000, 7103, 7103, 7103, 7103, 7103, - 7103, 7103, 7103, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 657, -1000, 6377, - 657, 657, 657, 657, 657, 657, 657, 657, 6625, 657, - 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 657, 657, 10629, 9457, 11561, 582, -1000, 646, 5121, -105, - -1000, -1000, -1000, 266, 9224, -1000, -1000, -1000, 789, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1961,129 +1970,129 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 598, 11641, -1000, 2036, -1000, 471, 3374, + 67, 463, 257, 460, 11641, 11641, 3374, 12, 41, 84, + 11641, 706, 65, 11641, 856, 763, 11641, 448, 444, -1000, + 4940, -1000, 3374, 3374, -1000, -1000, -1000, 3374, 3374, 3374, + 3374, 3374, 3374, -1000, -1000, -1000, -1000, 3374, 3374, -1000, + 909, 256, -1000, -1000, -1000, -1000, 6705, -1000, 762, -1000, + -1000, -1000, -1000, -1000, -1000, 917, 177, 430, 133, 695, + -1000, 371, 867, 508, 796, 9065, 773, -1000, -1000, 11641, + -1000, 6705, 6705, 339, -1000, 10469, -1000, -1000, 3896, 168, + 7183, 351, 285, 7183, 7183, 7183, 7183, 7183, 7183, 7183, + 7183, 7183, 7183, 7183, 7183, 7183, 7183, 7183, 396, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 442, -1000, 715, + 525, 525, 148, 148, 148, 148, 148, 148, 148, 7422, + 5710, 508, 550, 281, 6457, 6206, 6206, 6705, 6705, 10236, + 10003, 6206, 860, 227, 281, 11874, -1000, 508, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 6206, 6206, 6206, 6206, 24, + 11641, -1000, 615, 700, -1000, -1000, -1000, 858, 8599, 8832, + 24, 643, 9537, 11641, -1000, -1000, 4679, 686, -91, 678, + -1000, -130, -103, 2566, 124, -1000, -1000, -1000, -1000, 3113, + 172, 554, 316, -64, -1000, -1000, -1000, 718, -1000, 718, + 718, 718, 718, -32, -32, -32, -32, -1000, -1000, -1000, + -1000, -1000, 742, 741, -1000, 718, 718, 718, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 530, 11561, -1000, 2083, -1000, 527, 3294, - 95, 526, 283, 520, 11561, 11561, 3294, 28, 27, 11561, - 654, 91, 11561, 823, 711, 11561, 503, 473, -1000, 4860, - -1000, 3294, 3294, -1000, -1000, -1000, 3294, 3294, 3294, 3294, - 3294, 3294, -1000, -1000, -1000, -1000, 3294, 3294, -1000, 874, - 258, -1000, -1000, -1000, -1000, 6625, -1000, 710, -1000, -1000, - -1000, -1000, -1000, -1000, 887, 197, 370, 148, 653, -1000, - 331, 848, 448, 742, 8985, 732, -1000, -1000, 11561, -1000, - 6625, 6625, 339, -1000, 10389, -1000, -1000, 3816, 212, 7103, - 387, 246, 7103, 7103, 7103, 7103, 7103, 7103, 7103, 7103, - 7103, 7103, 7103, 7103, 7103, 7103, 7103, 395, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 466, -1000, 644, 671, - 671, 177, 177, 177, 177, 177, 177, 177, 7342, 5630, - 448, 525, 298, 6377, 6126, 6126, 6625, 6625, 10156, 9923, - 6126, 833, 250, 298, 11794, -1000, 448, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 6126, 6126, 6126, 6126, 38, 11561, - -1000, 611, 651, -1000, -1000, -1000, 828, 8519, 8752, 38, - 561, 9457, 11561, -1000, -1000, 4599, 646, -105, 621, -1000, - -129, -111, 2486, 157, -1000, -1000, -1000, -1000, 3033, 252, - 555, 318, -56, -1000, -1000, -1000, 670, -1000, 670, 670, - 670, 670, -21, -21, -21, -21, -1000, -1000, -1000, -1000, - -1000, 695, 694, -1000, 670, 670, 670, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 739, 739, 739, 724, 724, 744, + -1000, 11641, 3374, 854, 3374, -1000, 108, -1000, 11408, 11408, + 11641, 11641, 113, 11641, 11641, 684, -1000, 11641, 3374, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 693, 693, 693, 686, 686, 698, -1000, - 11561, 3294, 820, 3294, -1000, 74, -1000, 11328, 11328, 135, - 11561, 11561, 625, -1000, 11561, 3294, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 11641, 288, 11641, 11641, 281, 11641, + -1000, 802, 6705, 6705, 4418, 6705, -1000, -1000, -1000, 832, + -1000, 860, 886, -1000, 812, 809, 6206, -1000, -1000, 168, + 230, -1000, -1000, 397, -1000, -1000, -1000, -1000, 132, 708, + -1000, 2052, -1000, -1000, -1000, -1000, 351, 7183, 7183, 7183, + 451, 2052, 2193, 999, 393, 148, 265, 265, 144, 144, + 144, 144, 144, 329, 329, -1000, -1000, -1000, 508, -1000, + -1000, -1000, 508, 6206, 680, -1000, -1000, 6705, -1000, 508, + 539, 539, 386, 255, 683, 682, -1000, 127, 679, 658, + 539, 6206, 242, -1000, 6705, 508, -1000, 539, 508, 539, + 539, 665, 708, -1000, 11874, 9537, 9537, 9537, 9537, 9537, + -1000, 785, 784, -1000, 777, 775, 786, 11641, -1000, 546, + 8599, 136, 708, -1000, 9770, -1000, -1000, 903, 9537, 596, + -1000, -1000, 678, -91, -95, -1000, -1000, -1000, -1000, 281, + -1000, 423, 671, 2852, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 737, 424, -1000, 843, 166, 165, 417, 842, -1000, + -1000, -1000, 823, -1000, 262, -77, -1000, -1000, 374, -32, + -32, -1000, -1000, 124, 817, 124, 124, 124, 403, 403, + -1000, -1000, -1000, -1000, 357, -1000, -1000, -1000, 354, -1000, + 760, 11408, 3374, -1000, -1000, -1000, -1000, 250, 250, 219, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 11561, 278, 11561, 11561, 298, 11561, -1000, 772, 6625, - 6625, 4338, 6625, -1000, -1000, -1000, 798, -1000, 833, 847, - -1000, 780, 778, 6126, -1000, -1000, 212, 302, -1000, -1000, - 405, -1000, -1000, -1000, -1000, 146, 657, -1000, 2258, -1000, - -1000, -1000, -1000, 387, 7103, 7103, 7103, 469, 2258, 2057, - 1768, 1524, 177, 425, 425, 181, 181, 181, 181, 181, - 329, 329, -1000, -1000, -1000, 448, -1000, -1000, -1000, 448, - 6126, 622, -1000, -1000, 6625, -1000, 448, 502, 502, 260, - 290, 635, 633, -1000, 145, 632, 629, 502, 6126, 315, - -1000, 6625, 448, -1000, 502, 448, 502, 502, 588, 657, - -1000, 11794, 9457, 9457, 9457, 9457, 9457, -1000, 739, 738, - -1000, 730, 723, 724, 11561, -1000, 519, 8519, 152, 657, - -1000, 9690, -1000, -1000, 869, 9457, 596, -1000, -1000, 621, - -105, -134, -1000, -1000, -1000, -1000, 298, -1000, 424, 614, - 2772, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 691, 460, - -1000, 811, 196, 194, 451, 810, -1000, -1000, -1000, 794, - -1000, 343, -70, -1000, -1000, 389, -21, -21, -1000, -1000, - 157, 786, 157, 157, 157, 423, 423, -1000, -1000, -1000, - -1000, 388, -1000, -1000, -1000, 384, -1000, 708, 11328, 3294, - -1000, -1000, -1000, -1000, 286, 286, 179, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 37, 672, - -1000, 24, 23, 86, -1000, 3294, -1000, 258, -1000, 417, - 6625, -1000, -1000, -1000, 770, 298, 298, 142, -1000, -1000, - 11561, -1000, -1000, -1000, -1000, 618, -1000, -1000, -1000, 3555, - 6126, -1000, 469, 2258, 1341, -1000, 7103, 7103, -1000, -1000, - 502, 6126, 298, -1000, -1000, -1000, 162, 395, 162, 7103, - 7103, 7103, 7103, 4338, 7103, 7103, 7103, 7103, -163, 597, - 205, -1000, 6625, 280, -1000, -1000, -1000, -1000, -1000, 707, - 11794, 657, -1000, 8280, 11328, 601, -1000, 248, 651, 690, - 702, 615, -1000, -1000, -1000, -1000, 737, -1000, 734, -1000, - -1000, -1000, -1000, -1000, 106, 105, 104, 11328, -1000, 861, - 6625, 596, -1000, -1000, -1000, -133, -131, -1000, -1000, -1000, - 3033, -1000, 3033, 11328, 59, -1000, 451, 451, -1000, -1000, - -1000, 687, 701, 85, -1000, -1000, -1000, 551, 157, 157, - -1000, 202, -1000, -1000, -1000, 497, -1000, 494, 598, 483, - 11561, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 11561, -1000, -1000, - -1000, -1000, -1000, 11328, -169, 449, 11328, 11328, 11561, -1000, - 278, -1000, 298, -1000, 4077, -1000, 869, 9457, -1000, -1000, - 448, -1000, 7103, 2258, 2258, -1000, -1000, 448, 670, 670, - -1000, 670, 686, -1000, 670, 0, 670, -14, 448, 448, - 1682, 2201, 1659, 1957, -1000, 1480, 1902, 1081, 1721, 657, - -159, -1000, 298, 6625, -1000, 813, 549, 569, -1000, -1000, - 5878, 448, 481, 141, 479, -1000, 861, 11794, 6625, -1000, - -1000, 6625, 674, -1000, 6625, -1000, -1000, -1000, 657, 657, - 657, 479, 848, 298, -1000, -1000, -1000, -1000, 2772, -1000, - 464, -1000, 670, -1000, -1000, -1000, 11328, -58, 885, -1000, - -1000, -1000, -1000, 669, -1000, -1000, -1000, -1000, -1000, -1000, - -21, 407, -21, 362, -1000, 361, 3294, -1000, -1000, -1000, - -1000, 816, -1000, 4077, -1000, -1000, 664, -1000, -1000, -1000, - 866, 584, -1000, 2258, -1000, -1000, 100, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 7103, 7103, -1000, 7103, - 7103, -1000, 7103, 7103, -1000, 7103, 7103, 7103, 448, 406, - 298, 804, -1000, 657, -1000, -1000, 576, 11328, 11328, -1000, - 11328, 848, -1000, 298, 298, 11328, 298, 11328, 11328, 11328, - 8041, -1000, 147, 11328, -1000, 458, -1000, 187, -1000, -142, - 544, 157, -1000, 157, 531, 498, -1000, 657, 572, -1000, - 226, 11328, 864, 853, -1000, -1000, 1831, 1831, 1831, 1831, - 1831, 1831, 1831, 1831, 20, -1000, -1000, 884, -1000, 657, - -1000, 644, 131, -1000, -1000, -1000, 456, 447, 447, 447, - 152, 147, -1000, 444, 211, 402, -1000, 55, 11328, 268, - 802, -1000, 797, 659, -1000, -1000, -1000, -1000, -1000, 26, - 4077, 3033, 441, -1000, 6625, 6625, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 448, 46, -172, 11794, 569, 448, - 11328, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 354, -1000, - -1000, 11561, -1000, -1000, 396, -1000, -1000, 484, 437, -1000, - 11328, -1000, -1000, 672, 298, 562, -1000, 748, -167, -177, - 550, -1000, -1000, -1000, 658, -1000, -1000, -1000, 26, 777, - -169, -1000, 747, -1000, 11328, -1000, 29, -1000, -170, 435, - 32, -175, 700, 657, -178, 692, -1000, 878, 6864, -1000, - -1000, 883, 163, 163, 1831, 448, -1000, -1000, -1000, 63, - 338, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 22, 735, -1000, -1000, -1000, 11, 10, 64, -1000, + 3374, -1000, 256, -1000, 391, 6705, -1000, -1000, -1000, 799, + 281, 281, 126, -1000, -1000, 11641, -1000, -1000, -1000, -1000, + 623, -1000, -1000, -1000, 3635, 6206, -1000, 451, 2052, 1357, + -1000, 7183, 7183, -1000, -1000, 539, 6206, 281, -1000, -1000, + -1000, 72, 396, 72, 7183, 7183, 7183, 7183, 4418, 7183, + 7183, 7183, 7183, -173, 642, 211, -1000, 6705, 313, -1000, + -1000, -1000, -1000, -1000, 752, 11874, 708, -1000, 8360, 11408, + 651, -1000, 200, 700, 734, 750, 711, -1000, -1000, -1000, + -1000, 781, -1000, 778, -1000, -1000, -1000, -1000, -1000, 80, + 79, 78, 11408, -1000, 894, 6705, 596, -1000, -1000, -1000, + -138, -144, -1000, -1000, -1000, 3113, -1000, 3113, 11408, 40, + -1000, 417, 417, -1000, -1000, -1000, 731, 749, 71, -1000, + -1000, -1000, 540, 124, 124, -1000, 163, -1000, -1000, -1000, + 518, -1000, 515, 657, 511, 11641, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 11641, -1000, -1000, -1000, -1000, -1000, 11408, -181, + 399, 11408, 11408, 11641, -1000, 288, -1000, 281, -1000, 4157, + -1000, 903, 9537, -1000, -1000, 508, -1000, 7183, 2052, 2052, + -1000, -1000, 508, 718, 718, -1000, 718, 724, -1000, 718, + -12, 718, -13, 508, 508, 1843, 2151, 1671, 2025, -1000, + 1635, 1992, 1320, 1974, 708, -170, -1000, 281, 6705, -1000, + 845, 622, 647, -1000, -1000, 5958, 508, 506, 103, 486, + -1000, 894, 11874, 6705, -1000, -1000, 6705, 723, -1000, 6705, + -1000, -1000, -1000, 708, 708, 708, 486, 867, 281, -1000, + -1000, -1000, -1000, 2852, -1000, 484, -1000, 718, -1000, -1000, + -1000, 11408, -56, 916, -1000, -1000, -1000, -1000, 717, -1000, + -1000, -1000, -1000, -1000, -1000, -32, 383, -32, 350, -1000, + 333, 3374, -1000, -1000, -1000, -1000, 849, -1000, 4157, -1000, + -1000, 716, -1000, -1000, -1000, 900, 654, -1000, 2052, -1000, + -1000, 100, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 7183, 7183, -1000, 7183, 7183, -1000, 7183, 7183, -1000, + 7183, 7183, 7183, 508, 379, 281, 830, -1000, 708, -1000, + -1000, 670, 11408, 11408, -1000, 11408, 867, -1000, 281, 281, + 11408, 281, 11408, 11408, 11408, 8121, -1000, 131, 11408, -1000, + 482, -1000, 185, -1000, -153, 534, 124, -1000, 124, 524, + 519, -1000, 708, 648, -1000, 199, 11408, 898, 891, -1000, + -1000, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 17, + -1000, -1000, 914, -1000, 708, -1000, 715, 83, -1000, -1000, + -1000, 467, 458, 458, 458, 136, 131, -1000, 395, 176, + 378, -1000, 37, 11408, 266, 829, -1000, 827, 714, -1000, + -1000, -1000, -1000, -1000, 21, 4157, 3113, 456, -1000, 6705, + 6705, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 508, + 34, -184, 11874, 647, 508, 11408, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 302, -1000, -1000, 11641, -1000, -1000, 340, + -1000, -1000, 512, 452, -1000, 11408, -1000, -1000, 735, 281, + 628, -1000, 795, -179, -187, 586, -1000, -1000, -1000, 713, + -1000, -1000, -1000, 21, 808, -181, -1000, 793, -1000, 11408, + -1000, 18, -1000, -182, 428, 16, -185, 748, 708, -189, + 747, -1000, 908, 6944, -1000, -1000, 910, 152, 152, 1858, + 508, -1000, -1000, -1000, 44, 326, -1000, -1000, -1000, -1000, + -1000, -1000, } var yyPgo = [...]int{ - 0, 1130, 45, 458, 1129, 1120, 1119, 1114, 1113, 1112, - 1111, 1110, 1108, 1107, 1106, 1105, 1103, 1102, 1099, 1097, - 1096, 1095, 1093, 1092, 1091, 1090, 141, 1087, 1082, 1080, - 66, 1076, 75, 1075, 1073, 37, 60, 47, 42, 1038, - 1072, 21, 54, 57, 1071, 27, 1070, 1069, 80, 1067, - 53, 1065, 1063, 311, 1062, 1061, 13, 28, 1060, 1058, - 1057, 1055, 70, 265, 1047, 1044, 1042, 1039, 1037, 1036, - 64, 7, 11, 34, 26, 1034, 30, 22, 1033, 55, - 1032, 1031, 1030, 1028, 16, 1027, 58, 1025, 19, 56, - 1022, 9, 65, 41, 18, 8, 83, 62, 1020, 20, - 69, 51, 1017, 1015, 434, 1009, 1006, 59, 1005, 1004, - 23, 162, 361, 1001, 1000, 998, 997, 38, 0, 827, - 43, 73, 995, 990, 987, 1522, 71, 52, 14, 981, - 31, 17, 33, 979, 963, 40, 953, 951, 950, 947, - 946, 945, 943, 90, 942, 941, 939, 81, 44, 938, - 937, 61, 24, 936, 935, 934, 49, 63, 932, 930, - 50, 25, 929, 928, 927, 923, 922, 35, 12, 920, - 15, 913, 10, 912, 29, 911, 4, 910, 6, 909, - 3, 908, 5, 48, 1, 905, 2, 902, 900, 654, - 578, 899, 898, 84, + 0, 1146, 33, 449, 1145, 1144, 1143, 1142, 1141, 1139, + 1138, 1136, 1135, 1130, 1126, 1125, 1123, 1116, 1110, 1109, + 1108, 1092, 1091, 1089, 1088, 1087, 99, 1086, 1085, 1081, + 71, 1078, 60, 1077, 1076, 46, 76, 50, 41, 391, + 1072, 35, 53, 59, 1071, 38, 1070, 1069, 64, 1068, + 48, 1065, 1063, 201, 1060, 1059, 10, 30, 1058, 1057, + 1054, 1052, 98, 1042, 1050, 1049, 1048, 1046, 1045, 1044, + 51, 8, 12, 47, 19, 1043, 416, 6, 1040, 52, + 1039, 1036, 1033, 1032, 16, 1030, 57, 1027, 18, 56, + 1024, 15, 65, 28, 20, 7, 69, 58, 1018, 14, + 61, 54, 1017, 1016, 411, 1014, 1012, 42, 1011, 1009, + 26, 154, 326, 1008, 1007, 1004, 1002, 37, 0, 504, + 418, 63, 1001, 999, 997, 1597, 70, 49, 17, 988, + 55, 1216, 40, 987, 985, 31, 981, 980, 979, 978, + 971, 970, 969, 84, 966, 964, 963, 24, 22, 962, + 961, 62, 23, 958, 957, 955, 44, 66, 954, 953, + 45, 29, 950, 949, 948, 947, 946, 27, 9, 943, + 13, 941, 21, 940, 25, 939, 4, 935, 11, 934, + 3, 933, 5, 43, 1, 932, 2, 931, 930, 311, + 701, 929, 928, 107, } var yyR1 = [...]int{ @@ -2109,48 +2118,48 @@ var yyR1 = [...]int{ 161, 161, 171, 171, 170, 159, 159, 174, 174, 174, 174, 185, 186, 184, 184, 184, 184, 184, 166, 166, 166, 167, 167, 167, 168, 168, 168, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 177, - 175, 175, 176, 176, 13, 18, 18, 14, 14, 14, - 14, 14, 15, 15, 19, 20, 20, 20, 20, 20, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 177, 175, 175, 176, 176, 13, 18, 18, 14, + 14, 14, 14, 14, 15, 15, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 108, 108, 106, 106, - 109, 109, 107, 107, 107, 110, 110, 110, 134, 134, - 134, 21, 21, 23, 23, 24, 25, 22, 22, 22, - 22, 22, 22, 22, 16, 192, 26, 27, 27, 28, - 28, 28, 32, 32, 32, 30, 30, 31, 31, 37, - 37, 36, 36, 38, 38, 38, 38, 122, 122, 122, - 121, 121, 40, 40, 41, 41, 42, 42, 43, 43, - 43, 43, 55, 55, 91, 91, 93, 93, 44, 44, - 44, 44, 45, 45, 46, 46, 47, 47, 129, 129, - 128, 128, 128, 127, 127, 49, 49, 49, 51, 50, - 50, 50, 50, 52, 52, 54, 54, 53, 53, 56, - 56, 56, 56, 57, 57, 39, 39, 39, 39, 39, - 39, 39, 105, 105, 59, 59, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 69, 69, 69, 69, - 69, 69, 60, 60, 60, 60, 60, 60, 60, 35, - 35, 70, 70, 70, 76, 71, 71, 63, 63, 63, + 20, 20, 20, 20, 20, 20, 20, 20, 108, 108, + 106, 106, 109, 109, 107, 107, 107, 110, 110, 110, + 134, 134, 134, 21, 21, 23, 23, 24, 25, 22, + 22, 22, 22, 22, 22, 22, 16, 192, 26, 27, + 27, 28, 28, 28, 32, 32, 32, 30, 30, 31, + 31, 37, 37, 36, 36, 38, 38, 38, 38, 122, + 122, 122, 121, 121, 40, 40, 41, 41, 42, 42, + 43, 43, 43, 43, 55, 55, 91, 91, 93, 93, + 44, 44, 44, 44, 45, 45, 46, 46, 47, 47, + 129, 129, 128, 128, 128, 127, 127, 49, 49, 49, + 51, 50, 50, 50, 50, 52, 52, 54, 54, 53, + 53, 56, 56, 56, 56, 57, 57, 39, 39, 39, + 39, 39, 39, 39, 105, 105, 59, 59, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 69, 69, + 69, 69, 69, 69, 60, 60, 60, 60, 60, 60, + 60, 35, 35, 70, 70, 70, 76, 71, 71, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 67, - 67, 67, 65, 65, 65, 65, 65, 65, 65, 65, + 63, 67, 67, 67, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, - 66, 193, 193, 68, 68, 68, 68, 33, 33, 33, - 33, 33, 132, 132, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 80, 80, 34, - 34, 78, 78, 79, 81, 81, 77, 77, 77, 62, - 62, 62, 62, 62, 62, 62, 62, 64, 64, 64, - 82, 82, 83, 83, 84, 84, 85, 85, 86, 87, - 87, 87, 88, 88, 88, 88, 89, 89, 89, 61, - 61, 61, 61, 61, 61, 90, 90, 90, 90, 94, - 94, 72, 72, 74, 74, 73, 75, 95, 95, 99, - 96, 96, 100, 100, 100, 100, 98, 98, 98, 124, - 124, 124, 103, 103, 111, 111, 112, 112, 104, 104, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 114, 114, 114, 115, 115, 116, 116, 116, 123, 123, - 119, 119, 120, 120, 125, 125, 126, 126, 117, 117, + 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, + 66, 66, 66, 193, 193, 68, 68, 68, 68, 33, + 33, 33, 33, 33, 132, 132, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 80, + 80, 34, 34, 78, 78, 79, 81, 81, 77, 77, + 77, 62, 62, 62, 62, 62, 62, 62, 62, 64, + 64, 64, 82, 82, 83, 83, 84, 84, 85, 85, + 86, 87, 87, 87, 88, 88, 88, 88, 89, 89, + 89, 61, 61, 61, 61, 61, 61, 90, 90, 90, + 90, 94, 94, 72, 72, 74, 74, 73, 75, 95, + 95, 99, 96, 96, 100, 100, 100, 100, 98, 98, + 98, 124, 124, 124, 103, 103, 111, 111, 112, 112, + 104, 104, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 114, 114, 114, 115, 115, 116, 116, 116, + 123, 123, 119, 119, 120, 120, 125, 125, 126, 126, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, @@ -2160,7 +2169,7 @@ var yyR1 = [...]int{ 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 117, 117, 117, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, @@ -2171,7 +2180,8 @@ var yyR1 = [...]int{ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 189, 190, 130, 131, 131, 131, + 118, 118, 118, 118, 118, 118, 189, 190, 130, 131, + 131, 131, } var yyR2 = [...]int{ @@ -2197,47 +2207,48 @@ var yyR2 = [...]int{ 0, 1, 1, 3, 2, 3, 1, 10, 11, 11, 12, 3, 3, 1, 1, 2, 2, 2, 0, 1, 3, 1, 2, 3, 1, 1, 1, 6, 7, 7, - 7, 7, 4, 5, 7, 5, 12, 7, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, - 1, 3, 8, 8, 3, 3, 5, 4, 6, 5, - 4, 4, 3, 2, 3, 4, 4, 3, 4, 4, - 4, 4, 4, 4, 3, 2, 3, 3, 2, 3, - 4, 3, 7, 5, 4, 2, 4, 2, 2, 2, - 2, 3, 3, 5, 2, 3, 1, 1, 0, 1, - 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, - 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, - 2, 2, 3, 3, 2, 0, 2, 0, 2, 1, - 2, 2, 0, 1, 1, 0, 1, 0, 1, 0, - 1, 1, 3, 1, 2, 3, 5, 0, 1, 2, - 1, 1, 0, 2, 1, 3, 1, 1, 1, 3, - 1, 3, 3, 7, 1, 3, 1, 3, 4, 4, - 4, 3, 2, 4, 0, 1, 0, 2, 0, 1, - 0, 1, 2, 1, 1, 1, 2, 2, 1, 2, - 3, 2, 3, 2, 2, 2, 1, 1, 3, 0, - 5, 5, 5, 0, 2, 1, 3, 3, 2, 3, - 1, 2, 0, 3, 1, 1, 3, 3, 4, 4, - 5, 3, 4, 5, 6, 2, 1, 2, 1, 2, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, - 2, 1, 1, 1, 3, 1, 3, 1, 1, 1, - 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, - 2, 2, 2, 2, 3, 1, 1, 1, 1, 4, - 5, 6, 4, 4, 6, 6, 6, 6, 8, 8, - 6, 8, 8, 6, 8, 8, 6, 8, 8, 9, - 7, 5, 4, 2, 2, 2, 2, 2, 2, 2, - 2, 0, 2, 4, 4, 4, 4, 0, 3, 4, - 7, 3, 1, 1, 2, 3, 3, 1, 2, 2, - 1, 2, 1, 2, 2, 1, 2, 0, 1, 0, - 2, 1, 2, 4, 0, 2, 1, 3, 5, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 0, 3, 0, 2, 0, 3, 1, 3, 2, 0, - 1, 1, 0, 2, 4, 4, 0, 2, 4, 2, - 1, 3, 5, 4, 6, 1, 3, 3, 5, 0, - 5, 1, 3, 1, 2, 3, 1, 1, 3, 3, - 1, 3, 3, 3, 3, 3, 1, 2, 1, 1, - 1, 1, 1, 1, 0, 2, 0, 3, 0, 1, + 7, 7, 4, 5, 7, 5, 5, 5, 12, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 0, 1, 1, 0, 2, + 1, 7, 1, 3, 8, 8, 3, 3, 5, 4, + 6, 5, 4, 4, 3, 2, 3, 4, 4, 3, + 4, 4, 4, 4, 4, 4, 3, 2, 3, 3, + 2, 3, 4, 3, 7, 5, 4, 2, 4, 2, + 2, 2, 2, 3, 3, 5, 2, 3, 1, 1, + 0, 1, 1, 1, 0, 2, 2, 0, 2, 2, + 0, 1, 1, 2, 1, 1, 2, 1, 1, 2, + 2, 2, 2, 2, 3, 3, 2, 0, 2, 0, + 2, 1, 2, 2, 0, 1, 1, 0, 1, 0, + 1, 0, 1, 1, 3, 1, 2, 3, 5, 0, + 1, 2, 1, 1, 0, 2, 1, 3, 1, 1, + 1, 3, 1, 3, 3, 7, 1, 3, 1, 3, + 4, 4, 4, 3, 2, 4, 0, 1, 0, 2, + 0, 1, 0, 1, 2, 1, 1, 1, 2, 2, + 1, 2, 3, 2, 3, 2, 2, 2, 1, 1, + 3, 0, 5, 5, 5, 0, 2, 1, 3, 3, + 2, 3, 1, 2, 0, 3, 1, 1, 3, 3, + 4, 4, 5, 3, 4, 5, 6, 2, 1, 2, + 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 0, 2, 1, 1, 1, 3, 1, 3, 1, + 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 2, 2, 2, 3, 1, 1, 1, + 1, 4, 5, 6, 4, 4, 6, 6, 6, 6, + 8, 8, 6, 8, 8, 6, 8, 8, 6, 8, + 8, 9, 7, 5, 4, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 2, 4, 4, 4, 4, 0, + 3, 4, 7, 3, 1, 1, 2, 3, 3, 1, + 2, 2, 1, 2, 1, 2, 2, 1, 2, 0, + 1, 0, 2, 1, 2, 4, 0, 2, 1, 3, + 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 0, 3, 0, 2, 0, 3, 1, 3, + 2, 0, 1, 1, 0, 2, 4, 4, 0, 2, + 4, 2, 1, 3, 5, 4, 6, 1, 3, 3, + 5, 0, 5, 1, 3, 1, 2, 3, 1, 1, + 3, 3, 1, 3, 3, 3, 3, 3, 1, 2, + 1, 1, 1, 1, 1, 1, 0, 2, 0, 3, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, + 0, 2, 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, 1, 1, 1, 1, 1, 1, @@ -2258,8 +2269,8 @@ var yyR2 = [...]int{ 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, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, + 1, 1, } var yyChk = [...]int{ @@ -2307,249 +2318,251 @@ var yyChk = [...]int{ 45, 122, 6, 257, 30, 142, 43, 123, 79, 126, 69, 5, 129, 32, 9, 50, 53, 248, 249, 250, 34, 78, 12, -164, 90, -157, 57, -53, 124, -53, - 251, -112, 128, -112, -112, 123, -53, 115, 117, 52, - -18, -53, -111, 128, 57, -111, -111, -111, -53, 112, - -53, 57, 30, -131, -189, -120, 243, 57, 155, 123, - 156, 125, -131, -131, -131, -131, 159, 160, -131, -109, - -108, 225, 226, 216, 224, 12, 216, 158, -131, -130, - -130, -190, 56, -89, 19, 31, -39, -125, -85, -86, - -39, -84, -2, -26, 36, -30, 21, 65, 11, -122, - 73, 72, 89, -121, 22, -119, 59, 112, -39, -60, - 92, 74, 90, 91, 76, 94, 93, 104, 97, 98, - 99, 100, 101, 102, 103, 95, 96, 107, 82, 83, - 84, 85, 86, 87, 88, -105, -189, -76, -189, 113, - 114, -63, -63, -63, -63, -63, -63, -63, -63, -189, - -2, -71, -39, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -80, -39, -189, -193, -189, -193, -193, -193, - -193, -193, -193, -193, -189, -189, -189, -189, -54, 26, - -53, -41, -42, -43, -44, -55, -76, -189, -53, -53, - -48, -191, 55, 11, 53, 55, -96, 164, -97, -101, - 233, 235, 82, -124, -119, 59, 29, 30, 56, 55, - -53, -136, -139, -141, -140, -142, -137, -138, 184, 185, - 108, 188, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 30, 145, 180, 181, 182, 183, 200, 201, - 202, 203, 204, 205, 206, 207, 167, 168, 169, 170, - 171, 172, 173, 175, 176, 177, 178, 179, 57, -131, - 125, 57, 74, 57, -53, -53, -131, 157, 157, -53, - 55, 126, -48, 23, 52, -53, 57, 57, -126, -125, - -117, -131, -131, -131, -131, -131, -131, -131, -131, -131, - -131, 11, -107, 11, 92, -39, 52, 9, 92, 55, - 18, 112, 55, -87, 24, 25, -88, -190, -32, -64, - -119, 60, 63, -31, 43, -53, -39, -39, -69, 68, - 74, 69, 70, -121, 99, -126, -120, -117, -63, -70, - -73, -76, 64, 92, 90, 91, 76, -63, -63, -63, + 251, -112, 128, -112, -112, 123, -53, 115, 117, 120, + 52, -18, -53, -111, 128, 57, -111, -111, -111, -53, + 112, -53, 57, 30, -131, -189, -120, 243, 57, 155, + 123, 156, 125, -131, -131, -131, -131, 159, 160, -131, + -109, -108, 225, 226, 216, 224, 12, 216, 158, -131, + -130, -130, -190, 56, -89, 19, 31, -39, -125, -85, + -86, -39, -84, -2, -26, 36, -30, 21, 65, 11, + -122, 73, 72, 89, -121, 22, -119, 59, 112, -39, + -60, 92, 74, 90, 91, 76, 94, 93, 104, 97, + 98, 99, 100, 101, 102, 103, 95, 96, 107, 82, + 83, 84, 85, 86, 87, 88, -105, -189, -76, -189, + 113, 114, -63, -63, -63, -63, -63, -63, -63, -63, + -189, -2, -71, -39, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -80, -39, -189, -193, -189, -193, -193, + -193, -193, -193, -193, -193, -189, -189, -189, -189, -54, + 26, -53, -41, -42, -43, -44, -55, -76, -189, -53, + -53, -48, -191, 55, 11, 53, 55, -96, 164, -97, + -101, 233, 235, 82, -124, -119, 59, 29, 30, 56, + 55, -53, -136, -139, -141, -140, -142, -137, -138, 184, + 185, 108, 188, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 30, 145, 180, 181, 182, 183, 200, + 201, 202, 203, 204, 205, 206, 207, 167, 168, 169, + 170, 171, 172, 173, 175, 176, 177, 178, 179, 57, + -131, 125, 57, 74, 57, -53, -53, -131, 157, 157, + 123, 123, -53, 55, 126, -48, 23, 52, -53, 57, + 57, -126, -125, -117, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, 11, -107, 11, 92, -39, 52, + 9, 92, 55, 18, 112, 55, -87, 24, 25, -88, + -190, -32, -64, -119, 60, 63, -31, 43, -53, -39, + -39, -69, 68, 74, 69, 70, -121, 99, -126, -120, + -117, -63, -70, -73, -76, 64, 92, 90, 91, 76, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, - -63, -63, -132, 57, 59, 57, -62, -62, -119, -37, - 21, -36, -38, -190, 55, -190, -2, -36, -36, -39, - -39, -77, 59, -119, -125, -77, 59, -36, -30, -78, - -79, 78, -77, -190, -36, -37, -36, -36, -92, 151, - -53, 30, 55, -49, -51, -50, -52, 42, 46, 48, - 43, 44, 45, 49, -129, 22, -41, -189, -128, 151, - -127, 22, -125, 59, -92, 53, -41, -53, -100, -97, - 55, 234, 236, 237, 52, 71, -39, -148, 107, -166, - -167, -168, -120, 59, 60, -157, -158, -159, -169, 137, - -174, 130, 132, 129, -160, 138, 124, 28, 56, -153, - 68, 74, -149, 212, -143, 54, -143, -143, -143, -143, - -147, 187, -147, -147, -147, 54, 54, -143, -143, -143, - -151, 54, -151, -151, -152, 54, -152, -123, 53, -53, - -131, 23, -131, -113, 120, 117, 118, -177, 116, 209, - 187, 66, 29, 15, 252, 151, 265, 57, 152, -119, - -119, 120, 117, -53, -53, -53, -131, -53, -110, 90, - 12, -125, -125, -53, 38, -39, -39, -126, -86, -89, - -103, 19, 11, 34, 34, -36, 68, 69, 70, 112, - -189, -70, -63, -63, -63, -35, 146, 73, -190, -190, - -36, 55, -39, -190, -190, -190, 55, 53, 22, 55, - 11, 55, 11, 112, 55, 11, 55, 11, -190, -36, - -81, -79, 80, -39, -190, -190, -190, -190, -190, -61, - 30, 34, -2, -189, -189, -95, -99, -77, -42, -43, - -43, -42, -43, 42, 42, 42, 47, 42, 47, 42, - -50, -125, -190, -56, 50, 127, 51, -189, -127, -57, - 12, -41, -57, -101, -102, 238, 235, 241, 57, 59, - 55, -168, 82, 54, 57, 28, -160, -160, -161, 57, - -161, 28, -144, 29, 68, -150, 213, 60, -147, -147, - -148, 30, -148, -148, -148, -156, 59, -156, 60, 60, - 52, -119, -131, -130, -183, 131, 137, 138, 133, 57, - 124, 28, 130, 132, 151, 129, -183, -114, -115, 126, - 22, 124, 28, 151, -182, 53, 157, 157, 126, -131, - -107, 59, -39, 39, 112, -53, -40, 11, 99, -120, - -37, -35, 73, -63, -63, -190, -38, -135, 108, 184, - 145, 182, 178, 198, 189, 211, 180, 212, -132, -135, - -63, -63, -63, -63, -120, -63, -63, -63, -63, 259, - -84, 81, -39, 79, -94, 52, -95, -72, -74, -73, - -189, -2, -90, -119, -93, -119, -57, 55, 82, -46, - -45, 52, 53, -47, 52, -45, 42, 42, 124, 124, - 124, -93, -84, -39, -57, 235, 239, 240, -167, -168, - -171, -170, -119, -174, -161, -161, 54, -146, 52, 59, - 60, 61, 68, 242, 67, 56, -148, -148, 57, 108, - 56, 55, 56, 55, 56, 55, -53, -130, -130, -53, - -130, -119, -180, 262, -181, 57, -119, -119, -53, -110, - -57, -41, -190, -63, -190, -143, -143, -143, -152, -143, - 172, -143, 172, -190, -190, -190, 55, 19, -190, 55, - 19, -190, 55, 19, -190, 55, 19, -189, -34, 257, - -39, 27, -94, 55, -190, -190, -190, 55, 112, -190, - 55, -84, -99, -39, -39, 54, -39, -189, -189, -189, - -190, -88, 56, 55, -143, -91, -119, -154, 209, 9, - 54, -147, 59, -147, 60, 60, -131, 26, -179, -178, - -120, 54, -82, 13, -147, 57, -63, -63, -63, -63, - -63, -63, -63, -63, -63, -190, 59, 28, -74, 34, - -2, -189, -119, -119, -119, -88, -91, -91, -91, -91, - -128, -173, -172, 53, 134, 66, -170, 56, 55, -155, - 130, 28, 129, 242, 56, -148, -148, 56, 56, -189, - 55, 82, -91, -83, 14, 16, -190, -190, -190, -190, - -190, -190, -190, -190, -33, 92, 262, 9, -72, -2, - 112, 56, -190, -190, -190, -56, -172, 57, -162, 82, - 59, 140, -119, -145, 66, 28, 28, 54, -175, -176, - 151, -178, -168, 56, -39, -71, -190, 260, 49, 263, - -95, -190, -119, 60, -53, 59, 56, -190, 55, -119, - -182, 39, 261, 264, 54, -176, 34, -180, 39, -91, - 153, 262, 56, 154, 263, -185, -186, 52, -189, 264, - -186, 52, 10, 9, -63, 150, -184, 141, 136, 139, - 30, -184, -190, -190, 135, 29, 68, + -63, -63, -63, -63, -63, -132, 57, 59, 57, -62, + -62, -119, -37, 21, -36, -38, -190, 55, -190, -2, + -36, -36, -39, -39, -77, 59, -119, -125, -77, 59, + -36, -30, -78, -79, 78, -77, -190, -36, -37, -36, + -36, -92, 151, -53, 30, 55, -49, -51, -50, -52, + 42, 46, 48, 43, 44, 45, 49, -129, 22, -41, + -189, -128, 151, -127, 22, -125, 59, -92, 53, -41, + -53, -100, -97, 55, 234, 236, 237, 52, 71, -39, + -148, 107, -166, -167, -168, -120, 59, 60, -157, -158, + -159, -169, 137, -174, 130, 132, 129, -160, 138, 124, + 28, 56, -153, 68, 74, -149, 212, -143, 54, -143, + -143, -143, -143, -147, 187, -147, -147, -147, 54, 54, + -143, -143, -143, -151, 54, -151, -151, -152, 54, -152, + -123, 53, -53, -131, 23, -131, -113, 120, 117, 118, + -177, 116, 209, 187, 66, 29, 15, 252, 151, 265, + 57, 152, -119, -119, -53, -53, 120, 117, -53, -53, + -53, -131, -53, -110, 90, 12, -125, -125, -53, 38, + -39, -39, -126, -86, -89, -103, 19, 11, 34, 34, + -36, 68, 69, 70, 112, -189, -70, -63, -63, -63, + -35, 146, 73, -190, -190, -36, 55, -39, -190, -190, + -190, 55, 53, 22, 55, 11, 55, 11, 112, 55, + 11, 55, 11, -190, -36, -81, -79, 80, -39, -190, + -190, -190, -190, -190, -61, 30, 34, -2, -189, -189, + -95, -99, -77, -42, -43, -43, -42, -43, 42, 42, + 42, 47, 42, 47, 42, -50, -125, -190, -56, 50, + 127, 51, -189, -127, -57, 12, -41, -57, -101, -102, + 238, 235, 241, 57, 59, 55, -168, 82, 54, 57, + 28, -160, -160, -161, 57, -161, 28, -144, 29, 68, + -150, 213, 60, -147, -147, -148, 30, -148, -148, -148, + -156, 59, -156, 60, 60, 52, -119, -131, -130, -183, + 131, 137, 138, 133, 57, 124, 28, 130, 132, 151, + 129, -183, -114, -115, 126, 22, 124, 28, 151, -182, + 53, 157, 157, 126, -131, -107, 59, -39, 39, 112, + -53, -40, 11, 99, -120, -37, -35, 73, -63, -63, + -190, -38, -135, 108, 184, 145, 182, 178, 198, 189, + 211, 180, 212, -132, -135, -63, -63, -63, -63, -120, + -63, -63, -63, -63, 259, -84, 81, -39, 79, -94, + 52, -95, -72, -74, -73, -189, -2, -90, -119, -93, + -119, -57, 55, 82, -46, -45, 52, 53, -47, 52, + -45, 42, 42, 124, 124, 124, -93, -84, -39, -57, + 235, 239, 240, -167, -168, -171, -170, -119, -174, -161, + -161, 54, -146, 52, 59, 60, 61, 68, 242, 67, + 56, -148, -148, 57, 108, 56, 55, 56, 55, 56, + 55, -53, -130, -130, -53, -130, -119, -180, 262, -181, + 57, -119, -119, -53, -110, -57, -41, -190, -63, -190, + -143, -143, -143, -152, -143, 172, -143, 172, -190, -190, + -190, 55, 19, -190, 55, 19, -190, 55, 19, -190, + 55, 19, -189, -34, 257, -39, 27, -94, 55, -190, + -190, -190, 55, 112, -190, 55, -84, -99, -39, -39, + 54, -39, -189, -189, -189, -190, -88, 56, 55, -143, + -91, -119, -154, 209, 9, 54, -147, 59, -147, 60, + 60, -131, 26, -179, -178, -120, 54, -82, 13, -147, + 57, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -190, 59, 28, -74, 34, -2, -189, -119, -119, -119, + -88, -91, -91, -91, -91, -128, -173, -172, 53, 134, + 66, -170, 56, 55, -155, 130, 28, 129, 242, 56, + -148, -148, 56, 56, -189, 55, 82, -91, -83, 14, + 16, -190, -190, -190, -190, -190, -190, -190, -190, -33, + 92, 262, 9, -72, -2, 112, 56, -190, -190, -190, + -56, -172, 57, -162, 82, 59, 140, -119, -145, 66, + 28, 28, 54, -175, -176, 151, -178, -168, 56, -39, + -71, -190, 260, 49, 263, -95, -190, -119, 60, -53, + 59, 56, -190, 55, -119, -182, 39, 261, 264, 54, + -176, 34, -180, 39, -91, 153, 262, 56, 154, 263, + -185, -186, 52, -189, 264, -186, 52, 10, 9, -63, + 150, -184, 141, 136, 139, 30, -184, -190, -190, 135, + 29, 68, } var yyDef = [...]int{ 23, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 554, 0, 315, 315, 315, 315, 315, 315, - 0, 625, 608, 0, 0, 0, 0, -2, 302, 303, - 0, 305, 306, 846, 846, 846, 846, 846, 0, 0, - 846, 0, 35, 36, 844, 1, 3, 562, 0, 0, - 319, 322, 317, 0, 608, 608, 0, 0, 62, 63, - 0, 0, 0, 830, 0, 606, 606, 606, 626, 627, - 630, 631, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, - 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, - 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, - 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, - 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, - 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, - 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, - 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, - 829, 831, 832, 833, 834, 835, 836, 837, 838, 839, - 840, 841, 842, 843, 0, 0, 0, 609, 0, 604, - 0, 604, 604, 604, 0, 253, 387, 634, 635, 830, - 0, 0, 0, 847, 0, 847, 265, 847, 847, 268, - 847, 0, 847, 0, 275, 277, 278, 279, 280, 0, - 284, 847, 299, 300, 289, 301, 304, 307, 308, 309, - 310, 311, 846, 846, 314, 29, 566, 0, 0, 554, - 31, 0, 315, 320, 321, 325, 323, 324, 316, 0, - 333, 337, 0, 395, 0, 400, 402, -2, -2, 0, - 437, 438, 439, 440, 441, 0, 0, 0, 0, 0, - 0, 0, 0, 465, 466, 467, 468, 539, 540, 541, - 542, 543, 544, 545, 546, 404, 405, 536, 586, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 527, 0, - 501, 501, 501, 501, 501, 501, 501, 501, 0, 0, - 0, 0, 0, 0, 0, 0, 43, 47, 0, 821, - 590, -2, -2, 0, 0, 632, 633, -2, 740, -2, - 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, - 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, - 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, - 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, - 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, - 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, - 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 0, 0, 81, 0, 79, 0, 847, - 0, 0, 0, 0, 0, 0, 847, 0, 0, 0, - 244, 0, 0, 0, 0, 0, 0, 0, 252, 0, - 254, 847, 847, 257, 848, 849, 847, 847, 847, 847, - 847, 847, 264, 266, 267, 269, 847, 847, 271, 0, - 292, 290, 291, 286, 287, 0, 281, 282, 285, 312, - 313, 30, 845, 24, 0, 0, 563, 0, 555, 556, - 559, 562, 29, 322, 0, 327, 326, 318, 0, 334, - 0, 0, 0, 338, 0, 340, 341, 0, 398, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 422, 423, - 424, 425, 426, 427, 428, 401, 0, 415, 0, 0, - 0, 457, 458, 459, 460, 461, 462, 463, 0, 329, - 29, 0, 435, 0, 0, 0, 0, 0, 0, 0, - 0, 325, 0, 528, 0, 493, 0, 494, 495, 496, - 497, 498, 499, 500, 0, 329, 0, 0, 45, 0, - 386, 0, 344, 346, 347, 348, -2, 0, 370, -2, - 0, 0, 0, 41, 42, 0, 48, 821, 50, 51, - 0, 0, 0, 164, 599, 600, 601, 597, 208, 0, - 0, 145, 141, 87, 88, 89, 134, 91, 134, 134, - 134, 134, 161, 161, 161, 161, 117, 118, 119, 120, - 121, 0, 0, 104, 134, 134, 134, 108, 124, 125, - 126, 127, 128, 129, 130, 131, 92, 93, 94, 95, - 96, 97, 98, 136, 136, 136, 138, 138, 628, 65, - 0, 847, 0, 847, 77, 0, 222, 0, 0, 0, - 0, 0, 247, 605, 0, 847, 250, 251, 388, 636, - 637, 255, 256, 258, 259, 260, 261, 262, 263, 270, - 274, 0, 295, 0, 0, 276, 0, 567, 0, 0, - 0, 0, 0, 558, 560, 561, 566, 32, 325, 0, - 547, 0, 0, 0, 328, 27, 396, 397, 399, 416, - 0, 418, 420, 339, 335, 0, 537, -2, 406, 407, - 431, 432, 433, 0, 0, 0, 0, 429, 411, 0, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 456, 512, 513, 0, 454, 455, 464, 0, - 0, 330, 331, 434, 0, 585, 29, 0, 0, 0, - 0, 0, 0, 536, 0, 0, 0, 0, 0, 534, - 531, 0, 0, 502, 0, 0, 0, 0, 0, 0, - 385, 0, 0, 0, 0, 0, 0, 375, 0, 0, - 378, 0, 0, 0, 0, 369, 0, 0, 389, 790, - 371, 0, 373, 374, 393, 0, 393, 44, 591, 49, - 0, 0, 54, 55, 592, 593, 594, 595, 0, 78, - 209, 211, 214, 215, 216, 82, 83, 84, 0, 0, - 196, 0, 0, 190, 190, 0, 188, 189, 80, 148, - 146, 0, 143, 142, 90, 0, 161, 161, 111, 112, - 164, 0, 164, 164, 164, 0, 0, 105, 106, 107, - 99, 0, 100, 101, 102, 0, 103, 0, 0, 847, - 67, 607, 68, 846, 0, 0, 620, 223, 610, 611, - 612, 613, 614, 615, 616, 617, 618, 619, 0, 69, - 225, 0, 0, 0, 245, 847, 249, 292, 273, 0, - 0, 293, 294, 283, 0, 564, 565, 0, 557, 25, - 0, 602, 603, 548, 549, 342, 417, 419, 421, 0, - 329, 408, 429, 412, 0, 409, 0, 0, 403, 469, - 0, 0, 436, -2, 472, 473, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 554, - 0, 532, 0, 0, 492, 503, 504, 505, 506, 579, - 0, 0, -2, 0, 0, 393, 587, 0, 345, 364, - 366, 0, 361, 376, 377, 379, 0, 381, 0, 383, - 384, 349, 351, 352, 0, 0, 0, 0, 372, 554, - 0, 393, 40, 52, 53, 0, 0, 59, 165, 166, - 0, 212, 0, 0, 0, 183, 190, 190, 186, 191, - 187, 0, 156, 0, 147, 86, 144, 0, 164, 164, - 113, 0, 114, 115, 116, 0, 132, 0, 0, 0, - 0, 629, 66, 217, 846, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 846, 0, 846, 621, - 622, 623, 624, 0, 72, 0, 0, 0, 0, 248, - 295, 296, 297, 568, 0, 26, 393, 0, 336, 538, - 0, 410, 0, 430, 413, 470, 332, 0, 134, 134, - 517, 134, 138, 520, 134, 522, 134, 525, 0, 0, - 0, 0, 0, 0, 537, 0, 0, 0, 0, 0, - 529, 491, 535, 0, 33, 0, 579, 569, 581, 583, - 0, 29, 0, 575, 0, 356, 554, 0, 0, 358, - 365, 0, 0, 359, 0, 360, 380, 382, 0, 0, - 0, 0, 562, 394, 39, 56, 57, 58, 210, 213, - 0, 192, 134, 195, 184, 185, 0, 159, 0, 149, - 150, 151, 152, 153, 155, 135, 109, 110, 162, 163, - 161, 0, 161, 0, 139, 0, 847, 218, 219, 220, - 221, 0, 224, 0, 70, 71, 0, 227, 246, 272, - 550, 343, 471, 414, 474, 514, 161, 518, 519, 521, - 523, 524, 526, 476, 475, 477, 0, 0, 483, 0, - 0, 480, 0, 0, 486, 0, 0, 0, 0, 0, - 533, 0, 34, 0, 584, -2, 0, 0, 0, 46, - 0, 562, 588, 589, 362, 0, 367, 0, 0, 0, - 370, 38, 175, 0, 194, 0, 354, 167, 160, 0, - 0, 164, 133, 164, 0, 0, 64, 0, 73, 74, - 0, 0, 552, 0, 515, 516, 0, 0, 0, 0, - 0, 0, 0, 0, 507, 490, 530, 0, 582, 0, - -2, 0, 577, 576, 357, 37, 0, 0, 0, 0, - 389, 174, 176, 0, 181, 0, 193, 0, 0, 172, - 0, 169, 171, 157, 154, 122, 123, 137, 140, 0, - 0, 0, 0, 28, 0, 0, 478, 479, 484, 485, - 481, 482, 487, 488, 0, 0, 0, 0, 572, 29, - 0, 363, 390, 391, 392, 353, 177, 178, 0, 182, - 180, 0, 355, 85, 0, 168, 170, 0, 0, 240, - 0, 75, 76, 69, 553, 551, 489, 0, 0, 0, - 580, -2, 578, 179, 0, 173, 158, 239, 0, 0, - 72, 508, 0, 511, 0, 241, 0, 226, 509, 0, - 0, 0, 197, 0, 0, 198, 199, 0, 0, 510, - 200, 0, 0, 0, 0, 0, 201, 203, 204, 0, - 0, 202, 242, 243, 205, 206, 207, + 21, 22, 556, 0, 317, 317, 317, 317, 317, 317, + 0, 627, 610, 0, 0, 0, 0, -2, 304, 305, + 0, 307, 308, 848, 848, 848, 848, 848, 0, 0, + 848, 0, 35, 36, 846, 1, 3, 564, 0, 0, + 321, 324, 319, 0, 610, 610, 0, 0, 62, 63, + 0, 0, 0, 832, 0, 608, 608, 608, 628, 629, + 632, 633, 733, 734, 735, 736, 737, 738, 739, 740, + 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, + 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, + 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, + 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, + 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, + 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, + 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, + 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, + 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, + 831, 833, 834, 835, 836, 837, 838, 839, 840, 841, + 842, 843, 844, 845, 0, 0, 0, 611, 0, 606, + 0, 606, 606, 606, 0, 255, 389, 636, 637, 832, + 0, 0, 0, 849, 0, 849, 267, 849, 849, 270, + 849, 0, 849, 0, 277, 279, 280, 281, 282, 0, + 286, 849, 301, 302, 291, 303, 306, 309, 310, 311, + 312, 313, 848, 848, 316, 29, 568, 0, 0, 556, + 31, 0, 317, 322, 323, 327, 325, 326, 318, 0, + 335, 339, 0, 397, 0, 402, 404, -2, -2, 0, + 439, 440, 441, 442, 443, 0, 0, 0, 0, 0, + 0, 0, 0, 467, 468, 469, 470, 541, 542, 543, + 544, 545, 546, 547, 548, 406, 407, 538, 588, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 529, 0, + 503, 503, 503, 503, 503, 503, 503, 503, 0, 0, + 0, 0, 0, 0, 0, 0, 43, 47, 0, 823, + 592, -2, -2, 0, 0, 634, 635, -2, 742, -2, + 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, + 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, + 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, + 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, + 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, + 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, + 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, + 730, 731, 732, 0, 0, 81, 0, 79, 0, 849, + 0, 0, 0, 0, 0, 0, 849, 0, 0, 0, + 0, 246, 0, 0, 0, 0, 0, 0, 0, 254, + 0, 256, 849, 849, 259, 850, 851, 849, 849, 849, + 849, 849, 849, 266, 268, 269, 271, 849, 849, 273, + 0, 294, 292, 293, 288, 289, 0, 283, 284, 287, + 314, 315, 30, 847, 24, 0, 0, 565, 0, 557, + 558, 561, 564, 29, 324, 0, 329, 328, 320, 0, + 336, 0, 0, 0, 340, 0, 342, 343, 0, 400, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 403, 0, 417, 0, + 0, 0, 459, 460, 461, 462, 463, 464, 465, 0, + 331, 29, 0, 437, 0, 0, 0, 0, 0, 0, + 0, 0, 327, 0, 530, 0, 495, 0, 496, 497, + 498, 499, 500, 501, 502, 0, 331, 0, 0, 45, + 0, 388, 0, 346, 348, 349, 350, -2, 0, 372, + -2, 0, 0, 0, 41, 42, 0, 48, 823, 50, + 51, 0, 0, 0, 164, 601, 602, 603, 599, 208, + 0, 0, 145, 141, 87, 88, 89, 134, 91, 134, + 134, 134, 134, 161, 161, 161, 161, 117, 118, 119, + 120, 121, 0, 0, 104, 134, 134, 134, 108, 124, + 125, 126, 127, 128, 129, 130, 131, 92, 93, 94, + 95, 96, 97, 98, 136, 136, 136, 138, 138, 630, + 65, 0, 849, 0, 849, 77, 0, 222, 0, 0, + 0, 0, 0, 0, 0, 249, 607, 0, 849, 252, + 253, 390, 638, 639, 257, 258, 260, 261, 262, 263, + 264, 265, 272, 276, 0, 297, 0, 0, 278, 0, + 569, 0, 0, 0, 0, 0, 560, 562, 563, 568, + 32, 327, 0, 549, 0, 0, 0, 330, 27, 398, + 399, 401, 418, 0, 420, 422, 341, 337, 0, 539, + -2, 408, 409, 433, 434, 435, 0, 0, 0, 0, + 431, 413, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 458, 514, 515, 0, 456, + 457, 466, 0, 0, 332, 333, 436, 0, 587, 29, + 0, 0, 0, 0, 0, 0, 538, 0, 0, 0, + 0, 0, 536, 533, 0, 0, 504, 0, 0, 0, + 0, 0, 0, 387, 0, 0, 0, 0, 0, 0, + 377, 0, 0, 380, 0, 0, 0, 0, 371, 0, + 0, 391, 792, 373, 0, 375, 376, 395, 0, 395, + 44, 593, 49, 0, 0, 54, 55, 594, 595, 596, + 597, 0, 78, 209, 211, 214, 215, 216, 82, 83, + 84, 0, 0, 196, 0, 0, 190, 190, 0, 188, + 189, 80, 148, 146, 0, 143, 142, 90, 0, 161, + 161, 111, 112, 164, 0, 164, 164, 164, 0, 0, + 105, 106, 107, 99, 0, 100, 101, 102, 0, 103, + 0, 0, 849, 67, 609, 68, 848, 0, 0, 622, + 223, 612, 613, 614, 615, 616, 617, 618, 619, 620, + 621, 0, 69, 225, 227, 226, 0, 0, 0, 247, + 849, 251, 294, 275, 0, 0, 295, 296, 285, 0, + 566, 567, 0, 559, 25, 0, 604, 605, 550, 551, + 344, 419, 421, 423, 0, 331, 410, 431, 414, 0, + 411, 0, 0, 405, 471, 0, 0, 438, -2, 474, + 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 556, 0, 534, 0, 0, 494, + 505, 506, 507, 508, 581, 0, 0, -2, 0, 0, + 395, 589, 0, 347, 366, 368, 0, 363, 378, 379, + 381, 0, 383, 0, 385, 386, 351, 353, 354, 0, + 0, 0, 0, 374, 556, 0, 395, 40, 52, 53, + 0, 0, 59, 165, 166, 0, 212, 0, 0, 0, + 183, 190, 190, 186, 191, 187, 0, 156, 0, 147, + 86, 144, 0, 164, 164, 113, 0, 114, 115, 116, + 0, 132, 0, 0, 0, 0, 631, 66, 217, 848, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 848, 0, 848, 623, 624, 625, 626, 0, 72, + 0, 0, 0, 0, 250, 297, 298, 299, 570, 0, + 26, 395, 0, 338, 540, 0, 412, 0, 432, 415, + 472, 334, 0, 134, 134, 519, 134, 138, 522, 134, + 524, 134, 527, 0, 0, 0, 0, 0, 0, 539, + 0, 0, 0, 0, 0, 531, 493, 537, 0, 33, + 0, 581, 571, 583, 585, 0, 29, 0, 577, 0, + 358, 556, 0, 0, 360, 367, 0, 0, 361, 0, + 362, 382, 384, 0, 0, 0, 0, 564, 396, 39, + 56, 57, 58, 210, 213, 0, 192, 134, 195, 184, + 185, 0, 159, 0, 149, 150, 151, 152, 153, 155, + 135, 109, 110, 162, 163, 161, 0, 161, 0, 139, + 0, 849, 218, 219, 220, 221, 0, 224, 0, 70, + 71, 0, 229, 248, 274, 552, 345, 473, 416, 476, + 516, 161, 520, 521, 523, 525, 526, 528, 478, 477, + 479, 0, 0, 485, 0, 0, 482, 0, 0, 488, + 0, 0, 0, 0, 0, 535, 0, 34, 0, 586, + -2, 0, 0, 0, 46, 0, 564, 590, 591, 364, + 0, 369, 0, 0, 0, 372, 38, 175, 0, 194, + 0, 356, 167, 160, 0, 0, 164, 133, 164, 0, + 0, 64, 0, 73, 74, 0, 0, 554, 0, 517, + 518, 0, 0, 0, 0, 0, 0, 0, 0, 509, + 492, 532, 0, 584, 0, -2, 0, 579, 578, 359, + 37, 0, 0, 0, 0, 391, 174, 176, 0, 181, + 0, 193, 0, 0, 172, 0, 169, 171, 157, 154, + 122, 123, 137, 140, 0, 0, 0, 0, 28, 0, + 0, 480, 481, 486, 487, 483, 484, 489, 490, 0, + 0, 0, 0, 574, 29, 0, 365, 392, 393, 394, + 355, 177, 178, 0, 182, 180, 0, 357, 85, 0, + 168, 170, 0, 0, 242, 0, 75, 76, 69, 555, + 553, 491, 0, 0, 0, 582, -2, 580, 179, 0, + 173, 158, 241, 0, 0, 72, 510, 0, 513, 0, + 243, 0, 228, 511, 0, 0, 0, 197, 0, 0, + 198, 199, 0, 0, 512, 200, 0, 0, 0, 0, + 0, 201, 203, 204, 0, 0, 202, 244, 245, 205, + 206, 207, } var yyTok1 = [...]int{ @@ -4221,8 +4234,20 @@ yydefault: }} } case 226: - yyDollar = yyS[yypt-12 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:1328 + { + yyVAL.statement = &DDL{Action: AddVschemaTableStr, Table: yyDollar[5].tableName} + } + case 227: + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:1332 + { + yyVAL.statement = &DDL{Action: DropVschemaTableStr, Table: yyDollar[5].tableName} + } + case 228: + yyDollar = yyS[yypt-12 : yypt+1] +//line sql.y:1336 { yyVAL.statement = &DDL{ Action: AddColVindexStr, @@ -4235,9 +4260,9 @@ yydefault: VindexCols: yyDollar[9].columns, } } - case 227: + case 229: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1341 +//line sql.y:1349 { yyVAL.statement = &DDL{ Action: DropColVindexStr, @@ -4247,59 +4272,59 @@ yydefault: }, } } - case 239: + case 241: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1366 +//line sql.y:1374 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeStr, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } - case 240: + case 242: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1372 +//line sql.y:1380 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 241: + case 243: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1376 +//line sql.y:1384 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 242: + case 244: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1382 +//line sql.y:1390 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 243: + case 245: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1386 +//line sql.y:1394 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 244: + case 246: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1392 +//line sql.y:1400 { yyVAL.statement = yyDollar[3].ddl } - case 245: + case 247: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1398 +//line sql.y:1406 { yyVAL.ddl = &DDL{Action: RenameStr, FromTables: TableNames{yyDollar[1].tableName}, ToTables: TableNames{yyDollar[3].tableName}} } - case 246: + case 248: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1402 +//line sql.y:1410 { yyVAL.ddl = yyDollar[1].ddl yyVAL.ddl.FromTables = append(yyVAL.ddl.FromTables, yyDollar[3].tableName) yyVAL.ddl.ToTables = append(yyVAL.ddl.ToTables, yyDollar[5].tableName) } - case 247: + case 249: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1410 +//line sql.y:1418 { var exists bool if yyDollar[3].byt != 0 { @@ -4307,16 +4332,16 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, FromTables: yyDollar[4].tableNames, IfExists: exists} } - case 248: + case 250: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1418 +//line sql.y:1426 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName} } - case 249: + case 251: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1423 +//line sql.y:1431 { var exists bool if yyDollar[3].byt != 0 { @@ -4324,69 +4349,57 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, FromTables: TableNames{yyDollar[4].tableName.ToViewName()}, IfExists: exists} } - case 250: + case 252: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1431 +//line sql.y:1439 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 251: + case 253: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1435 +//line sql.y:1443 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 252: + case 254: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1441 +//line sql.y:1449 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[3].tableName} } - case 253: + case 255: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1445 +//line sql.y:1453 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[2].tableName} } - case 254: + case 256: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1450 +//line sql.y:1458 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName} } - case 255: + case 257: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1456 +//line sql.y:1464 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 256: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1461 - { - yyVAL.statement = &Show{Type: CharsetStr} - } - case 257: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1465 - { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} - } case 258: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1469 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} + yyVAL.statement = &Show{Type: CharsetStr} } case 259: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1474 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1473 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 260: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1478 +//line sql.y:1477 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } @@ -4409,16 +4422,16 @@ yydefault: yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 264: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1494 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 265: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1498 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 266: yyDollar = yyS[yypt-3 : yypt+1] @@ -4427,13 +4440,13 @@ yydefault: yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 267: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1506 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 268: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1510 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} @@ -4445,10 +4458,10 @@ yydefault: yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 270: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1518 { - yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 271: yyDollar = yyS[yypt-3 : yypt+1] @@ -4457,15 +4470,27 @@ yydefault: yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 272: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1526 + { + yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} + } + case 273: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1530 + { + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + } + case 274: + yyDollar = yyS[yypt-7 : yypt+1] +//line sql.y:1534 { showTablesOpt := &ShowTablesOpt{Full: yyDollar[2].str, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName} } - case 273: + case 275: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1531 +//line sql.y:1539 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -4475,650 +4500,650 @@ yydefault: yyVAL.statement = &Show{Type: yyDollar[3].str, ShowTablesOpt: showTablesOpt} } } - case 274: + case 276: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1541 +//line sql.y:1549 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 275: + case 277: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1545 +//line sql.y:1553 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 276: + case 278: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1549 +//line sql.y:1557 { // Cannot dereference $4 directly, or else the parser stackcannot be pooled. See yyParsePooled showCollationFilterOpt := yyDollar[4].expr yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: &showCollationFilterOpt} } - case 277: + case 279: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1555 +//line sql.y:1563 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 278: + case 280: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1559 +//line sql.y:1567 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 279: + case 281: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1563 +//line sql.y:1571 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 280: + case 282: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1567 +//line sql.y:1575 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 281: + case 283: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1571 +//line sql.y:1579 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 282: + case 284: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1575 +//line sql.y:1583 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 283: + case 285: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1579 +//line sql.y:1587 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName} } - case 284: + case 286: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1583 +//line sql.y:1591 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 285: + case 287: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1593 +//line sql.y:1601 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 286: + case 288: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1599 +//line sql.y:1607 { yyVAL.str = string(yyDollar[1].bytes) } - case 287: + case 289: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1603 +//line sql.y:1611 { yyVAL.str = string(yyDollar[1].bytes) } - case 288: + case 290: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1609 +//line sql.y:1617 { yyVAL.str = "" } - case 289: + case 291: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1613 +//line sql.y:1621 { yyVAL.str = "full " } - case 290: + case 292: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1619 +//line sql.y:1627 { yyVAL.str = string(yyDollar[1].bytes) } - case 291: + case 293: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1623 +//line sql.y:1631 { yyVAL.str = string(yyDollar[1].bytes) } - case 292: + case 294: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1629 +//line sql.y:1637 { yyVAL.str = "" } - case 293: + case 295: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1633 +//line sql.y:1641 { yyVAL.str = yyDollar[2].tableIdent.v } - case 294: + case 296: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1637 +//line sql.y:1645 { yyVAL.str = yyDollar[2].tableIdent.v } - case 295: + case 297: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1643 +//line sql.y:1651 { yyVAL.showFilter = nil } - case 296: + case 298: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1647 +//line sql.y:1655 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 297: + case 299: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1651 +//line sql.y:1659 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 298: + case 300: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1657 +//line sql.y:1665 { yyVAL.str = "" } - case 299: + case 301: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1661 +//line sql.y:1669 { yyVAL.str = SessionStr } - case 300: + case 302: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1665 +//line sql.y:1673 { yyVAL.str = GlobalStr } - case 301: + case 303: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1671 +//line sql.y:1679 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 302: + case 304: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1675 +//line sql.y:1683 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 303: + case 305: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1681 +//line sql.y:1689 { yyVAL.statement = &Begin{} } - case 304: + case 306: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1685 +//line sql.y:1693 { yyVAL.statement = &Begin{} } - case 305: + case 307: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1691 +//line sql.y:1699 { yyVAL.statement = &Commit{} } - case 306: + case 308: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1697 +//line sql.y:1705 { yyVAL.statement = &Rollback{} } - case 307: + case 309: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1703 +//line sql.y:1711 { yyVAL.statement = &OtherRead{} } - case 308: + case 310: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1707 +//line sql.y:1715 { yyVAL.statement = &OtherRead{} } - case 309: + case 311: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1711 +//line sql.y:1719 { yyVAL.statement = &OtherRead{} } - case 310: + case 312: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1715 +//line sql.y:1723 { yyVAL.statement = &OtherAdmin{} } - case 311: + case 313: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1719 +//line sql.y:1727 { yyVAL.statement = &OtherAdmin{} } - case 312: + case 314: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1723 +//line sql.y:1731 { yyVAL.statement = &OtherAdmin{} } - case 313: + case 315: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1727 +//line sql.y:1735 { yyVAL.statement = &OtherAdmin{} } - case 314: + case 316: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1733 +//line sql.y:1741 { yyVAL.statement = &DDL{Action: FlushStr} } - case 315: + case 317: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1737 +//line sql.y:1745 { setAllowComments(yylex, true) } - case 316: + case 318: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1741 +//line sql.y:1749 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 317: + case 319: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1747 +//line sql.y:1755 { yyVAL.bytes2 = nil } - case 318: + case 320: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1751 +//line sql.y:1759 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 319: + case 321: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1757 +//line sql.y:1765 { yyVAL.str = UnionStr } - case 320: + case 322: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1761 +//line sql.y:1769 { yyVAL.str = UnionAllStr } - case 321: + case 323: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1765 +//line sql.y:1773 { yyVAL.str = UnionDistinctStr } - case 322: + case 324: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1770 +//line sql.y:1778 { yyVAL.str = "" } - case 323: + case 325: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1774 +//line sql.y:1782 { yyVAL.str = SQLNoCacheStr } - case 324: + case 326: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1778 +//line sql.y:1786 { yyVAL.str = SQLCacheStr } - case 325: + case 327: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1783 +//line sql.y:1791 { yyVAL.str = "" } - case 326: + case 328: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1787 +//line sql.y:1795 { yyVAL.str = DistinctStr } - case 327: + case 329: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1792 +//line sql.y:1800 { yyVAL.str = "" } - case 328: + case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1796 +//line sql.y:1804 { yyVAL.str = StraightJoinHint } - case 329: + case 331: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1801 +//line sql.y:1809 { yyVAL.selectExprs = nil } - case 330: + case 332: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1805 +//line sql.y:1813 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 331: + case 333: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1811 +//line sql.y:1819 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 332: + case 334: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1815 +//line sql.y:1823 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 333: + case 335: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1821 +//line sql.y:1829 { yyVAL.selectExpr = &StarExpr{} } - case 334: + case 336: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1825 +//line sql.y:1833 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 335: + case 337: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1829 +//line sql.y:1837 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 336: + case 338: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1833 +//line sql.y:1841 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 337: + case 339: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1838 +//line sql.y:1846 { yyVAL.colIdent = ColIdent{} } - case 338: + case 340: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1842 +//line sql.y:1850 { yyVAL.colIdent = yyDollar[1].colIdent } - case 339: + case 341: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1846 +//line sql.y:1854 { yyVAL.colIdent = yyDollar[2].colIdent } - case 341: + case 343: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1853 +//line sql.y:1861 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 342: + case 344: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1858 +//line sql.y:1866 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 343: + case 345: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1862 +//line sql.y:1870 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 344: + case 346: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1868 +//line sql.y:1876 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 345: + case 347: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1872 +//line sql.y:1880 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 348: + case 350: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1882 +//line sql.y:1890 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 349: + case 351: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1886 +//line sql.y:1894 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 350: + case 352: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1890 +//line sql.y:1898 { // missed alias for subquery yylex.Error("Every derived table must have its own alias") return 1 } - case 351: + case 353: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1896 +//line sql.y:1904 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 352: + case 354: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1902 +//line sql.y:1910 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 353: + case 355: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1906 +//line sql.y:1914 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 354: + case 356: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1912 +//line sql.y:1920 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 355: + case 357: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1916 +//line sql.y:1924 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 356: + case 358: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1922 +//line sql.y:1930 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 357: + case 359: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1926 +//line sql.y:1934 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 358: + case 360: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1939 +//line sql.y:1947 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 359: + case 361: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1943 +//line sql.y:1951 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 360: + case 362: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1947 +//line sql.y:1955 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 361: + case 363: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1951 +//line sql.y:1959 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 362: + case 364: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1957 +//line sql.y:1965 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 363: + case 365: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1959 +//line sql.y:1967 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 364: + case 366: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1963 +//line sql.y:1971 { yyVAL.joinCondition = JoinCondition{} } - case 365: + case 367: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1965 +//line sql.y:1973 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 366: + case 368: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1969 +//line sql.y:1977 { yyVAL.joinCondition = JoinCondition{} } - case 367: + case 369: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1971 +//line sql.y:1979 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 368: + case 370: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1974 +//line sql.y:1982 { yyVAL.empty = struct{}{} } - case 369: + case 371: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1976 +//line sql.y:1984 { yyVAL.empty = struct{}{} } - case 370: + case 372: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1979 +//line sql.y:1987 { yyVAL.tableIdent = NewTableIdent("") } - case 371: + case 373: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1983 +//line sql.y:1991 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 372: + case 374: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1987 +//line sql.y:1995 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 374: + case 376: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1994 +//line sql.y:2002 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 375: + case 377: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2000 +//line sql.y:2008 { yyVAL.str = JoinStr } - case 376: + case 378: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2004 +//line sql.y:2012 { yyVAL.str = JoinStr } - case 377: + case 379: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2008 +//line sql.y:2016 { yyVAL.str = JoinStr } - case 378: + case 380: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2014 +//line sql.y:2022 { yyVAL.str = StraightJoinStr } - case 379: + case 381: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2020 +//line sql.y:2028 { yyVAL.str = LeftJoinStr } - case 380: + case 382: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2024 +//line sql.y:2032 { yyVAL.str = LeftJoinStr } - case 381: + case 383: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2028 +//line sql.y:2036 { yyVAL.str = RightJoinStr } - case 382: + case 384: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2032 +//line sql.y:2040 { yyVAL.str = RightJoinStr } - case 383: + case 385: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2038 +//line sql.y:2046 { yyVAL.str = NaturalJoinStr } - case 384: + case 386: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2042 +//line sql.y:2050 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -5126,459 +5151,459 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 385: + case 387: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2052 +//line sql.y:2060 { yyVAL.tableName = yyDollar[2].tableName } - case 386: + case 388: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2056 +//line sql.y:2064 { yyVAL.tableName = yyDollar[1].tableName } - case 387: + case 389: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2062 +//line sql.y:2070 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 388: + case 390: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2066 +//line sql.y:2074 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 389: + case 391: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2071 +//line sql.y:2079 { yyVAL.indexHints = nil } - case 390: + case 392: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2075 +//line sql.y:2083 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 391: + case 393: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2079 +//line sql.y:2087 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 392: + case 394: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2083 +//line sql.y:2091 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 393: + case 395: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2088 +//line sql.y:2096 { yyVAL.expr = nil } - case 394: + case 396: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2092 +//line sql.y:2100 { yyVAL.expr = yyDollar[2].expr } - case 395: + case 397: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2098 +//line sql.y:2106 { yyVAL.expr = yyDollar[1].expr } - case 396: + case 398: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2102 +//line sql.y:2110 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 397: + case 399: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2106 +//line sql.y:2114 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 398: + case 400: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2110 +//line sql.y:2118 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 399: + case 401: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2114 +//line sql.y:2122 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 400: + case 402: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2118 +//line sql.y:2126 { yyVAL.expr = yyDollar[1].expr } - case 401: + case 403: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2122 +//line sql.y:2130 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 402: + case 404: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2128 +//line sql.y:2136 { yyVAL.str = "" } - case 403: + case 405: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2132 +//line sql.y:2140 { yyVAL.str = string(yyDollar[2].bytes) } - case 404: + case 406: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2138 +//line sql.y:2146 { yyVAL.boolVal = BoolVal(true) } - case 405: + case 407: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2142 +//line sql.y:2150 { yyVAL.boolVal = BoolVal(false) } - case 406: + case 408: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2148 +//line sql.y:2156 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 407: + case 409: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2152 +//line sql.y:2160 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 408: + case 410: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2156 +//line sql.y:2164 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 409: + case 411: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2160 +//line sql.y:2168 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 410: + case 412: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2164 +//line sql.y:2172 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 411: + case 413: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2168 +//line sql.y:2176 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 412: + case 414: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2172 +//line sql.y:2180 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 413: + case 415: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2176 +//line sql.y:2184 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 414: + case 416: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2180 +//line sql.y:2188 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 415: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2184 - { - yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} - } - case 416: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2190 - { - yyVAL.str = IsNullStr - } case 417: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2194 +//line sql.y:2192 { - yyVAL.str = IsNotNullStr + yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } case 418: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2198 { - yyVAL.str = IsTrueStr + yyVAL.str = IsNullStr } case 419: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2202 { - yyVAL.str = IsNotTrueStr + yyVAL.str = IsNotNullStr } case 420: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2206 { - yyVAL.str = IsFalseStr + yyVAL.str = IsTrueStr } case 421: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2210 { - yyVAL.str = IsNotFalseStr + yyVAL.str = IsNotTrueStr } case 422: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2216 +//line sql.y:2214 { - yyVAL.str = EqualStr + yyVAL.str = IsFalseStr } case 423: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2220 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2218 { - yyVAL.str = LessThanStr + yyVAL.str = IsNotFalseStr } case 424: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2224 { - yyVAL.str = GreaterThanStr + yyVAL.str = EqualStr } case 425: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2228 { - yyVAL.str = LessEqualStr + yyVAL.str = LessThanStr } case 426: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2232 { - yyVAL.str = GreaterEqualStr + yyVAL.str = GreaterThanStr } case 427: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2236 { - yyVAL.str = NotEqualStr + yyVAL.str = LessEqualStr } case 428: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2240 { - yyVAL.str = NullSafeEqualStr + yyVAL.str = GreaterEqualStr } case 429: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2245 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2244 { - yyVAL.expr = nil + yyVAL.str = NotEqualStr } case 430: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2249 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2248 { - yyVAL.expr = yyDollar[2].expr + yyVAL.str = NullSafeEqualStr } case 431: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2255 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:2253 { - yyVAL.colTuple = yyDollar[1].valTuple + yyVAL.expr = nil } case 432: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2259 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2257 { - yyVAL.colTuple = yyDollar[1].subquery + yyVAL.expr = yyDollar[2].expr } case 433: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2263 { - yyVAL.colTuple = ListArg(yyDollar[1].bytes) + yyVAL.colTuple = yyDollar[1].valTuple } case 434: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2269 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2267 { - yyVAL.subquery = &Subquery{yyDollar[2].selStmt} + yyVAL.colTuple = yyDollar[1].subquery } case 435: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2275 +//line sql.y:2271 { - yyVAL.exprs = Exprs{yyDollar[1].expr} + yyVAL.colTuple = ListArg(yyDollar[1].bytes) } case 436: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2279 +//line sql.y:2277 { - yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) + yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 437: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2285 +//line sql.y:2283 { - yyVAL.expr = yyDollar[1].expr + yyVAL.exprs = Exprs{yyDollar[1].expr} } case 438: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2289 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2287 { - yyVAL.expr = yyDollar[1].boolVal + yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } case 439: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2293 { - yyVAL.expr = yyDollar[1].colName + yyVAL.expr = yyDollar[1].expr } case 440: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2297 { - yyVAL.expr = yyDollar[1].expr + yyVAL.expr = yyDollar[1].boolVal } case 441: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2301 { - yyVAL.expr = yyDollar[1].subquery + yyVAL.expr = yyDollar[1].colName } case 442: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2305 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} + yyVAL.expr = yyDollar[1].expr } case 443: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2309 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} + yyVAL.expr = yyDollar[1].subquery } case 444: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2313 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } case 445: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2317 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } case 446: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2321 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } case 447: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2325 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } case 448: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2329 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } case 449: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2333 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } case 450: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2337 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } case 451: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2341 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } case 452: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2345 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } case 453: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2349 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } case 454: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2353 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } case 455: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2357 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } case 456: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2361 { - yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } case 457: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2365 { - yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } case 458: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2369 { - yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} + yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } case 459: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2373 { - yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} + yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } case 460: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2377 + { + yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} + } + case 461: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2381 + { + yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} + } + case 462: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2385 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -5586,9 +5611,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 461: + case 463: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2385 +//line sql.y:2393 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -5602,21 +5627,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 462: + case 464: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2399 +//line sql.y:2407 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 463: + case 465: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2403 +//line sql.y:2411 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 464: + case 466: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2407 +//line sql.y:2415 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -5624,77 +5649,65 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 469: + case 471: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2425 +//line sql.y:2433 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 470: + case 472: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2429 +//line sql.y:2437 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 471: + case 473: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2433 +//line sql.y:2441 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 472: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2443 - { - yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} - } - case 473: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2447 - { - yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} - } case 474: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2451 { - yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} + yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } case 475: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2455 { - yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} + yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } case 476: yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:2459 { - yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} + yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 477: yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:2463 { - yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} + yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 478: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:2467 { - yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} + yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } case 479: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:2471 { - yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} + yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } case 480: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:2475 { - yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} + yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 481: yyDollar = yyS[yypt-8 : yypt+1] @@ -5703,34 +5716,34 @@ yydefault: yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 482: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:2483 { - yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} + yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } case 483: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:2487 { - yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: nil} + yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 484: yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:2491 { - yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} + yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 485: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:2495 { - yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} + yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: nil} } case 486: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:2499 { - yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: nil} + yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 487: yyDollar = yyS[yypt-8 : yypt+1] @@ -5739,352 +5752,364 @@ yydefault: yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 488: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:2507 { - yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} + yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: nil} } case 489: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:2511 { - yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} + yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 490: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:2515 { - yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} + yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 491: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-9 : yypt+1] //line sql.y:2519 { - yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} + yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } case 492: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:2523 { - yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} + yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} } case 493: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2533 + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:2527 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} + yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } case 494: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2537 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2531 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} + yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } case 495: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2541 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } case 496: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2545 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } case 497: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2550 +//line sql.y:2549 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } case 498: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2555 +//line sql.y:2553 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } case 499: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2560 +//line sql.y:2558 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } case 500: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2565 +//line sql.y:2563 + { + yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} + } + case 501: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2568 + { + yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} + } + case 502: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2573 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 503: + case 505: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2579 +//line sql.y:2587 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 504: + case 506: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2583 +//line sql.y:2591 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 505: + case 507: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2587 +//line sql.y:2595 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 506: + case 508: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2591 +//line sql.y:2599 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 507: + case 509: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2597 +//line sql.y:2605 { yyVAL.str = "" } - case 508: + case 510: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2601 +//line sql.y:2609 { yyVAL.str = BooleanModeStr } - case 509: + case 511: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2605 +//line sql.y:2613 { yyVAL.str = NaturalLanguageModeStr } - case 510: + case 512: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2609 +//line sql.y:2617 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 511: + case 513: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2613 +//line sql.y:2621 { yyVAL.str = QueryExpansionStr } - case 512: + case 514: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2619 +//line sql.y:2627 { yyVAL.str = string(yyDollar[1].bytes) } - case 513: + case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2623 +//line sql.y:2631 { yyVAL.str = string(yyDollar[1].bytes) } - case 514: + case 516: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2629 +//line sql.y:2637 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 515: + case 517: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2633 +//line sql.y:2641 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 516: + case 518: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2637 +//line sql.y:2645 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: string(yyDollar[3].bytes)} } - case 517: + case 519: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2641 +//line sql.y:2649 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 518: + case 520: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2645 +//line sql.y:2653 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 519: + case 521: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2649 +//line sql.y:2657 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 520: + case 522: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2655 +//line sql.y:2663 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 521: + case 523: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2659 +//line sql.y:2667 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 522: + case 524: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2663 +//line sql.y:2671 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 523: + case 525: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2667 +//line sql.y:2675 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 524: + case 526: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2671 +//line sql.y:2679 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 525: + case 527: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2675 +//line sql.y:2683 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 526: + case 528: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2679 +//line sql.y:2687 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 527: + case 529: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2684 +//line sql.y:2692 { yyVAL.expr = nil } - case 528: + case 530: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2688 +//line sql.y:2696 { yyVAL.expr = yyDollar[1].expr } - case 529: + case 531: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2693 +//line sql.y:2701 { yyVAL.str = string("") } - case 530: + case 532: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2697 +//line sql.y:2705 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 531: + case 533: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2703 +//line sql.y:2711 { yyVAL.whens = []*When{yyDollar[1].when} } - case 532: + case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2707 +//line sql.y:2715 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 533: + case 535: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2713 +//line sql.y:2721 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 534: + case 536: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2718 +//line sql.y:2726 { yyVAL.expr = nil } - case 535: + case 537: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2722 +//line sql.y:2730 { yyVAL.expr = yyDollar[2].expr } - case 536: + case 538: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2728 +//line sql.y:2736 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 537: + case 539: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2732 +//line sql.y:2740 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 538: + case 540: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2736 +//line sql.y:2744 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 539: + case 541: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2742 +//line sql.y:2750 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 540: + case 542: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2746 +//line sql.y:2754 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 541: + case 543: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2750 +//line sql.y:2758 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 542: + case 544: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2754 +//line sql.y:2762 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 543: + case 545: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2758 +//line sql.y:2766 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 544: + case 546: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2762 +//line sql.y:2770 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 545: + case 547: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2766 +//line sql.y:2774 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 546: + case 548: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2770 +//line sql.y:2778 { yyVAL.expr = &NullVal{} } - case 547: + case 549: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2776 +//line sql.y:2784 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -6093,239 +6118,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 548: + case 550: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2785 +//line sql.y:2793 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 549: + case 551: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2789 +//line sql.y:2797 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 550: + case 552: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2794 +//line sql.y:2802 { yyVAL.exprs = nil } - case 551: + case 553: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2798 +//line sql.y:2806 { yyVAL.exprs = yyDollar[3].exprs } - case 552: + case 554: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2803 +//line sql.y:2811 { yyVAL.expr = nil } - case 553: + case 555: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2807 +//line sql.y:2815 { yyVAL.expr = yyDollar[2].expr } - case 554: + case 556: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2812 +//line sql.y:2820 { yyVAL.orderBy = nil } - case 555: + case 557: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2816 +//line sql.y:2824 { yyVAL.orderBy = yyDollar[3].orderBy } - case 556: + case 558: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2822 +//line sql.y:2830 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 557: + case 559: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2826 +//line sql.y:2834 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 558: + case 560: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2832 +//line sql.y:2840 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 559: + case 561: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2837 +//line sql.y:2845 { yyVAL.str = AscScr } - case 560: + case 562: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2841 +//line sql.y:2849 { yyVAL.str = AscScr } - case 561: + case 563: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2845 +//line sql.y:2853 { yyVAL.str = DescScr } - case 562: + case 564: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2850 +//line sql.y:2858 { yyVAL.limit = nil } - case 563: + case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2854 +//line sql.y:2862 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 564: + case 566: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2858 +//line sql.y:2866 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 565: + case 567: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2862 +//line sql.y:2870 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 566: + case 568: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2867 +//line sql.y:2875 { yyVAL.str = "" } - case 567: + case 569: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2871 +//line sql.y:2879 { yyVAL.str = ForUpdateStr } - case 568: + case 570: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2875 +//line sql.y:2883 { yyVAL.str = ShareModeStr } - case 569: + case 571: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2888 +//line sql.y:2896 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 570: + case 572: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2892 +//line sql.y:2900 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 571: + case 573: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2896 +//line sql.y:2904 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 572: + case 574: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2901 +//line sql.y:2909 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 573: + case 575: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2905 +//line sql.y:2913 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 574: + case 576: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2909 +//line sql.y:2917 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 575: + case 577: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2916 +//line sql.y:2924 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 576: + case 578: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2920 +//line sql.y:2928 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 577: + case 579: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2924 +//line sql.y:2932 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 578: + case 580: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2928 +//line sql.y:2936 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 579: + case 581: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2933 +//line sql.y:2941 { yyVAL.updateExprs = nil } - case 580: + case 582: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2937 +//line sql.y:2945 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 581: + case 583: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2943 +//line sql.y:2951 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 582: + case 584: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2947 +//line sql.y:2955 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 583: + case 585: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2953 +//line sql.y:2961 { yyVAL.valTuple = yyDollar[1].valTuple } - case 584: + case 586: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2957 +//line sql.y:2965 { yyVAL.valTuple = ValTuple{} } - case 585: + case 587: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2963 +//line sql.y:2971 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 586: + case 588: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2969 +//line sql.y:2977 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -6333,312 +6358,312 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 587: + case 589: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2979 +//line sql.y:2987 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 588: + case 590: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2983 +//line sql.y:2991 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 589: + case 591: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2989 +//line sql.y:2997 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 590: + case 592: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2995 +//line sql.y:3003 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 591: + case 593: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2999 +//line sql.y:3007 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 592: + case 594: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3005 +//line sql.y:3013 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } - case 593: + case 595: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3009 +//line sql.y:3017 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("off"))} } - case 594: + case 596: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3013 +//line sql.y:3021 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 595: + case 597: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3017 +//line sql.y:3025 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 597: + case 599: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3024 +//line sql.y:3032 { yyVAL.bytes = []byte("charset") } - case 599: + case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3031 +//line sql.y:3039 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 600: + case 602: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3035 +//line sql.y:3043 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 601: + case 603: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3039 +//line sql.y:3047 { yyVAL.expr = &Default{} } - case 604: + case 606: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3048 +//line sql.y:3056 { yyVAL.byt = 0 } - case 605: + case 607: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3050 +//line sql.y:3058 { yyVAL.byt = 1 } - case 606: + case 608: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3053 +//line sql.y:3061 { yyVAL.empty = struct{}{} } - case 607: + case 609: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3055 +//line sql.y:3063 { yyVAL.empty = struct{}{} } - case 608: + case 610: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3058 +//line sql.y:3066 { yyVAL.str = "" } - case 609: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3060 - { - yyVAL.str = IgnoreStr - } - case 610: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3064 - { - yyVAL.empty = struct{}{} - } case 611: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3066 +//line sql.y:3068 { - yyVAL.empty = struct{}{} + yyVAL.str = IgnoreStr } case 612: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3068 +//line sql.y:3072 { yyVAL.empty = struct{}{} } case 613: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3070 +//line sql.y:3074 { yyVAL.empty = struct{}{} } case 614: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3072 +//line sql.y:3076 { yyVAL.empty = struct{}{} } case 615: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3074 +//line sql.y:3078 { yyVAL.empty = struct{}{} } case 616: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3076 +//line sql.y:3080 { yyVAL.empty = struct{}{} } case 617: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3078 +//line sql.y:3082 { yyVAL.empty = struct{}{} } case 618: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3080 +//line sql.y:3084 { yyVAL.empty = struct{}{} } case 619: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3082 +//line sql.y:3086 { yyVAL.empty = struct{}{} } case 620: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3085 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3088 { yyVAL.empty = struct{}{} } case 621: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3087 +//line sql.y:3090 { yyVAL.empty = struct{}{} } case 622: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3089 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3093 { yyVAL.empty = struct{}{} } case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3093 +//line sql.y:3095 { yyVAL.empty = struct{}{} } case 624: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3095 +//line sql.y:3097 { yyVAL.empty = struct{}{} } case 625: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3098 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3101 { yyVAL.empty = struct{}{} } case 626: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3100 +//line sql.y:3103 { yyVAL.empty = struct{}{} } case 627: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3102 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3106 { yyVAL.empty = struct{}{} } case 628: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3108 + { + yyVAL.empty = struct{}{} + } + case 629: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3110 + { + yyVAL.empty = struct{}{} + } + case 630: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3105 +//line sql.y:3113 { yyVAL.colIdent = ColIdent{} } - case 629: + case 631: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3107 +//line sql.y:3115 { yyVAL.colIdent = yyDollar[2].colIdent } - case 630: + case 632: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3111 +//line sql.y:3119 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 631: + case 633: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3115 +//line sql.y:3123 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 633: + case 635: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3122 +//line sql.y:3130 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 634: + case 636: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3128 +//line sql.y:3136 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 635: + case 637: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3132 +//line sql.y:3140 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 637: + case 639: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3139 +//line sql.y:3147 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 844: + case 846: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3371 +//line sql.y:3379 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 845: + case 847: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3380 +//line sql.y:3388 { decNesting(yylex) } - case 846: + case 848: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3385 +//line sql.y:3393 { skipToEnd(yylex) } - case 847: + case 849: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3390 +//line sql.y:3398 { skipToEnd(yylex) } - case 848: + case 850: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3394 +//line sql.y:3402 { skipToEnd(yylex) } - case 849: + case 851: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3398 +//line sql.y:3406 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 8505a02c86e..07dc55ca4c7 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -1324,6 +1324,14 @@ alter_statement: Name: $5, }} } +| ALTER VSCHEMA ADD TABLE table_name + { + $$ = &DDL{Action: AddVschemaTableStr, Table: $5} + } +| ALTER VSCHEMA DROP TABLE table_name + { + $$ = &DDL{Action: DropVschemaTableStr, Table: $5} + } | ALTER VSCHEMA ON table_name ADD VINDEX sql_id '(' column_list ')' vindex_type_opt vindex_params_opt { $$ = &DDL{ diff --git a/go/vt/topotools/vschema_ddl.go b/go/vt/topotools/vschema_ddl.go index 56a28426a9e..ed5d6b1c907 100644 --- a/go/vt/topotools/vschema_ddl.go +++ b/go/vt/topotools/vschema_ddl.go @@ -70,6 +70,30 @@ func ApplyVSchemaDDL(ksName string, ks *vschemapb.Keyspace, ddl *sqlparser.DDL) return ks, nil + case sqlparser.AddVschemaTableStr: + if ks.Sharded { + return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "add vschema table: unsupported on sharded keyspace %s", ksName) + } + + name := ddl.Table.Name.String() + if _, ok := ks.Tables[name]; ok { + return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vschema already contains table %s in keyspace %s", name, ksName) + } + + ks.Tables[name] = &vschemapb.Table{} + + return ks, nil + + case sqlparser.DropVschemaTableStr: + name := ddl.Table.Name.String() + if _, ok := ks.Tables[name]; !ok { + return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vschema does not contain table %s in keyspace %s", name, ksName) + } + + delete(ks.Tables, name) + + return ks, nil + case sqlparser.AddColVindexStr: // Support two cases: // diff --git a/go/vt/vtgate/executor.go b/go/vt/vtgate/executor.go index 88273a303be..38440dc3af8 100644 --- a/go/vt/vtgate/executor.go +++ b/go/vt/vtgate/executor.go @@ -337,7 +337,12 @@ func (e *Executor) handleDDL(ctx context.Context, safeSession *SafeSession, sql execStart := time.Now() logStats.PlanTime = execStart.Sub(logStats.StartTime) switch ddl.Action { - case sqlparser.CreateVindexStr, sqlparser.AddColVindexStr, sqlparser.DropColVindexStr: + case sqlparser.CreateVindexStr, + sqlparser.AddVschemaTableStr, + sqlparser.DropVschemaTableStr, + sqlparser.AddColVindexStr, + sqlparser.DropColVindexStr: + err := e.handleVSchemaDDL(ctx, safeSession, dest, destKeyspace, destTabletType, ddl, logStats) logStats.ExecuteTime = time.Since(execStart) return &sqltypes.Result{}, err diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index 80b1af9e659..008e0976fe2 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -20,6 +20,7 @@ import ( "bytes" "html/template" "reflect" + "sort" "strings" "testing" "time" @@ -1150,6 +1151,28 @@ func waitForVindex(t *testing.T, ks, name string, watch chan *vschemapb.SrvVSche return nil, nil } +func waitForVschemaTables(t *testing.T, ks string, tables []string, executor *Executor) *vschemapb.SrvVSchema { + t.Helper() + + // Wait up to 10ms until the vindex manager gets notified of the update + for i := 0; i < 10; i++ { + vschema := executor.vm.GetCurrentSrvVschema() + gotTables := []string{} + for t := range vschema.Keyspaces[ks].Tables { + gotTables = append(gotTables, t) + } + sort.Strings(tables) + sort.Strings(gotTables) + if reflect.DeepEqual(tables, gotTables) { + return vschema + } + time.Sleep(time.Millisecond) + } + + t.Fatalf("updated vschema did not contain tables %v", tables) + return nil +} + func waitForColVindexes(t *testing.T, ks, table string, names []string, executor *Executor) *vschemapb.SrvVSchema { t.Helper() @@ -1257,6 +1280,66 @@ func TestExecutorCreateVindexDDL(t *testing.T) { } } +func TestExecutorAddDropVschemaTableDDL(t *testing.T) { + *vschemaacl.AuthorizedDDLUsers = "%" + defer func() { + *vschemaacl.AuthorizedDDLUsers = "" + }() + executor, sbc1, sbc2, sbclookup := createExecutorEnv() + ks := KsTestUnsharded + + vschemaUpdates := make(chan *vschemapb.SrvVSchema, 4) + executor.serv.WatchSrvVSchema(context.Background(), "aa", func(vschema *vschemapb.SrvVSchema, err error) { + vschemaUpdates <- vschema + }) + + vschema := <-vschemaUpdates + _, ok := vschema.Keyspaces[ks].Tables["test_table"] + if ok { + t.Fatalf("test_table should not exist in original vschema") + } + + vschemaTables := []string{} + for t := range vschema.Keyspaces[ks].Tables { + vschemaTables = append(vschemaTables, t) + } + + session := NewSafeSession(&vtgatepb.Session{TargetString: ks}) + stmt := "alter vschema add table test_table" + _, err := executor.Execute(context.Background(), "TestExecute", session, stmt, nil) + if err != nil { + t.Error(err) + } + vschema = waitForVschemaTables(t, ks, append(vschemaTables, "test_table"), executor) + + stmt = "alter vschema add table test_table2" + _, err = executor.Execute(context.Background(), "TestExecute", session, stmt, nil) + if err != nil { + t.Error(err) + } + vschema = waitForVschemaTables(t, ks, append(vschemaTables, []string{"test_table", "test_table2"}...), executor) + + // Should fail on a sharded keyspace + session = NewSafeSession(&vtgatepb.Session{TargetString: "TestExecutor"}) + stmt = "alter vschema add table test_table" + _, err = executor.Execute(context.Background(), "TestExecute", session, stmt, nil) + wantErr := "add vschema table: unsupported on sharded keyspace TestExecutor" + if err == nil || err.Error() != wantErr { + t.Errorf("want error %v got %v", wantErr, err) + } + + // No queries should have gone to any tablets + wantCount := []int64{0, 0, 0} + gotCount := []int64{ + sbc1.ExecCount.Get(), + sbc2.ExecCount.Get(), + sbclookup.ExecCount.Get(), + } + if !reflect.DeepEqual(gotCount, wantCount) { + t.Errorf("Exec %s: %v, want %v", stmt, gotCount, wantCount) + } +} + func TestExecutorAddDropVindexDDL(t *testing.T) { *vschemaacl.AuthorizedDDLUsers = "%" defer func() {