Skip to content

Commit

Permalink
disable yield var
Browse files Browse the repository at this point in the history
fix tck
  • Loading branch information
czpmango committed Nov 9, 2021
1 parent 219d000 commit 28b89b6
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 2 deletions.
17 changes: 17 additions & 0 deletions src/parser/parser.yy
Original file line number Diff line number Diff line change
Expand Up @@ -1436,9 +1436,26 @@ yield_column
delete $3;
}
| expression {
auto vars = graph::ExpressionUtils::collectAll($1, {Expression::Kind::kVar});
if (!vars.empty()) {
for (auto* var : vars) {
if (!static_cast<const VariableExpression*>(var)->isInner()) {
throw nebula::GraphParser::syntax_error(@1, "Direct output of variable is prohibited");
}
}
}
$$ = new YieldColumn($1);
}
| expression KW_AS name_label {
auto vars = graph::ExpressionUtils::collectAll($1, {Expression::Kind::kVar});
if (!vars.empty()) {
for (auto* var : vars) {
if (!static_cast<const VariableExpression*>(var)->isInner()) {
delete $3;
throw nebula::GraphParser::syntax_error(@1, "Direct output of variable is prohibited");
}
}
}
$$ = new YieldColumn($1, *$3);
delete $3;
}
Expand Down
26 changes: 26 additions & 0 deletions tests/tck/features/bugfix/VariableExpression.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Copyright (c) 2021 vesoft inc. All rights reserved.
#
# This source code is licensed under Apache 2.0 License,
# attached with Common Clause Condition 1.0, found in the LICENSES directory.
Feature: Variable usage

Background:
Given a graph with space named "nba"

Scenario: disable yield $var
When executing query:
"""
$var = yield 1;$var2 = yield 3;yield $var1 + $var2
"""
Then a SyntaxError should be raised at runtime: Direct output of variable is prohibited near `$var1 + $var2'
When executing query:
"""
$var=go from "Tim Duncan" over like yield like._dst as dst;yield $var
"""
Then a SyntaxError should be raised at runtime: Direct output of variable is prohibited near `$var'
Then drop the used space
When executing query:
"""
$var=go from "Tim Duncan" over like yield like._dst as dst;yield $var[0][0]
"""
Then a SyntaxError should be raised at runtime: Direct output of variable is prohibited near `$var[0][0]'
2 changes: 1 addition & 1 deletion tests/tck/features/go/GroupbyLimit.IntVid.feature
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Feature: Groupby & limit Sentence
"""
GO FROM hash("Marco Belinelli") OVER serve YIELD $$.team.name AS name | GROUP BY $-.start_year YIELD COUNT($var)
"""
Then a SemanticError should be raised at runtime:
Then a SyntaxError should be raised at runtime:

Scenario: Syntax test4
When executing query:
Expand Down
2 changes: 1 addition & 1 deletion tests/tck/features/go/GroupbyLimit.feature
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Feature: Groupby & limit Sentence
"""
GO FROM "Marco Belinelli" OVER serve YIELD $$.team.name AS name | GROUP BY $-.start_year YIELD COUNT($var)
"""
Then a SemanticError should be raised at runtime:
Then a SyntaxError should be raised at runtime:

Scenario: Syntax test4
When executing query:
Expand Down

0 comments on commit 28b89b6

Please sign in to comment.