Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
disable yield var
Browse files Browse the repository at this point in the history
czpmango committed Nov 4, 2021
1 parent 73bc825 commit 196903b
Showing 2 changed files with 33 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/parser/parser.yy
Original file line number Diff line number Diff line change
@@ -1436,9 +1436,16 @@ yield_column
delete $3;
}
| expression {
if (!graph::ExpressionUtils::collectAll($1, {Expression::Kind::kVar}).empty()) {
throw nebula::GraphParser::syntax_error(@1, "Direct output of variable is prohibited");
}
$$ = new YieldColumn($1);
}
| expression KW_AS name_label {
if (!graph::ExpressionUtils::collectAll($1, {Expression::Kind::kVar}).empty()) {
delete $3;
throw nebula::GraphParser::syntax_error(@1, "Direct output of variable is prohibited");
}
$$ = new YieldColumn($1, *$3);
delete $3;
}
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]'

0 comments on commit 196903b

Please sign in to comment.