Skip to content

Commit

Permalink
disable lookup yield agg function (#3245) (#3261)
Browse files Browse the repository at this point in the history
* disable lookup yield agg function

* add ci case

Co-authored-by: jimingquan <mingquan.ji@vesoft.com>
  • Loading branch information
Sophie-Xie and nevermore3 authored Nov 3, 2021
1 parent e566a9d commit da6b9b5
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/graph/validator/LookupValidator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ Status LookupValidator::validateYieldEdge() {
auto yieldExpr = lookupCtx_->yieldExpr;
for (auto col : yield->columns()) {
if (ExpressionUtils::hasAny(col->expr(),
{Expression::Kind::kPathBuild, Expression::Kind::kVertex})) {
{Expression::Kind::kAggregate, Expression::Kind::kVertex})) {
return Status::SemanticError("illegal yield clauses `%s'", col->toString().c_str());
}
if (ExpressionUtils::hasAny(col->expr(), {Expression::Kind::kEdge})) {
Expand Down Expand Up @@ -136,7 +136,7 @@ Status LookupValidator::validateYieldTag() {
auto yieldExpr = lookupCtx_->yieldExpr;
for (auto col : yield->columns()) {
if (ExpressionUtils::hasAny(col->expr(),
{Expression::Kind::kPathBuild, Expression::Kind::kEdge})) {
{Expression::Kind::kAggregate, Expression::Kind::kEdge})) {
return Status::SemanticError("illegal yield clauses `%s'", col->toString().c_str());
}
if (ExpressionUtils::hasAny(col->expr(), {Expression::Kind::kVertex})) {
Expand Down
5 changes: 5 additions & 0 deletions src/graph/validator/test/LookupValidatorTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,11 @@ TEST_F(LookupValidatorTest, wrongYield) {
EXPECT_EQ(std::string(result.message()),
"SyntaxError: please add alias when using `vertex'. near `vertex'");
}
{
std::string query = "LOOKUP ON person YIELD count(*)";
auto result = checkResult(query);
EXPECT_EQ(std::string(result.message()), "SemanticError: illegal yield clauses `count(*)'");
}
{
std::string query = "LOOKUP ON person YIELD vertex as node, edge";
auto result = checkResult(query);
Expand Down
7 changes: 7 additions & 0 deletions tests/tck/features/lookup/WithYield.feature
Original file line number Diff line number Diff line change
Expand Up @@ -90,3 +90,10 @@ Feature: Lookup with yield
| "Marco Belinelli" | "Tony Parker" | 0 | 50 | [:like "Marco Belinelli"->"Tony Parker" @0 {likeness: 50}] |
| "Rajon Rondo" | "Ray Allen" | 0 | -1 | [:like "Rajon Rondo"->"Ray Allen" @0 {likeness: -1}] |
| "Ray Allen" | "Rajon Rondo" | 0 | 9 | [:like "Ray Allen"->"Rajon Rondo" @0 {likeness: 9}] |
When executing query:
"""
LOOKUP ON like WHERE like.likeness < 50 + 1 YIELD like.likeness, edge as relationship | YIELD count(*) as nums
"""
Then the result should be, in any order:
| nums |
| 6 |
8 changes: 8 additions & 0 deletions tests/tck/features/lookup/WithYield.intVid.feature
Original file line number Diff line number Diff line change
Expand Up @@ -90,3 +90,11 @@ Feature: Lookup with yield in integer vid
| "Marco Belinelli" | "Tony Parker" | 0 | 50 | [:like "Marco Belinelli"->"Tony Parker" @0 {likeness: 50}] |
| "Rajon Rondo" | "Ray Allen" | 0 | -1 | [:like "Rajon Rondo"->"Ray Allen" @0 {likeness: -1}] |
| "Ray Allen" | "Rajon Rondo" | 0 | 9 | [:like "Ray Allen"->"Rajon Rondo" @0 {likeness: 9}] |
When executing query:
"""
LOOKUP ON serve WHERE serve.start_year == 2008 and serve.end_year == 2019
YIELD serve.start_year AS startYear | YIELD count(*) as nums
"""
Then the result should be, in any order:
| nums |
| 2 |

0 comments on commit da6b9b5

Please sign in to comment.