diff --git a/arangod/Aql/grammar.cpp b/arangod/Aql/grammar.cpp index d62d035619..07ef5b1b9d 100644 --- a/arangod/Aql/grammar.cpp +++ b/arangod/Aql/grammar.cpp @@ -559,19 +559,19 @@ static const yytype_uint16 yyrline[] = 0, 203, 203, 205, 207, 209, 211, 213, 218, 220, 225, 229, 235, 237, 242, 244, 246, 248, 250, 252, 257, 266, 274, 279, 281, 286, 293, 303, 303, 317, - 337, 364, 395, 425, 427, 432, 439, 442, 448, 462, - 479, 482, 482, 496, 496, 507, 510, 516, 522, 525, - 528, 531, 537, 542, 549, 557, 560, 566, 577, 588, - 597, 609, 614, 623, 635, 640, 643, 649, 649, 705, - 708, 708, 724, 727, 730, 733, 736, 739, 742, 748, - 755, 772, 772, 784, 787, 790, 796, 799, 802, 805, - 808, 811, 814, 817, 820, 823, 826, 829, 832, 835, - 838, 844, 850, 852, 857, 860, 860, 879, 882, 888, - 891, 897, 897, 906, 908, 913, 916, 922, 925, 939, - 939, 948, 950, 955, 957, 962, 965, 968, 983, 987, - 987, 1011, 1047, 1054, 1058, 1062, 1069, 1074, 1079, 1084, - 1088, 1092, 1099, 1102, 1108, 1115, 1125, 1128, 1131, 1134, - 1137, 1143, 1150, 1157, 1171, 1177, 1184, 1193 + 333, 360, 392, 422, 424, 429, 436, 439, 445, 459, + 476, 479, 479, 493, 493, 504, 507, 513, 519, 522, + 525, 528, 534, 539, 546, 554, 557, 563, 574, 585, + 594, 606, 611, 620, 632, 637, 640, 646, 646, 702, + 705, 705, 721, 724, 727, 730, 733, 736, 739, 745, + 752, 769, 769, 781, 784, 787, 793, 796, 799, 802, + 805, 808, 811, 814, 817, 820, 823, 826, 829, 832, + 835, 841, 847, 849, 854, 857, 857, 876, 879, 885, + 888, 894, 894, 903, 905, 910, 913, 919, 922, 936, + 936, 945, 947, 952, 954, 959, 962, 965, 980, 984, + 984, 1008, 1044, 1051, 1055, 1059, 1066, 1071, 1076, 1081, + 1085, 1089, 1096, 1099, 1105, 1112, 1122, 1125, 1128, 1131, + 1134, 1140, 1147, 1154, 1168, 1174, 1181, 1190 }; #endif @@ -1965,10 +1965,6 @@ yyreduce: case 29: #line 317 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - if ((yyvsp[0].strval) == nullptr) { - parser->registerParseError(TRI_ERROR_QUERY_PARSE, "use of 'COUNT' without 'INTO'", yylloc.first_line, yylloc.first_column); - } - auto scopes = parser->ast()->scopes(); // check if we are in the main scope @@ -1984,11 +1980,11 @@ yyreduce: auto node = parser->ast()->createNodeCollectCount(parser->ast()->createNodeArray(), (yyvsp[0].strval)); parser->ast()->addOperation(node); } -#line 1988 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1984 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 30: -#line 337 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 333 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto scopes = parser->ast()->scopes(); @@ -2016,11 +2012,11 @@ yyreduce: auto node = parser->ast()->createNodeCollectCount((yyvsp[-1].node), (yyvsp[0].strval)); parser->ast()->addOperation(node); } -#line 2020 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2016 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 31: -#line 364 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 360 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto scopes = parser->ast()->scopes(); @@ -2045,18 +2041,19 @@ yyreduce: } } - if ((yyvsp[-1].strval) == nullptr && (yyvsp[0].node) != nullptr) { + if ((yyvsp[-1].strval) == nullptr && + (yyvsp[0].node) != nullptr) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "use of 'KEEP' without 'INTO'", yylloc.first_line, yylloc.first_column); } auto node = parser->ast()->createNodeCollect((yyvsp[-2].node), (yyvsp[-1].strval), (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 2056 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2053 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 32: -#line 395 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 392 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto scopes = parser->ast()->scopes(); @@ -2084,50 +2081,50 @@ yyreduce: auto node = parser->ast()->createNodeCollectExpression((yyvsp[-4].node), (yyvsp[-2].strval), (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 2088 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2085 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 33: -#line 425 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 422 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2095 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2092 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 34: -#line 427 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 424 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2102 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2099 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 35: -#line 432 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 429 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeAssign((yyvsp[-2].strval), (yyvsp[0].node)); parser->pushArrayElement(node); } -#line 2111 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2108 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 36: -#line 439 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 436 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.strval) = nullptr; } -#line 2119 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2116 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 37: -#line 442 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 439 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.strval) = (yyvsp[0].strval); } -#line 2127 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2124 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 38: -#line 448 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 445 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->ast()->scopes()->existsVariable((yyvsp[0].strval))) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "use of unknown variable '%s' for KEEP", (yyvsp[0].strval), yylloc.first_line, yylloc.first_column); @@ -2142,11 +2139,11 @@ yyreduce: node->setFlag(FLAG_KEEP_VARIABLENAME); parser->pushArrayElement(node); } -#line 2146 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2143 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 39: -#line 462 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 459 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->ast()->scopes()->existsVariable((yyvsp[0].strval))) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "use of unknown variable '%s' for KEEP", (yyvsp[0].strval), yylloc.first_line, yylloc.first_column); @@ -2161,19 +2158,19 @@ yyreduce: node->setFlag(FLAG_KEEP_VARIABLENAME); parser->pushArrayElement(node); } -#line 2165 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2162 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 40: -#line 479 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 476 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = nullptr; } -#line 2173 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2170 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 41: -#line 482 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 479 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! TRI_CaseEqualString((yyvsp[0].strval), "KEEP")) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected qualifier '%s', expecting 'KEEP'", (yyvsp[0].strval), yylloc.first_line, yylloc.first_column); @@ -2182,140 +2179,140 @@ yyreduce: auto node = parser->ast()->createNodeArray(); parser->pushStack(node); } -#line 2186 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2183 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 42: -#line 489 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 486 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto list = static_cast(parser->popStack()); (yyval.node) = list; } -#line 2195 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2192 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 43: -#line 496 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 493 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeArray(); parser->pushStack(node); } -#line 2204 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2201 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 44: -#line 499 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 496 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto list = static_cast(parser->popStack()); auto node = parser->ast()->createNodeSort(list); parser->ast()->addOperation(node); } -#line 2214 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2211 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 45: +#line 504 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + parser->pushArrayElement((yyvsp[0].node)); + } +#line 2219 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 46: #line 507 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushArrayElement((yyvsp[0].node)); } -#line 2222 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 46: -#line 510 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - parser->pushArrayElement((yyvsp[0].node)); - } -#line 2230 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2227 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 47: -#line 516 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 513 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeSortElement((yyvsp[-1].node), (yyvsp[0].node)); } -#line 2238 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2235 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 48: +#line 519 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = parser->ast()->createNodeValueBool(true); + } +#line 2243 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 49: #line 522 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueBool(true); } -#line 2246 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 49: -#line 525 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - (yyval.node) = parser->ast()->createNodeValueBool(true); - } -#line 2254 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2251 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 50: -#line 528 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 525 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueBool(false); } -#line 2262 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2259 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 51: -#line 531 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 528 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2270 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2267 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 52: -#line 537 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 534 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto offset = parser->ast()->createNodeValueInt(0); auto node = parser->ast()->createNodeLimit(offset, (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 2280 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2277 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 53: -#line 542 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 539 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeLimit((yyvsp[-2].node), (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 2289 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2286 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 54: -#line 549 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 546 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeReturn((yyvsp[0].node)); parser->ast()->addOperation(node); parser->ast()->scopes()->endNested(); } -#line 2299 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2296 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 55: -#line 557 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 554 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2307 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2304 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 56: -#line 560 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 557 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2315 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2312 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 57: -#line 566 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 563 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_REMOVE, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2324,11 +2321,11 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2328 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2325 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 58: -#line 577 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 574 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_INSERT, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2337,11 +2334,11 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2341 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2338 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 59: -#line 588 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 585 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_UPDATE, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2351,11 +2348,11 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2355 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2352 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 60: -#line 597 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 594 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_UPDATE, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2365,18 +2362,18 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2369 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2366 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 61: -#line 609 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 606 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2376 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2373 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 62: -#line 614 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 611 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_REPLACE, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2386,11 +2383,11 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2390 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2387 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 63: -#line 623 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 620 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_REPLACE, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2400,44 +2397,44 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2404 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2401 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 64: -#line 635 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 632 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2411 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2408 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 65: -#line 640 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 637 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.intval) = static_cast(NODE_TYPE_UPDATE); } -#line 2419 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2416 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 66: -#line 643 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 640 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.intval) = static_cast(NODE_TYPE_REPLACE); } -#line 2427 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2424 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 67: -#line 649 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 646 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // reserve a variable named "$OLD", we might need it in the update expression // and in a later return thing parser->pushStack(parser->ast()->createNodeVariable("$OLD", true)); } -#line 2437 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2434 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 68: -#line 653 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 650 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_UPSERT, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2487,19 +2484,19 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2491 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2488 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 69: -#line 705 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 702 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[-1].node); } -#line 2499 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2496 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 70: -#line 708 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 705 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (parser->isModificationQuery()) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected subquery after data-modification operation", yylloc.first_line, yylloc.first_column); @@ -2507,11 +2504,11 @@ yyreduce: parser->ast()->scopes()->start(triagens::aql::AQL_SCOPE_SUBQUERY); parser->ast()->startSubQuery(); } -#line 2511 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2508 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 71: -#line 714 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 711 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { AstNode* node = parser->ast()->endSubQuery(); parser->ast()->scopes()->endCurrent(); @@ -2522,67 +2519,67 @@ yyreduce: (yyval.node) = parser->ast()->createNodeReference(variableName.c_str()); } -#line 2526 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2523 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 72: +#line 721 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = (yyvsp[0].node); + } +#line 2531 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 73: #line 724 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2534 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2539 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 73: + case 74: #line 727 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2542 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2547 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 74: + case 75: #line 730 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2550 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2555 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 75: + case 76: #line 733 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2558 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2563 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 76: + case 77: #line 736 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2566 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 77: -#line 739 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - (yyval.node) = (yyvsp[0].node); - } -#line 2574 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2571 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 78: -#line 742 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 739 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeRange((yyvsp[-2].node), (yyvsp[0].node)); } -#line 2582 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2579 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 79: -#line 748 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 745 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.strval) = (yyvsp[0].strval); @@ -2590,11 +2587,11 @@ yyreduce: ABORT_OOM } } -#line 2594 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2591 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 80: -#line 755 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 752 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[-2].strval) == nullptr || (yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -2609,205 +2606,205 @@ yyreduce: ABORT_OOM } } -#line 2613 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2610 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 81: -#line 772 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 769 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushStack((yyvsp[0].strval)); auto node = parser->ast()->createNodeArray(); parser->pushStack(node); } -#line 2624 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2621 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 82: -#line 777 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 774 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto list = static_cast(parser->popStack()); (yyval.node) = parser->ast()->createNodeFunctionCall(static_cast(parser->popStack()), list); } -#line 2633 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2630 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 83: -#line 784 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 781 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeUnaryOperator(NODE_TYPE_OPERATOR_UNARY_PLUS, (yyvsp[0].node)); } -#line 2641 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2638 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 84: -#line 787 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 784 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeUnaryOperator(NODE_TYPE_OPERATOR_UNARY_MINUS, (yyvsp[0].node)); } -#line 2649 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2646 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 85: -#line 790 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 787 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeUnaryOperator(NODE_TYPE_OPERATOR_UNARY_NOT, (yyvsp[0].node)); } -#line 2657 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2654 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 86: -#line 796 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 793 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_OR, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2665 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2662 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 87: -#line 799 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 796 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_AND, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2673 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2670 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 88: -#line 802 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 799 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_PLUS, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2681 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2678 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 89: -#line 805 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 802 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_MINUS, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2689 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2686 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 90: -#line 808 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 805 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_TIMES, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2697 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2694 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 91: -#line 811 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 808 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_DIV, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2705 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2702 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 92: -#line 814 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 811 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_MOD, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2713 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2710 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 93: -#line 817 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 814 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_EQ, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2721 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2718 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 94: -#line 820 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 817 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_NE, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2729 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2726 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 95: -#line 823 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 820 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_LT, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2737 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2734 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 96: -#line 826 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 823 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_GT, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2745 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2742 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 97: -#line 829 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 826 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_LE, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2753 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2750 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 98: -#line 832 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 829 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_GE, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2761 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2758 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 99: -#line 835 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 832 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_IN, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2769 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2766 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 100: -#line 838 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 835 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_NIN, (yyvsp[-3].node), (yyvsp[0].node)); } -#line 2777 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2774 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 101: -#line 844 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 841 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeTernaryOperator((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2785 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2782 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 102: -#line 850 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 847 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2792 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2789 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 103: -#line 852 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 849 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2799 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2796 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 104: -#line 857 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 854 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2807 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2804 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 105: -#line 860 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 857 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (parser->isModificationQuery()) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected subquery after data-modification operation", yylloc.first_line, yylloc.first_column); @@ -2815,11 +2812,11 @@ yyreduce: parser->ast()->scopes()->start(triagens::aql::AQL_SCOPE_SUBQUERY); parser->ast()->startSubQuery(); } -#line 2819 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2816 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 106: -#line 866 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 863 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { AstNode* node = parser->ast()->endSubQuery(); parser->ast()->scopes()->endCurrent(); @@ -2830,98 +2827,98 @@ yyreduce: (yyval.node) = parser->ast()->createNodeReference(variableName.c_str()); } -#line 2834 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2831 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 107: +#line 876 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + parser->pushArrayElement((yyvsp[0].node)); + } +#line 2839 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 108: #line 879 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushArrayElement((yyvsp[0].node)); } -#line 2842 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 108: -#line 882 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - parser->pushArrayElement((yyvsp[0].node)); - } -#line 2850 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2847 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 109: +#line 885 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = (yyvsp[0].node); + } +#line 2855 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 110: #line 888 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2858 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 110: -#line 891 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - (yyval.node) = (yyvsp[0].node); - } -#line 2866 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2863 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 111: -#line 897 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 894 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeArray(); parser->pushStack(node); } -#line 2875 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2872 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 112: -#line 900 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 897 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = static_cast(parser->popStack()); } -#line 2883 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2880 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 113: -#line 906 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 903 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2890 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2887 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 114: -#line 908 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 905 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2897 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2894 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 115: +#line 910 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + parser->pushArrayElement((yyvsp[0].node)); + } +#line 2902 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 116: #line 913 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushArrayElement((yyvsp[0].node)); } -#line 2905 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 116: -#line 916 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - parser->pushArrayElement((yyvsp[0].node)); - } -#line 2913 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2910 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 117: -#line 922 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 919 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = nullptr; } -#line 2921 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2918 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 118: -#line 925 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 922 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[-1].strval) == nullptr || (yyvsp[0].node) == nullptr) { ABORT_OOM @@ -2933,72 +2930,72 @@ yyreduce: (yyval.node) = (yyvsp[0].node); } -#line 2937 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2934 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 119: -#line 939 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 936 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeObject(); parser->pushStack(node); } -#line 2946 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2943 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 120: -#line 942 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 939 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = static_cast(parser->popStack()); } -#line 2954 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2951 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 121: -#line 948 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 945 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2961 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2958 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 122: -#line 950 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 947 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2968 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2965 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 123: -#line 955 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 952 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2975 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2972 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 124: -#line 957 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 954 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2982 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2979 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 125: -#line 962 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 959 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushObjectElement((yyvsp[-2].strval), (yyvsp[0].node)); } -#line 2990 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2987 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 126: -#line 965 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 962 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushObjectElement((yyvsp[-3].node), (yyvsp[0].node)); } -#line 2998 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2995 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 127: -#line 968 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 965 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[-2].strval) == nullptr) { ABORT_OOM @@ -3011,20 +3008,20 @@ yyreduce: auto param = parser->ast()->createNodeParameter((yyvsp[-2].strval)); parser->pushObjectElement(param, (yyvsp[0].node)); } -#line 3015 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3012 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 128: -#line 983 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 980 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // start of reference (collection or variable name) (yyval.node) = (yyvsp[0].node); } -#line 3024 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3021 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 129: -#line 987 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 984 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // expanded variable access, e.g. variable[*] @@ -3036,11 +3033,11 @@ yyreduce: parser->pushStack(iterator); parser->pushStack(parser->ast()->createNodeReference(iteratorName)); } -#line 3040 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3037 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 130: -#line 997 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 994 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // return from the "expansion" subrule @@ -3052,11 +3049,11 @@ yyreduce: ABORT_OOM } } -#line 3056 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3053 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 131: -#line 1011 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1008 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // variable or collection auto ast = parser->ast(); @@ -3093,11 +3090,11 @@ yyreduce: (yyval.node) = node; } -#line 3097 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3094 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 132: -#line 1047 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1044 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); @@ -3105,111 +3102,111 @@ yyreduce: ABORT_OOM } } -#line 3109 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3106 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 133: -#line 1054 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1051 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // named variable access, e.g. variable.reference (yyval.node) = parser->ast()->createNodeAttributeAccess((yyvsp[-2].node), (yyvsp[0].strval)); } -#line 3118 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3115 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 134: -#line 1058 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1055 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // named variable access, e.g. variable.@reference (yyval.node) = parser->ast()->createNodeBoundAttributeAccess((yyvsp[-2].node), (yyvsp[0].node)); } -#line 3127 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3124 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 135: -#line 1062 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1059 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // indexed variable access, e.g. variable[index] (yyval.node) = parser->ast()->createNodeIndexedAccess((yyvsp[-3].node), (yyvsp[-1].node)); } -#line 3136 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3133 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 136: -#line 1069 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1066 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // named variable access, continuation from * expansion, e.g. [*].variable.reference auto node = static_cast(parser->popStack()); (yyval.node) = parser->ast()->createNodeAttributeAccess(node, (yyvsp[0].strval)); } -#line 3146 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3143 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 137: -#line 1074 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1071 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // named variable access w/ bind parameter, continuation from * expansion, e.g. [*].variable.@reference auto node = static_cast(parser->popStack()); (yyval.node) = parser->ast()->createNodeBoundAttributeAccess(node, (yyvsp[0].node)); } -#line 3156 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3153 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 138: -#line 1079 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1076 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // indexed variable access, continuation from * expansion, e.g. [*].variable[index] auto node = static_cast(parser->popStack()); (yyval.node) = parser->ast()->createNodeIndexedAccess(node, (yyvsp[-1].node)); } -#line 3166 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3163 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 139: -#line 1084 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1081 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // named variable access, continuation from * expansion, e.g. [*].variable.xx.reference (yyval.node) = parser->ast()->createNodeAttributeAccess((yyvsp[-2].node), (yyvsp[0].strval)); } -#line 3175 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3172 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 140: -#line 1088 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1085 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // named variable access w/ bind parameter, continuation from * expansion, e.g. [*].variable.xx.@reference (yyval.node) = parser->ast()->createNodeBoundAttributeAccess((yyvsp[-2].node), (yyvsp[0].node)); } -#line 3184 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3181 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 141: -#line 1092 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1089 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // indexed variable access, continuation from * expansion, e.g. [*].variable.xx.[index] (yyval.node) = parser->ast()->createNodeIndexedAccess((yyvsp[-3].node), (yyvsp[-1].node)); } -#line 3193 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3190 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 142: +#line 1096 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = (yyvsp[0].node); + } +#line 3198 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 143: #line 1099 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3201 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 143: -#line 1102 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - (yyval.node) = (yyvsp[0].node); - } -#line 3209 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3206 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 144: -#line 1108 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1105 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].node) == nullptr) { ABORT_OOM @@ -3217,11 +3214,11 @@ yyreduce: (yyval.node) = (yyvsp[0].node); } -#line 3221 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3218 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 145: -#line 1115 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1112 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].node) == nullptr) { ABORT_OOM @@ -3229,51 +3226,51 @@ yyreduce: (yyval.node) = (yyvsp[0].node); } -#line 3233 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3230 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 146: -#line 1125 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1122 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueString((yyvsp[0].strval)); } -#line 3241 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3238 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 147: -#line 1128 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1125 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3249 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3246 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 148: -#line 1131 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1128 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueNull(); } -#line 3257 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3254 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 149: -#line 1134 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1131 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueBool(true); } -#line 3265 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3262 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 150: -#line 1137 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1134 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueBool(false); } -#line 3273 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3270 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 151: -#line 1143 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1140 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -3281,11 +3278,11 @@ yyreduce: (yyval.node) = parser->ast()->createNodeCollection((yyvsp[0].strval), TRI_TRANSACTION_WRITE); } -#line 3285 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3282 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 152: -#line 1150 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1147 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -3293,11 +3290,11 @@ yyreduce: (yyval.node) = parser->ast()->createNodeCollection((yyvsp[0].strval), TRI_TRANSACTION_WRITE); } -#line 3297 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3294 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 153: -#line 1157 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1154 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -3309,19 +3306,19 @@ yyreduce: (yyval.node) = parser->ast()->createNodeParameter((yyvsp[0].strval)); } -#line 3313 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3310 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 154: -#line 1171 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1168 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeParameter((yyvsp[0].strval)); } -#line 3321 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3318 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 155: -#line 1177 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1174 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -3329,11 +3326,11 @@ yyreduce: (yyval.strval) = (yyvsp[0].strval); } -#line 3333 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3330 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 156: -#line 1184 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1181 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -3341,19 +3338,19 @@ yyreduce: (yyval.strval) = (yyvsp[0].strval); } -#line 3345 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3342 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 157: -#line 1193 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 1190 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.strval) = (yyvsp[0].strval); } -#line 3353 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3350 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; -#line 3357 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3354 "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 f74d1b63f0..1dd2bb3633 100644 --- a/arangod/Aql/grammar.y +++ b/arangod/Aql/grammar.y @@ -315,10 +315,6 @@ collect_variable_list: collect_statement: T_COLLECT count_into { - if ($2 == nullptr) { - parser->registerParseError(TRI_ERROR_QUERY_PARSE, "use of 'COUNT' without 'INTO'", yylloc.first_line, yylloc.first_column); - } - auto scopes = parser->ast()->scopes(); // check if we are in the main scope @@ -385,7 +381,8 @@ collect_statement: } } - if ($2 == nullptr && $3 != nullptr) { + if ($2 == nullptr && + $3 != nullptr) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "use of 'KEEP' without 'INTO'", yylloc.first_line, yylloc.first_column); }