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);
     }
 }

Reply via email to