This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 7fe14837704 Refactor constructor of RevokeStatement to empty
buildAttributes (#38358)
7fe14837704 is described below
commit 7fe148377047a6f1bd0edd73d273af15a4d9764e
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Mar 6 11:36:03 2026 +0800
Refactor constructor of RevokeStatement to empty buildAttributes (#38358)
---
.../binder/engine/statement/dcl/RevokeStatementBinder.java | 4 +---
.../visitor/statement/type/DorisDCLStatementVisitor.java | 5 +++--
.../visitor/statement/type/FirebirdDCLStatementVisitor.java | 7 ++-----
.../visitor/statement/type/MySQLDCLStatementVisitor.java | 5 +++--
.../statement/type/OpenGaussDCLStatementVisitor.java | 6 +-----
.../visitor/statement/type/OracleDCLStatementVisitor.java | 8 +++-----
.../statement/type/PostgreSQLDCLStatementVisitor.java | 6 +-----
.../visitor/statement/type/SQL92DCLStatementVisitor.java | 7 ++-----
.../statement/type/SQLServerDCLStatementVisitor.java | 13 ++++++++++---
.../statement/core/statement/type/dcl/RevokeStatement.java | 10 +++++-----
.../parser/statement/mysql/dcl/MySQLRevokeStatement.java | 5 +++--
.../statement/sqlserver/dcl/SQLServerRevokeStatement.java | 5 +++--
12 files changed, 37 insertions(+), 44 deletions(-)
diff --git
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/RevokeStatementBinder.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/RevokeStatementBinder.java
index 9324399272f..3a23a737e04 100644
---
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/RevokeStatementBinder.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/RevokeStatementBinder.java
@@ -54,10 +54,8 @@ public final class RevokeStatementBinder implements
SQLStatementBinder<RevokeSta
try {
result =
sqlStatement.getClass().getDeclaredConstructor(sqlStatement.getDatabaseType().getClass()).newInstance(sqlStatement.getDatabaseType());
} catch (final ReflectiveOperationException ex) {
- result = new RevokeStatement(sqlStatement.getDatabaseType());
+ result = new RevokeStatement(sqlStatement.getDatabaseType(),
tables);
}
- result.getTables().clear();
- result.getTables().addAll(tables);
SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
return result;
}
diff --git
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDCLStatementVisitor.java
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDCLStatementVisitor.java
index 5722cfc77b8..026381a4aa5 100644
---
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDCLStatementVisitor.java
+++
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDCLStatementVisitor.java
@@ -113,6 +113,7 @@ import
org.apache.shardingsphere.sql.parser.statement.mysql.dcl.user.MySQLCreate
import
org.apache.shardingsphere.sql.parser.statement.mysql.dcl.user.MySQLRenameUserStatement;
import
org.apache.shardingsphere.sql.parser.statement.mysql.dcl.user.MySQLSetPasswordStatement;
+import java.util.Collections;
import java.util.stream.Collectors;
/**
@@ -420,7 +421,7 @@ public final class DorisDCLStatementVisitor extends
DorisStatementVisitor implem
@Override
public ASTNode visitRevokeFrom(final RevokeFromContext ctx) {
- MySQLRevokeStatement result = new
MySQLRevokeStatement(getDatabaseType());
+ MySQLRevokeStatement result = new
MySQLRevokeStatement(getDatabaseType(), Collections.emptyList());
if (null != ctx.roleOrPrivileges()) {
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
} else if (null != ctx.ALL()) {
@@ -434,7 +435,7 @@ public final class DorisDCLStatementVisitor extends
DorisStatementVisitor implem
@Override
public ASTNode visitRevokeOnFrom(final RevokeOnFromContext ctx) {
- MySQLRevokeStatement result = new
MySQLRevokeStatement(getDatabaseType());
+ MySQLRevokeStatement result = new
MySQLRevokeStatement(getDatabaseType(), Collections.emptyList());
if (null != ctx.roleOrPrivileges()) {
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
} else if (null != ctx.ALL()) {
diff --git
a/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDCLStatementVisitor.java
b/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDCLStatementVisitor.java
index b6bf2edc56c..9182c552350 100644
---
a/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDCLStatementVisitor.java
+++
b/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDCLStatementVisitor.java
@@ -50,11 +50,8 @@ public final class FirebirdDCLStatementVisitor extends
FirebirdStatementVisitor
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- RevokeStatement result = new RevokeStatement(getDatabaseType());
- if (null != ctx.privilegeClause()) {
- result.getTables().add((SimpleTableSegment)
visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName()));
- }
- return result;
+ return new RevokeStatement(getDatabaseType(),
+ null == ctx.privilegeClause() ? Collections.emptyList() :
Collections.singleton((SimpleTableSegment)
visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName())));
}
@Override
diff --git
a/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDCLStatementVisitor.java
b/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDCLStatementVisitor.java
index 860bcf23900..aee6d93eb6e 100644
---
a/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDCLStatementVisitor.java
+++
b/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDCLStatementVisitor.java
@@ -113,6 +113,7 @@ import
org.apache.shardingsphere.sql.parser.statement.mysql.dcl.user.MySQLCreate
import
org.apache.shardingsphere.sql.parser.statement.mysql.dcl.user.MySQLRenameUserStatement;
import
org.apache.shardingsphere.sql.parser.statement.mysql.dcl.user.MySQLSetPasswordStatement;
+import java.util.Collections;
import java.util.stream.Collectors;
/**
@@ -419,7 +420,7 @@ public final class MySQLDCLStatementVisitor extends
MySQLStatementVisitor implem
@Override
public ASTNode visitRevokeFrom(final RevokeFromContext ctx) {
- MySQLRevokeStatement result = new
MySQLRevokeStatement(getDatabaseType());
+ MySQLRevokeStatement result = new
MySQLRevokeStatement(getDatabaseType(), Collections.emptyList());
if (null != ctx.roleOrPrivileges()) {
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
} else if (null != ctx.ALL()) {
@@ -433,7 +434,7 @@ public final class MySQLDCLStatementVisitor extends
MySQLStatementVisitor implem
@Override
public ASTNode visitRevokeOnFrom(final RevokeOnFromContext ctx) {
- MySQLRevokeStatement result = new
MySQLRevokeStatement(getDatabaseType());
+ MySQLRevokeStatement result = new
MySQLRevokeStatement(getDatabaseType(), Collections.emptyList());
if (null != ctx.roleOrPrivileges()) {
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
} else if (null != ctx.ALL()) {
diff --git
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.java
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.java
index 62a62229ff5..553da1fde69 100644
---
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.java
+++
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.java
@@ -60,11 +60,7 @@ public final class OpenGaussDCLStatementVisitor extends
OpenGaussStatementVisito
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- RevokeStatement result = new RevokeStatement(getDatabaseType());
- if (containsTableSegment(ctx.privilegeClause())) {
- result.getTables().addAll(getTableSegments(ctx.privilegeClause()));
- }
- return result;
+ return new RevokeStatement(getDatabaseType(),
containsTableSegment(ctx.privilegeClause()) ?
getTableSegments(ctx.privilegeClause()) : Collections.emptyList());
}
private boolean containsTableSegment(final PrivilegeClauseContext ctx) {
diff --git
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDCLStatementVisitor.java
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDCLStatementVisitor.java
index 4302a983ca8..480253903bf 100644
---
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDCLStatementVisitor.java
+++
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDCLStatementVisitor.java
@@ -61,11 +61,9 @@ public final class OracleDCLStatementVisitor extends
OracleStatementVisitor impl
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- RevokeStatement result = new RevokeStatement(getDatabaseType());
- if (null != ctx.objectPrivilegeClause() && null !=
ctx.objectPrivilegeClause().onObjectClause().tableName()) {
- result.getTables().add((SimpleTableSegment)
visit(ctx.objectPrivilegeClause().onObjectClause().tableName()));
- }
- return result;
+ return new RevokeStatement(getDatabaseType(), null !=
ctx.objectPrivilegeClause() && null !=
ctx.objectPrivilegeClause().onObjectClause().tableName()
+ ? Collections.singleton((SimpleTableSegment)
visit(ctx.objectPrivilegeClause().onObjectClause().tableName()))
+ : Collections.emptyList());
}
@Override
diff --git
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.java
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.java
index 5e468682ba7..c77cc378550 100644
---
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.java
+++
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.java
@@ -64,11 +64,7 @@ public final class PostgreSQLDCLStatementVisitor extends
PostgreSQLStatementVisi
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- RevokeStatement result = new RevokeStatement(getDatabaseType());
- if (containsTableSegment(ctx.privilegeClause())) {
- result.getTables().addAll(getTableSegments(ctx.privilegeClause()));
- }
- return result;
+ return new RevokeStatement(getDatabaseType(),
containsTableSegment(ctx.privilegeClause()) ?
getTableSegments(ctx.privilegeClause()) : Collections.emptyList());
}
private boolean containsTableSegment(final PrivilegeClauseContext ctx) {
diff --git
a/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DCLStatementVisitor.java
b/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DCLStatementVisitor.java
index ef8cab58c32..a248e945eb9 100644
---
a/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DCLStatementVisitor.java
+++
b/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DCLStatementVisitor.java
@@ -46,10 +46,7 @@ public final class SQL92DCLStatementVisitor extends
SQL92StatementVisitor implem
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- RevokeStatement result = new RevokeStatement(getDatabaseType());
- if (null != ctx.privilegeClause()) {
- result.getTables().add((SimpleTableSegment)
visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName()));
- }
- return result;
+ return new RevokeStatement(getDatabaseType(),
+ null == ctx.privilegeClause() ? Collections.emptyList() :
Collections.singleton((SimpleTableSegment)
visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName())));
}
}
diff --git
a/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java
b/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java
index 0debea44d52..995cf4ab385 100644
---
a/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java
+++
b/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java
@@ -105,17 +105,24 @@ public final class SQLServerDCLStatementVisitor extends
SQLServerStatementVisito
@SuppressWarnings("unchecked")
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- SQLServerRevokeStatement result = new
SQLServerRevokeStatement(getDatabaseType());
+ SQLServerRevokeStatement result = new
SQLServerRevokeStatement(getDatabaseType(), getTableSegments(ctx));
if (null != ctx.revokeClassPrivilegesClause()) {
-
findTableSegment(ctx.revokeClassPrivilegesClause().onClassClause(),
ctx.revokeClassPrivilegesClause().classPrivileges()).ifPresent(optional ->
result.getTables().add(optional));
if (null !=
ctx.revokeClassPrivilegesClause().classPrivileges().columnNames()) {
for (ColumnNamesContext each :
ctx.revokeClassPrivilegesClause().classPrivileges().columnNames()) {
result.getColumns().addAll(((CollectionValue<ColumnSegment>)
visit(each)).getValue());
}
}
}
+ return result;
+ }
+
+ private Collection<SimpleTableSegment> getTableSegments(final
RevokeContext ctx) {
+ Collection<SimpleTableSegment> result = new LinkedList<>();
+ if (null != ctx.revokeClassPrivilegesClause()) {
+
findTableSegment(ctx.revokeClassPrivilegesClause().onClassClause(),
ctx.revokeClassPrivilegesClause().classPrivileges()).ifPresent(result::add);
+ }
if (null != ctx.revokeClassTypePrivilegesClause()) {
-
findTableSegment(ctx.revokeClassTypePrivilegesClause().onClassTypeClause()).ifPresent(optional
-> result.getTables().add(optional));
+
findTableSegment(ctx.revokeClassTypePrivilegesClause().onClassTypeClause()).ifPresent(result::add);
}
return result;
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dcl/RevokeStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dcl/RevokeStatement.java
index a9da26205b4..070e46b702a 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dcl/RevokeStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dcl/RevokeStatement.java
@@ -24,7 +24,6 @@ import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.S
import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.TableSQLStatementAttribute;
import java.util.Collection;
-import java.util.LinkedList;
/**
* Revoke statement.
@@ -32,16 +31,17 @@ import java.util.LinkedList;
@Getter
public class RevokeStatement extends DCLStatement {
- private final Collection<SimpleTableSegment> tables = new LinkedList<>();
+ private final Collection<SimpleTableSegment> tables;
- private SQLStatementAttributes attributes;
+ private final SQLStatementAttributes attributes;
- public RevokeStatement(final DatabaseType databaseType) {
+ public RevokeStatement(final DatabaseType databaseType, final
Collection<SimpleTableSegment> tables) {
super(databaseType);
+ this.tables = tables;
+ attributes = new SQLStatementAttributes(new
TableSQLStatementAttribute(tables));
}
@Override
public void buildAttributes() {
- attributes = new SQLStatementAttributes(new
TableSQLStatementAttribute(tables));
}
}
diff --git
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dcl/MySQLRevokeStatement.java
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dcl/MySQLRevokeStatement.java
index 870af106bf0..9cce1720751 100644
---
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dcl/MySQLRevokeStatement.java
+++
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dcl/MySQLRevokeStatement.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dcl.RoleOrPrivilegeSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dcl.UserSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.GrantLevelSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.RevokeStatement;
import java.util.Collection;
@@ -47,7 +48,7 @@ public final class MySQLRevokeStatement extends
RevokeStatement {
private GrantLevelSegment level;
- public MySQLRevokeStatement(final DatabaseType databaseType) {
- super(databaseType);
+ public MySQLRevokeStatement(final DatabaseType databaseType, final
Collection<SimpleTableSegment> tables) {
+ super(databaseType, tables);
}
}
diff --git
a/parser/sql/statement/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/dcl/SQLServerRevokeStatement.java
b/parser/sql/statement/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/dcl/SQLServerRevokeStatement.java
index 649f9184ae9..3d45f9269c4 100644
---
a/parser/sql/statement/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/dcl/SQLServerRevokeStatement.java
+++
b/parser/sql/statement/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/dcl/SQLServerRevokeStatement.java
@@ -20,6 +20,7 @@ package
org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl;
import lombok.Getter;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.RevokeStatement;
import java.util.Collection;
@@ -33,7 +34,7 @@ public final class SQLServerRevokeStatement extends
RevokeStatement {
private final Collection<ColumnSegment> columns = new LinkedList<>();
- public SQLServerRevokeStatement(final DatabaseType databaseType) {
- super(databaseType);
+ public SQLServerRevokeStatement(final DatabaseType databaseType, final
Collection<SimpleTableSegment> tables) {
+ super(databaseType, tables);
}
}