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 1cf6912f2c4 Refactor constructor of GrantStatement to empty 
buildAttributes (#38335)
1cf6912f2c4 is described below

commit 1cf6912f2c4f0dedcd03d296da931bdbf5834edd
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Mar 4 16:40:56 2026 +0800

    Refactor constructor of GrantStatement to empty buildAttributes (#38335)
    
    * Refactor constructor of GrantStatement to empty buildAttributes
    
    * Refactor constructor of GrantStatement to empty buildAttributes
    
    * Refactor constructor of GrantStatement to empty buildAttributes
---
 .../route/engine/type/ShardingRouteEngineFactoryTest.java   |  6 ++----
 .../binder/engine/statement/dcl/GrantStatementBinder.java   | 11 +++--------
 .../engine/statement/dcl/GrantStatementBinderTest.java      | 10 ++++------
 .../visitor/statement/type/FirebirdDCLStatementVisitor.java |  9 ++++-----
 .../statement/type/OpenGaussDCLStatementVisitor.java        |  6 +-----
 .../visitor/statement/type/OracleDCLStatementVisitor.java   |  8 +++-----
 .../statement/type/PostgreSQLDCLStatementVisitor.java       |  6 +-----
 .../visitor/statement/type/SQL92DCLStatementVisitor.java    |  9 ++++-----
 .../statement/type/SQLServerDCLStatementVisitor.java        | 13 ++++++++-----
 .../statement/core/statement/type/dcl/GrantStatement.java   | 10 +++++-----
 .../sql/parser/statement/mysql/dcl/MySQLGrantStatement.java |  3 ++-
 .../statement/sqlserver/dcl/SQLServerGrantStatement.java    | 11 ++++++-----
 .../dcl/dialect/mysql/type/MySQLGrantStatementAssert.java   |  2 +-
 13 files changed, 44 insertions(+), 60 deletions(-)

diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
index 1d36fe5ec24..3ee42748089 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
@@ -132,10 +132,8 @@ class ShardingRouteEngineFactoryTest {
     
     @Test
     void assertNewInstanceForDCLForSingleTable() {
-        GrantStatement sqlStatement = new GrantStatement(databaseType);
-        sqlStatement.getTables().add(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("tbl"))));
-        sqlStatement.buildAttributes();
-        SQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(sqlStatement);
+        SQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(
+                new GrantStatement(databaseType, Collections.singleton(new 
SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("tbl"))))));
         QueryContext queryContext = new QueryContext(sqlStatementContext, "", 
Collections.emptyList(), new HintValueContext(), mockConnectionContext(), 
mock(ShardingSphereMetaData.class));
         ShardingRouteEngine actual = 
ShardingRouteEngineFactory.newInstance(shardingRule, database, queryContext, 
shardingConditions, Collections.singletonList("tbl"), props);
         assertThat(actual, isA(ShardingTableBroadcastRouteEngine.class));
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/GrantStatementBinder.java
 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/GrantStatementBinder.java
index 28c988b982f..284d494dfe5 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/GrantStatementBinder.java
+++ 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/GrantStatementBinder.java
@@ -28,8 +28,8 @@ import 
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyU
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.GrantStatement;
 
-import java.util.ArrayList;
 import java.util.Collection;
+import java.util.stream.Collectors;
 
 /**
  * Grant statement binder.
@@ -43,19 +43,14 @@ public final class GrantStatementBinder implements 
SQLStatementBinder<GrantState
             return sqlStatement;
         }
         Multimap<CaseInsensitiveString, TableSegmentBinderContext> 
tableBinderContexts = LinkedHashMultimap.create();
-        Collection<SimpleTableSegment> boundTables = new ArrayList<>();
-        for (SimpleTableSegment each : tables) {
-            boundTables.add(SimpleTableSegmentBinder.bind(each, binderContext, 
tableBinderContexts));
-        }
-        return copyGrantStatement(sqlStatement, boundTables);
+        return copyGrantStatement(sqlStatement, tables.stream().map(each -> 
SimpleTableSegmentBinder.bind(each, binderContext, 
tableBinderContexts)).collect(Collectors.toList()));
     }
     
     private GrantStatement copyGrantStatement(final GrantStatement 
sqlStatement, final Collection<SimpleTableSegment> tables) {
         if (tables.equals(sqlStatement.getTables())) {
             return sqlStatement;
         }
-        GrantStatement result = new 
GrantStatement(sqlStatement.getDatabaseType());
-        result.getTables().addAll(tables);
+        GrantStatement result = new 
GrantStatement(sqlStatement.getDatabaseType(), tables);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
         return result;
     }
diff --git 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/GrantStatementBinderTest.java
 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/GrantStatementBinderTest.java
index b2982a024a3..e5035538100 100644
--- 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/GrantStatementBinderTest.java
+++ 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/GrantStatementBinderTest.java
@@ -39,6 +39,7 @@ import java.util.Collections;
 
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(MockitoExtension.class)
@@ -69,9 +70,7 @@ class GrantStatementBinderTest {
         when(table.getAllColumns()).thenReturn(Collections.emptyList());
         HintValueContext hintValueContext = new HintValueContext();
         hintValueContext.setSkipMetadataValidate(true);
-        SimpleTableSegment tableSegment = new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("test_table")));
-        GrantStatement original = new GrantStatement(databaseType);
-        original.getTables().add(tableSegment);
+        GrantStatement original = new GrantStatement(databaseType, 
Collections.singleton(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("test_table")))));
         SQLStatementBinderContext binderContext = new 
SQLStatementBinderContext(metaData, "foo_db", hintValueContext, original);
         GrantStatement actual = new GrantStatementBinder().bind(original, 
binderContext);
         Collection<SimpleTableSegment> actualTables = actual.getTables();
@@ -81,12 +80,11 @@ class GrantStatementBinderTest {
     
     @Test
     void assertBindWithEmptyTables() {
-        GrantStatement original = new GrantStatement(databaseType);
+        GrantStatement original = new GrantStatement(databaseType, 
Collections.emptyList());
         HintValueContext hintValueContext = new HintValueContext();
         hintValueContext.setSkipMetadataValidate(true);
         SQLStatementBinderContext binderContext = new 
SQLStatementBinderContext(metaData, "foo_db", hintValueContext, original);
         GrantStatement actual = new GrantStatementBinder().bind(original, 
binderContext);
-        Collection<SimpleTableSegment> actualTables = actual.getTables();
-        assertThat(actualTables.size(), is(0));
+        assertTrue(actual.getTables().isEmpty());
     }
 }
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 e43b2eacbe1..b6bf2edc56c 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
@@ -31,6 +31,8 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.Re
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.role.CreateRoleStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.user.CreateUserStatement;
 
+import java.util.Collections;
+
 /**
  * DCL statement visitor for Firebird.
  */
@@ -42,11 +44,8 @@ public final class FirebirdDCLStatementVisitor extends 
FirebirdStatementVisitor
     
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
-        GrantStatement result = new GrantStatement(getDatabaseType());
-        if (null != ctx.privilegeClause()) {
-            result.getTables().add((SimpleTableSegment) 
visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName()));
-        }
-        return result;
+        return new GrantStatement(getDatabaseType(),
+                null == ctx.privilegeClause() ? Collections.emptyList() : 
Collections.singleton((SimpleTableSegment) 
visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName())));
     }
     
     @Override
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 10de7e21149..62a62229ff5 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
@@ -55,11 +55,7 @@ public final class OpenGaussDCLStatementVisitor extends 
OpenGaussStatementVisito
     
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
-        GrantStatement result = new GrantStatement(getDatabaseType());
-        if (containsTableSegment(ctx.privilegeClause())) {
-            result.getTables().addAll(getTableSegments(ctx.privilegeClause()));
-        }
-        return result;
+        return new GrantStatement(getDatabaseType(), 
containsTableSegment(ctx.privilegeClause()) ? 
getTableSegments(ctx.privilegeClause()) : Collections.emptyList());
     }
     
     @Override
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 900e7cdbdf4..4302a983ca8 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
@@ -54,11 +54,9 @@ public final class OracleDCLStatementVisitor extends 
OracleStatementVisitor impl
     
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
-        GrantStatement result = new GrantStatement(getDatabaseType());
-        if (null != ctx.objectPrivilegeClause() && null != 
ctx.objectPrivilegeClause().onObjectClause().tableName()) {
-            result.getTables().add((SimpleTableSegment) 
visit(ctx.objectPrivilegeClause().onObjectClause().tableName()));
-        }
-        return result;
+        return new GrantStatement(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 af322cdc87c..5e468682ba7 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
@@ -59,11 +59,7 @@ public final class PostgreSQLDCLStatementVisitor extends 
PostgreSQLStatementVisi
     
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
-        GrantStatement result = new GrantStatement(getDatabaseType());
-        if (containsTableSegment(ctx.privilegeClause())) {
-            result.getTables().addAll(getTableSegments(ctx.privilegeClause()));
-        }
-        return result;
+        return new GrantStatement(getDatabaseType(), 
containsTableSegment(ctx.privilegeClause()) ? 
getTableSegments(ctx.privilegeClause()) : Collections.emptyList());
     }
     
     @Override
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 99ff0bfd6cb..ef8cab58c32 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
@@ -27,6 +27,8 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.GrantStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.RevokeStatement;
 
+import java.util.Collections;
+
 /**
  * DCL statement visitor for SQL92.
  */
@@ -38,11 +40,8 @@ public final class SQL92DCLStatementVisitor extends 
SQL92StatementVisitor implem
     
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
-        GrantStatement result = new GrantStatement(getDatabaseType());
-        if (null != ctx.privilegeClause()) {
-            result.getTables().add((SimpleTableSegment) 
visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName()));
-        }
-        return result;
+        return new GrantStatement(getDatabaseType(),
+                null == ctx.privilegeClause() ? Collections.emptyList() : 
Collections.singleton((SimpleTableSegment) 
visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName())));
     }
     
     @Override
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 e0cfa4875fc..8c131a2261b 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
@@ -69,7 +69,9 @@ import 
org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.login.SQLSer
 import 
org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.user.SQLServerDenyUserStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.user.SQLServerSetUserStatement;
 
+import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedList;
 import java.util.Optional;
 
 /**
@@ -84,19 +86,20 @@ public final class SQLServerDCLStatementVisitor extends 
SQLServerStatementVisito
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitGrant(final GrantContext ctx) {
-        SQLServerGrantStatement result = new 
SQLServerGrantStatement(getDatabaseType());
+        Collection<SimpleTableSegment> tables = new LinkedList<>();
+        Collection<ColumnSegment> columns = new LinkedList<>();
         if (null != ctx.grantClassPrivilegesClause()) {
-            findTableSegment(ctx.grantClassPrivilegesClause().onClassClause(), 
ctx.grantClassPrivilegesClause().classPrivileges()).ifPresent(optional -> 
result.getTables().add(optional));
+            findTableSegment(ctx.grantClassPrivilegesClause().onClassClause(), 
ctx.grantClassPrivilegesClause().classPrivileges()).ifPresent(tables::add);
             if (null != 
ctx.grantClassPrivilegesClause().classPrivileges().columnNames()) {
                 for (ColumnNamesContext each : 
ctx.grantClassPrivilegesClause().classPrivileges().columnNames()) {
-                    
result.getColumns().addAll(((CollectionValue<ColumnSegment>) 
visit(each)).getValue());
+                    columns.addAll(((CollectionValue<ColumnSegment>) 
visit(each)).getValue());
                 }
             }
         }
         if (null != ctx.grantClassTypePrivilegesClause()) {
-            
findTableSegment(ctx.grantClassTypePrivilegesClause().onClassTypeClause()).ifPresent(optional
 -> result.getTables().add(optional));
+            
findTableSegment(ctx.grantClassTypePrivilegesClause().onClassTypeClause()).ifPresent(tables::add);
         }
-        return result;
+        return new SQLServerGrantStatement(getDatabaseType(), tables, columns);
     }
     
     @SuppressWarnings("unchecked")
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dcl/GrantStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dcl/GrantStatement.java
index 618e899cabd..c6c132bb17d 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dcl/GrantStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dcl/GrantStatement.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;
 
 /**
  * Grant statement.
@@ -32,16 +31,17 @@ import java.util.LinkedList;
 @Getter
 public class GrantStatement extends DCLStatement {
     
-    private final Collection<SimpleTableSegment> tables = new LinkedList<>();
+    private final Collection<SimpleTableSegment> tables;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
-    public GrantStatement(final DatabaseType databaseType) {
+    public GrantStatement(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/MySQLGrantStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dcl/MySQLGrantStatement.java
index 5cdeee08dfb..f19be150f33 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dcl/MySQLGrantStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dcl/MySQLGrantStatement.java
@@ -26,6 +26,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.Grant
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.GrantStatement;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.LinkedList;
 
 /**
@@ -46,6 +47,6 @@ public final class MySQLGrantStatement extends GrantStatement 
{
     private GrantLevelSegment level;
     
     public MySQLGrantStatement(final DatabaseType databaseType) {
-        super(databaseType);
+        super(databaseType, Collections.emptyList());
     }
 }
diff --git 
a/parser/sql/statement/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/dcl/SQLServerGrantStatement.java
 
b/parser/sql/statement/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/dcl/SQLServerGrantStatement.java
index 17a83110f7f..e57e1cb1e79 100644
--- 
a/parser/sql/statement/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/dcl/SQLServerGrantStatement.java
+++ 
b/parser/sql/statement/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/dcl/SQLServerGrantStatement.java
@@ -20,10 +20,10 @@ 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.GrantStatement;
 
-import java.util.LinkedList;
-import java.util.List;
+import java.util.Collection;
 
 /**
  * Grant statement for SQLServer.
@@ -31,9 +31,10 @@ import java.util.List;
 @Getter
 public final class SQLServerGrantStatement extends GrantStatement {
     
-    private final List<ColumnSegment> columns = new LinkedList<>();
+    private final Collection<ColumnSegment> columns;
     
-    public SQLServerGrantStatement(final DatabaseType databaseType) {
-        super(databaseType);
+    public SQLServerGrantStatement(final DatabaseType databaseType, final 
Collection<SimpleTableSegment> tables, final Collection<ColumnSegment> columns) 
{
+        super(databaseType, tables);
+        this.columns = columns;
     }
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/dialect/mysql/type/MySQLGrantStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/dialect/mysql/type/MySQLGrantStatementAssert.java
index a8d8c67fa98..21ca455c487 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/dialect/mysql/type/MySQLGrantStatementAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/dialect/mysql/type/MySQLGrantStatementAssert.java
@@ -43,7 +43,7 @@ public final class MySQLGrantStatementAssert {
      * @param expected expected grant statement test case
      */
     public static void assertIs(final SQLCaseAssertContext assertContext, 
final MySQLGrantStatement actual, final GrantStatementTestCase expected) {
-        if (null == expected.getTables() || expected.getTables().isEmpty()) {
+        if (expected.getTables().isEmpty()) {
             assertThat(assertContext.getText("Actual table should not 
exist."), actual.getTables(), is(Collections.emptyList()));
         } else {
             assertThat(expected.getTables().size(), is(1));

Reply via email to