提交 a3302ef0 编写于 作者: T tianbin1001 提交者: GitHub

grant visitor optimize (#4214)

上级 1994e188
......@@ -20,18 +20,18 @@ grammar DCLStatement;
import Symbol, Keyword, MySQLKeyword, Literals, BaseRule;
grant
: GRANT (proxyClause_ | privilegeClause_ | roleClause_)
: GRANT (proxyClause_ | privilegeClause | roleClause_)
;
revoke
: REVOKE (proxyClause_ | privilegeClause_ | allClause_ | roleClause_)
: REVOKE (proxyClause_ | privilegeClause | allClause_ | roleClause_)
;
proxyClause_
: PROXY ON userOrRole TO userOrRoles_ withGrantOption_?
;
privilegeClause_
privilegeClause
: privileges_ ON onObjectClause_ (TO | FROM) userOrRoles_ withGrantOption_? grantOption_?
;
......@@ -94,14 +94,14 @@ privilegeType_
;
onObjectClause_
: objectType_? privilegeLevel_
: objectType_? privilegeLevel
;
objectType_
: TABLE | FUNCTION | PROCEDURE
;
privilegeLevel_
privilegeLevel
: ASTERISK_ | ASTERISK_ DOT_ASTERISK_ | identifier DOT_ASTERISK_ | tableName
;
......
......@@ -24,8 +24,8 @@ import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.CreateU
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.DropRoleContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.DropUserContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.GrantContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.PrivilegeClause_Context;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.PrivilegeLevel_Context;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.PrivilegeClauseContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.PrivilegeLevelContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.RenameUserContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.SetDefaultRoleContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.SetPasswordContext;
......@@ -93,9 +93,9 @@ public final class MySQLDCLVisitor extends MySQLVisitor {
@Override
public ASTNode visitGrant(final GrantContext ctx) {
GrantStatement result = new GrantStatement();
PrivilegeClause_Context privilegeClause = ctx.privilegeClause_();
PrivilegeClauseContext privilegeClause = ctx.privilegeClause();
if (null != privilegeClause && null != privilegeClause.onObjectClause_()) {
PrivilegeLevel_Context privilegeLevel = privilegeClause.onObjectClause_().privilegeLevel_();
PrivilegeLevelContext privilegeLevel = privilegeClause.onObjectClause_().privilegeLevel();
TableNameContext tableNameContext = privilegeLevel.tableName();
if (null != tableNameContext) {
TableSegment tableSegment = (TableSegment) visitTableName(tableNameContext);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册