diff --git a/arangod/Aql/grammar.cpp b/arangod/Aql/grammar.cpp index 8270f11494..f3f62718c8 100644 --- a/arangod/Aql/grammar.cpp +++ b/arangod/Aql/grammar.cpp @@ -572,14 +572,14 @@ static const yytype_uint16 yyrline[] = 773, 776, 779, 785, 788, 804, 804, 816, 819, 822, 828, 831, 834, 837, 840, 843, 846, 849, 852, 855, 858, 861, 864, 867, 870, 876, 882, 884, 889, 892, - 892, 913, 916, 922, 925, 931, 931, 940, 942, 947, - 950, 956, 959, 973, 973, 982, 984, 989, 991, 996, - 1010, 1014, 1023, 1030, 1033, 1039, 1042, 1048, 1051, 1054, - 1060, 1063, 1069, 1072, 1079, 1083, 1090, 1096, 1095, 1104, - 1108, 1117, 1120, 1123, 1129, 1132, 1138, 1170, 1173, 1176, - 1183, 1193, 1193, 1211, 1226, 1240, 1254, 1254, 1297, 1300, - 1306, 1313, 1323, 1326, 1329, 1332, 1335, 1341, 1344, 1347, - 1357, 1363, 1366, 1371 + 892, 908, 911, 917, 920, 926, 926, 935, 937, 942, + 945, 951, 954, 968, 968, 977, 979, 984, 986, 991, + 1005, 1009, 1018, 1025, 1028, 1034, 1037, 1043, 1046, 1049, + 1055, 1058, 1064, 1067, 1074, 1078, 1085, 1091, 1090, 1099, + 1103, 1112, 1115, 1118, 1124, 1127, 1133, 1165, 1168, 1171, + 1178, 1188, 1188, 1201, 1216, 1230, 1244, 1244, 1287, 1290, + 1296, 1303, 1313, 1316, 1319, 1322, 1325, 1331, 1334, 1337, + 1347, 1353, 1356, 1361 }; #endif @@ -2929,19 +2929,14 @@ yyreduce: case 109: #line 892 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { -#if 0 - if (parser->isModificationQuery()) { - parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected subquery after data-modification operation", yylloc.first_line, yylloc.first_column); - } -#endif parser->ast()->scopes()->start(triagens::aql::AQL_SCOPE_SUBQUERY); parser->ast()->startSubQuery(); } -#line 2941 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2936 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 110: -#line 900 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 895 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { AstNode* node = parser->ast()->endSubQuery(); parser->ast()->scopes()->endCurrent(); @@ -2952,98 +2947,98 @@ yyreduce: (yyval.node) = parser->ast()->createNodeReference(variableName); } -#line 2956 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2951 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 111: -#line 913 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 908 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushArrayElement((yyvsp[0].node)); } -#line 2964 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2959 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 112: -#line 916 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 911 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushArrayElement((yyvsp[0].node)); } -#line 2972 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2967 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 113: -#line 922 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 917 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2980 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2975 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 114: -#line 925 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 920 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2988 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2983 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 115: -#line 931 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 926 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeArray(); parser->pushStack(node); } -#line 2997 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2992 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 116: -#line 934 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 929 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = static_cast(parser->popStack()); } -#line 3005 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3000 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 117: -#line 940 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 935 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 3012 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3007 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 118: -#line 942 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 937 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 3019 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3014 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 119: -#line 947 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 942 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushArrayElement((yyvsp[0].node)); } -#line 3027 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3022 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 120: -#line 950 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 945 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushArrayElement((yyvsp[0].node)); } -#line 3035 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3030 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 121: -#line 956 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 951 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = nullptr; } -#line 3043 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3038 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 122: -#line 959 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 954 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].node) == nullptr) { ABORT_OOM @@ -3055,56 +3050,56 @@ yyreduce: (yyval.node) = (yyvsp[0].node); } -#line 3059 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3054 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 123: -#line 973 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 968 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeObject(); parser->pushStack(node); } -#line 3068 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3063 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 124: -#line 976 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 971 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = static_cast(parser->popStack()); } -#line 3076 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3071 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 125: -#line 982 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 977 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 3083 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3078 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 126: -#line 984 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 979 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 3090 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3085 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 127: -#line 989 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 984 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 3097 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3092 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 128: -#line 991 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 986 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 3104 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3099 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 129: -#line 996 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 991 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // attribute-name-only (comparable to JS enhanced object literals, e.g. { foo, bar }) auto ast = parser->ast(); @@ -3119,20 +3114,20 @@ yyreduce: auto node = ast->createNodeReference(variable); parser->pushObjectElement((yyvsp[0].strval).value, (yyvsp[0].strval).length, node); } -#line 3123 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3118 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 130: -#line 1010 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1005 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // attribute-name : attribute-value parser->pushObjectElement((yyvsp[-2].strval).value, (yyvsp[-2].strval).length, (yyvsp[0].node)); } -#line 3132 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3127 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 131: -#line 1014 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1009 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // bind-parameter : attribute-value if ((yyvsp[-2].strval).length < 1 || (yyvsp[-2].strval).value[0] == '@') { @@ -3142,214 +3137,214 @@ yyreduce: auto param = parser->ast()->createNodeParameter((yyvsp[-2].strval).value, (yyvsp[-2].strval).length); parser->pushObjectElement(param, (yyvsp[0].node)); } -#line 3146 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3141 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 132: -#line 1023 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1018 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // [ attribute-name-expression ] : attribute-value parser->pushObjectElement((yyvsp[-3].node), (yyvsp[0].node)); } -#line 3155 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3150 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 133: -#line 1030 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1025 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.intval) = 1; } -#line 3163 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3158 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 134: -#line 1033 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1028 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.intval) = (yyvsp[-1].intval) + 1; } -#line 3171 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3166 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 135: -#line 1039 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1034 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = nullptr; } -#line 3179 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3174 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 136: -#line 1042 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1037 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3187 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3182 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 137: -#line 1048 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1043 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = nullptr; } -#line 3195 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3190 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 138: -#line 1051 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1046 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeArrayLimit(nullptr, (yyvsp[0].node)); } -#line 3203 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3198 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 139: -#line 1054 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1049 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeArrayLimit((yyvsp[-2].node), (yyvsp[0].node)); } -#line 3211 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3206 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 140: -#line 1060 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1055 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = nullptr; } -#line 3219 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3214 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 141: -#line 1063 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1058 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3227 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3222 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 142: -#line 1069 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1064 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueString((yyvsp[0].strval).value, (yyvsp[0].strval).length); } -#line 3235 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3230 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 143: -#line 1072 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1067 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // TODO FIXME check @s (yyval.node) = (yyvsp[0].node); } -#line 3244 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3239 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 144: -#line 1079 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1074 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = static_cast(parser->peekStack()); node->addMember((yyvsp[0].node)); } -#line 3253 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3248 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 145: -#line 1083 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1078 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = static_cast(parser->peekStack()); node->addMember((yyvsp[0].node)); } -#line 3262 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3257 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 146: -#line 1090 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1085 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeArray(); node->addMember((yyvsp[0].node)); (yyval.node) = parser->ast()->createNodeCollectionList(node); } -#line 3272 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3267 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 147: -#line 1096 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1091 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeArray(); parser->pushStack(node); node->addMember((yyvsp[-1].node)); } -#line 3282 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3277 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 148: -#line 1100 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1095 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = static_cast(parser->popStack()); (yyval.node) = parser->ast()->createNodeCollectionList(node); } -#line 3291 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3286 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 149: -#line 1104 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1099 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // graph name (yyval.node) = (yyvsp[0].node); } -#line 3300 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3295 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 150: -#line 1108 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1103 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // graph name (yyval.node) = parser->ast()->createNodeValueString((yyvsp[0].strval).value, (yyvsp[0].strval).length); } -#line 3309 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3304 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 151: -#line 1117 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1112 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.intval) = 2; } -#line 3317 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3312 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 152: -#line 1120 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1115 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.intval) = 1; } -#line 3325 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3320 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 153: -#line 1123 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1118 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.intval) = 0; } -#line 3333 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3328 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 154: -#line 1129 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1124 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeDirection((yyvsp[0].intval), 1); } -#line 3341 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3336 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 155: -#line 1132 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1127 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeDirection((yyvsp[0].intval), (yyvsp[-1].node)); } -#line 3349 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3344 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 156: -#line 1138 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1133 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // variable or collection auto ast = parser->ast(); @@ -3382,27 +3377,27 @@ yyreduce: (yyval.node) = node; } -#line 3386 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3381 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 157: -#line 1170 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1165 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3394 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3389 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 158: -#line 1173 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1168 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3402 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3397 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 159: -#line 1176 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1171 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); @@ -3410,11 +3405,11 @@ yyreduce: ABORT_OOM } } -#line 3414 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3409 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 160: -#line 1183 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1178 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[-1].node)->type == NODE_TYPE_EXPANSION) { // create a dummy passthru node that reduces and evaluates the expansion first @@ -3425,25 +3420,20 @@ yyreduce: (yyval.node) = (yyvsp[-1].node); } } -#line 3429 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3424 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 161: -#line 1193 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1188 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { -#if 0 - if (parser->isModificationQuery()) { - parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected subquery after data-modification operation", yylloc.first_line, yylloc.first_column); - } -#endif parser->ast()->scopes()->start(triagens::aql::AQL_SCOPE_SUBQUERY); parser->ast()->startSubQuery(); } -#line 3443 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3433 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 162: -#line 1201 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1191 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { AstNode* node = parser->ast()->endSubQuery(); parser->ast()->scopes()->endCurrent(); @@ -3454,11 +3444,11 @@ yyreduce: (yyval.node) = parser->ast()->createNodeReference(variableName); } -#line 3458 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3448 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 163: -#line 1211 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1201 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // named variable access, e.g. variable.reference if ((yyvsp[-2].node)->type == NODE_TYPE_EXPANSION) { @@ -3474,11 +3464,11 @@ yyreduce: (yyval.node) = parser->ast()->createNodeAttributeAccess((yyvsp[-2].node), (yyvsp[0].strval).value, (yyvsp[0].strval).length); } } -#line 3478 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3468 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 164: -#line 1226 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1216 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // named variable access, e.g. variable.@reference if ((yyvsp[-2].node)->type == NODE_TYPE_EXPANSION) { @@ -3493,11 +3483,11 @@ yyreduce: (yyval.node) = parser->ast()->createNodeBoundAttributeAccess((yyvsp[-2].node), (yyvsp[0].node)); } } -#line 3497 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3487 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 165: -#line 1240 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1230 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // indexed variable access, e.g. variable[index] if ((yyvsp[-3].node)->type == NODE_TYPE_EXPANSION) { @@ -3512,11 +3502,11 @@ yyreduce: (yyval.node) = parser->ast()->createNodeIndexedAccess((yyvsp[-3].node), (yyvsp[-1].node)); } } -#line 3516 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3506 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 166: -#line 1254 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1244 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // variable expansion, e.g. variable[*], with optional FILTER, LIMIT and RETURN clauses if ((yyvsp[0].intval) > 1 && (yyvsp[-2].node)->type == NODE_TYPE_EXPANSION) { @@ -3540,11 +3530,11 @@ yyreduce: auto scopes = parser->ast()->scopes(); scopes->stackCurrentVariable(scopes->getVariable(nextName)); } -#line 3544 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3534 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 167: -#line 1276 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1266 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto scopes = parser->ast()->scopes(); scopes->unstackCurrentVariable(); @@ -3563,27 +3553,27 @@ yyreduce: (yyval.node) = parser->ast()->createNodeExpansion((yyvsp[-5].intval), iterator, parser->ast()->createNodeReference(variable->name), (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[-1].node)); } } -#line 3567 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3557 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 168: -#line 1297 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1287 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3575 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3565 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 169: -#line 1300 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1290 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3583 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3573 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 170: -#line 1306 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1296 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].node) == nullptr) { ABORT_OOM @@ -3591,11 +3581,11 @@ yyreduce: (yyval.node) = (yyvsp[0].node); } -#line 3595 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3585 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 171: -#line 1313 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1303 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].node) == nullptr) { ABORT_OOM @@ -3603,67 +3593,67 @@ yyreduce: (yyval.node) = (yyvsp[0].node); } -#line 3607 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3597 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 172: -#line 1323 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1313 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueString((yyvsp[0].strval).value, (yyvsp[0].strval).length); } -#line 3615 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3605 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 173: -#line 1326 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1316 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3623 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3613 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 174: -#line 1329 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1319 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueNull(); } -#line 3631 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3621 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 175: -#line 1332 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1322 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueBool(true); } -#line 3639 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3629 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 176: -#line 1335 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1325 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueBool(false); } -#line 3647 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3637 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 177: -#line 1341 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1331 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeCollection((yyvsp[0].strval).value, TRI_TRANSACTION_WRITE); } -#line 3655 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3645 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 178: -#line 1344 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1334 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeCollection((yyvsp[0].strval).value, TRI_TRANSACTION_WRITE); } -#line 3663 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3653 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 179: -#line 1347 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1337 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].strval).length < 2 || (yyvsp[0].strval).value[0] != '@') { parser->registerParseError(TRI_ERROR_QUERY_BIND_PARAMETER_TYPE, TRI_errno_string(TRI_ERROR_QUERY_BIND_PARAMETER_TYPE), (yyvsp[0].strval).value, yylloc.first_line, yylloc.first_column); @@ -3671,43 +3661,43 @@ yyreduce: (yyval.node) = parser->ast()->createNodeParameter((yyvsp[0].strval).value, (yyvsp[0].strval).length); } -#line 3675 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3665 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 180: -#line 1357 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1347 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeParameter((yyvsp[0].strval).value, (yyvsp[0].strval).length); } -#line 3683 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3673 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 181: -#line 1363 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1353 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.strval) = (yyvsp[0].strval); } -#line 3691 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3681 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 182: -#line 1366 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1356 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.strval) = (yyvsp[0].strval); } -#line 3699 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3689 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 183: -#line 1371 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1361 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.strval) = (yyvsp[0].strval); } -#line 3707 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3697 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; -#line 3711 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3701 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires diff --git a/arangod/Aql/grammar.y b/arangod/Aql/grammar.y index 756a4c11b3..4168e8155d 100644 --- a/arangod/Aql/grammar.y +++ b/arangod/Aql/grammar.y @@ -890,11 +890,6 @@ expression_or_query: $$ = $1; } | { -#if 0 - if (parser->isModificationQuery()) { - parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected subquery after data-modification operation", yylloc.first_line, yylloc.first_column); - } -#endif parser->ast()->scopes()->start(triagens::aql::AQL_SCOPE_SUBQUERY); parser->ast()->startSubQuery(); } query { @@ -1191,11 +1186,6 @@ reference: } } | T_OPEN { -#if 0 - if (parser->isModificationQuery()) { - parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected subquery after data-modification operation", yylloc.first_line, yylloc.first_column); - } -#endif parser->ast()->scopes()->start(triagens::aql::AQL_SCOPE_SUBQUERY); parser->ast()->startSubQuery(); } query T_CLOSE {