You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2025/06/25 17:40:49 UTC

(shardingsphere) branch master updated: Add SQLServerSQLBindEngine (#35793)

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 f5d072cee92 Add SQLServerSQLBindEngine (#35793)
f5d072cee92 is described below

commit f5d072cee928ef304cf7e1497bf7b1ef662742d1
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Jun 26 01:40:44 2025 +0800

    Add SQLServerSQLBindEngine (#35793)
---
 .../infra/binder/engine/SQLBindEngine.java         |  5 ---
 .../SQLServerSQLStatementContextWarpProvider.java  |  4 +--
 .../sqlserver/bind/SQLServerSQLBindEngine.java}    | 36 ++++++++++++----------
 .../type/SQLServerDenyUserStatementBinder.java}    | 18 +++++------
 ...sphere.infra.binder.engine.DialectSQLBindEngine | 18 +++++++++++
 .../type/SQLServerDCLStatementVisitor.java         |  4 +--
 .../sqlserver/dcl/SQLServerDenyUserStatement.java} |  7 +++--
 .../asserts/statement/dcl/DCLStatementAssert.java  |  6 ++--
 .../dcl/impl/DenyUserStatementAssert.java          |  8 ++---
 9 files changed, 61 insertions(+), 45 deletions(-)

diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/SQLBindEngine.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/SQLBindEngine.java
index ab1eb7dc4a5..2dc07641e84 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/SQLBindEngine.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/SQLBindEngine.java
@@ -22,7 +22,6 @@ import org.apache.shardingsphere.infra.binder.context.SQLStatementContextFactory
 import org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
 import org.apache.shardingsphere.infra.binder.engine.type.DALStatementBindEngine;
-import org.apache.shardingsphere.infra.binder.engine.type.DCLStatementBindEngine;
 import org.apache.shardingsphere.infra.binder.engine.type.DDLStatementBindEngine;
 import org.apache.shardingsphere.infra.binder.engine.type.DMLStatementBindEngine;
 import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
@@ -32,7 +31,6 @@ import org.apache.shardingsphere.infra.hint.HintValueContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DALStatement;
-import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DCLStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DDLStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.DMLStatement;
 
@@ -82,9 +80,6 @@ public final class SQLBindEngine {
         if (statement instanceof DALStatement) {
             return new DALStatementBindEngine().bind((DALStatement) statement, binderContext);
         }
-        if (statement instanceof DCLStatement) {
-            return new DCLStatementBindEngine().bind((DCLStatement) statement, binderContext);
-        }
         return statement;
     }
     
diff --git a/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/SQLServerSQLStatementContextWarpProvider.java b/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/SQLServerSQLStatementContextWarpProvider.java
index a345638679c..d54d7be0778 100644
--- a/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/SQLServerSQLStatementContextWarpProvider.java
+++ b/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/SQLServerSQLStatementContextWarpProvider.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.binder.sqlserver;
 
 import org.apache.shardingsphere.infra.binder.context.DialectCommonSQLStatementContextWarpProvider;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
-import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DenyUserStatement;
+import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerDenyUserStatement;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -29,7 +29,7 @@ import java.util.Collections;
  */
 public final class SQLServerSQLStatementContextWarpProvider implements DialectCommonSQLStatementContextWarpProvider {
     
-    private static final Collection<Class<? extends SQLStatement>> NEED_TO_WARP_SQL_STATEMENT_TYPES = Collections.singleton(DenyUserStatement.class);
+    private static final Collection<Class<? extends SQLStatement>> NEED_TO_WARP_SQL_STATEMENT_TYPES = Collections.singleton(SQLServerDenyUserStatement.class);
     
     @Override
     public Collection<Class<? extends SQLStatement>> getNeedToWarpSQLStatementTypes() {
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/type/DCLStatementBindEngine.java b/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/bind/SQLServerSQLBindEngine.java
similarity index 51%
rename from infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/type/DCLStatementBindEngine.java
rename to infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/bind/SQLServerSQLBindEngine.java
index a630c5272a0..faf6009a33a 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/type/DCLStatementBindEngine.java
+++ b/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/bind/SQLServerSQLBindEngine.java
@@ -15,29 +15,31 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.binder.engine.type;
+package org.apache.shardingsphere.infra.binder.sqlserver.bind;
 
+import org.apache.shardingsphere.infra.binder.engine.DialectSQLBindEngine;
 import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
-import org.apache.shardingsphere.infra.binder.engine.statement.dcl.DenyUserStatementBinder;
-import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DCLStatement;
-import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DenyUserStatement;
+import org.apache.shardingsphere.infra.binder.sqlserver.bind.type.SQLServerDenyUserStatementBinder;
+import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerDenyUserStatement;
+
+import java.util.Optional;
 
 /**
- * DCL statement bind engine.
+ * SQL bind engine for SQLServer.
  */
-public final class DCLStatementBindEngine {
+public final class SQLServerSQLBindEngine implements DialectSQLBindEngine {
     
-    /**
-     * Bind DCL statement.
-     *
-     * @param statement to be bound DCL statement
-     * @param binderContext binder context
-     * @return bound DCL statement
-     */
-    public DCLStatement bind(final DCLStatement statement, final SQLStatementBinderContext binderContext) {
-        if (statement instanceof DenyUserStatement) {
-            return new DenyUserStatementBinder().bind((DenyUserStatement) statement, binderContext);
+    @Override
+    public Optional<SQLStatement> bind(final SQLStatement sqlStatement, final SQLStatementBinderContext binderContext) {
+        if (sqlStatement instanceof SQLServerDenyUserStatement) {
+            return Optional.of(new SQLServerDenyUserStatementBinder().bind((SQLServerDenyUserStatement) sqlStatement, binderContext));
         }
-        return statement;
+        return Optional.empty();
+    }
+    
+    @Override
+    public String getDatabaseType() {
+        return "SQLServer";
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/DenyUserStatementBinder.java b/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/bind/type/SQLServerDenyUserStatementBinder.java
similarity index 74%
rename from infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/DenyUserStatementBinder.java
rename to infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/bind/type/SQLServerDenyUserStatementBinder.java
index d3b528e55fc..35b21ac6c63 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/DenyUserStatementBinder.java
+++ b/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/bind/type/SQLServerDenyUserStatementBinder.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.binder.engine.statement.dcl;
+package org.apache.shardingsphere.infra.binder.sqlserver.bind.type;
 
 import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
 import com.google.common.collect.LinkedHashMultimap;
@@ -29,27 +29,27 @@ import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinde
 import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
 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.DenyUserStatement;
+import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerDenyUserStatement;
 
 import java.util.Collection;
 import java.util.stream.Collectors;
 
 /**
- * Deny user statement binder.
+ * Deny user statement binder for SQLServer.
  */
-public final class DenyUserStatementBinder implements SQLStatementBinder<DenyUserStatement> {
+public final class SQLServerDenyUserStatementBinder implements SQLStatementBinder<SQLServerDenyUserStatement> {
     
     @Override
-    public DenyUserStatement bind(final DenyUserStatement sqlStatement, final SQLStatementBinderContext binderContext) {
+    public SQLServerDenyUserStatement bind(final SQLServerDenyUserStatement sqlStatement, final SQLStatementBinderContext binderContext) {
         Multimap<CaseInsensitiveString, TableSegmentBinderContext> tableBinderContexts = LinkedHashMultimap.create();
         SimpleTableSegment boundTable = SimpleTableSegmentBinder.bind(sqlStatement.getTable(), binderContext, tableBinderContexts);
-        Collection<ColumnSegment> columns = sqlStatement.getColumns().stream()
+        Collection<ColumnSegment> boundColumns = sqlStatement.getColumns().stream()
                 .map(each -> ColumnSegmentBinder.bind(each, SegmentType.DEFINITION_COLUMNS, binderContext, tableBinderContexts, LinkedHashMultimap.create())).collect(Collectors.toList());
-        return copy(sqlStatement, boundTable, columns);
+        return copy(sqlStatement, boundTable, boundColumns);
     }
     
-    private DenyUserStatement copy(final DenyUserStatement sqlStatement, final SimpleTableSegment boundTable, final Collection<ColumnSegment> boundColumns) {
-        DenyUserStatement result = new DenyUserStatement();
+    private SQLServerDenyUserStatement copy(final SQLServerDenyUserStatement sqlStatement, final SimpleTableSegment boundTable, final Collection<ColumnSegment> boundColumns) {
+        SQLServerDenyUserStatement result = new SQLServerDenyUserStatement();
         result.setTable(boundTable);
         sqlStatement.getColumns().addAll(boundColumns);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
diff --git a/infra/binder/dialect/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.engine.DialectSQLBindEngine b/infra/binder/dialect/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.engine.DialectSQLBindEngine
new file mode 100644
index 00000000000..15c8785559a
--- /dev/null
+++ b/infra/binder/dialect/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.engine.DialectSQLBindEngine
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.shardingsphere.infra.binder.sqlserver.bind.SQLServerSQLBindEngine
diff --git a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java
index 7ba0686f861..ef87c16d071 100644
--- a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java
+++ b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java
@@ -53,7 +53,6 @@ import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.AlterRoleStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.CreateRoleStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.CreateUserStatement;
-import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DenyUserStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DropRoleStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DropUserStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.RevertStatement;
@@ -63,6 +62,7 @@ import org.apache.shardingsphere.sql.parser.statement.core.value.literal.impl.St
 import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerAlterLoginStatement;
 import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerAlterUserStatement;
 import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerCreateLoginStatement;
+import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerDenyUserStatement;
 import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerDropLoginStatement;
 import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerGrantStatement;
 import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerRevokeStatement;
@@ -180,7 +180,7 @@ public final class SQLServerDCLStatementVisitor extends SQLServerStatementVisito
     
     @Override
     public ASTNode visitDeny(final DenyContext ctx) {
-        DenyUserStatement result = new DenyUserStatement();
+        SQLServerDenyUserStatement result = new SQLServerDenyUserStatement();
         if (null != ctx.denyClassPrivilegesClause()) {
             findTableSegment(ctx.denyClassPrivilegesClause().onClassClause(), ctx.denyClassPrivilegesClause().classPrivileges()).ifPresent(result::setTable);
             if (null != ctx.denyClassPrivilegesClause().classPrivileges().columnNames()) {
diff --git a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dcl/DenyUserStatement.java b/parser/sql/statement/type/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/dcl/SQLServerDenyUserStatement.java
similarity index 85%
rename from parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dcl/DenyUserStatement.java
rename to parser/sql/statement/type/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/dcl/SQLServerDenyUserStatement.java
index 6cc3a752b5b..5a91ed73d0f 100644
--- a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dcl/DenyUserStatement.java
+++ b/parser/sql/statement/type/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/dcl/SQLServerDenyUserStatement.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl;
+package org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -23,16 +23,17 @@ import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.Co
 import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.TableSQLStatementAttribute;
+import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DCLStatement;
 
 import java.util.Collection;
 import java.util.LinkedList;
 
 /**
- * Deny user statement.
+ * Deny user statement for SQLServer.
  */
 @Getter
 @Setter
-public final class DenyUserStatement extends DCLStatement {
+public final class SQLServerDenyUserStatement extends DCLStatement {
     
     private SimpleTableSegment table;
     
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/DCLStatementAssert.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/DCLStatementAssert.java
index 856e8f0f0a3..e8925c85eeb 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/DCLStatementAssert.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/DCLStatementAssert.java
@@ -24,7 +24,6 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.Al
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.CreateRoleStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.CreateUserStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DCLStatement;
-import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DenyUserStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DropRoleStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DropUserStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.GrantStatement;
@@ -36,6 +35,7 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.Se
 import org.apache.shardingsphere.sql.parser.statement.postgresql.dcl.PostgreSQLReassignOwnedStatement;
 import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerAlterLoginStatement;
 import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerCreateLoginStatement;
+import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerDenyUserStatement;
 import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerDropLoginStatement;
 import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerSetUserStatement;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
@@ -103,8 +103,8 @@ public final class DCLStatementAssert {
             DropUserStatementAssert.assertIs(assertContext, (DropUserStatement) actual, (DropUserStatementTestCase) expected);
         } else if (actual instanceof RenameUserStatement) {
             RenameUserStatementAssert.assertIs(assertContext, (RenameUserStatement) actual, (RenameUserStatementTestCase) expected);
-        } else if (actual instanceof DenyUserStatement) {
-            DenyUserStatementAssert.assertIs(assertContext, (DenyUserStatement) actual, (DenyUserStatementTestCase) expected);
+        } else if (actual instanceof SQLServerDenyUserStatement) {
+            DenyUserStatementAssert.assertIs(assertContext, (SQLServerDenyUserStatement) actual, (DenyUserStatementTestCase) expected);
         } else if (actual instanceof SQLServerCreateLoginStatement) {
             SQLServerCreateLoginStatementAssert.assertIs(assertContext, (SQLServerCreateLoginStatement) actual, (CreateLoginStatementTestCase) expected);
         } else if (actual instanceof SQLServerAlterLoginStatement) {
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/impl/DenyUserStatementAssert.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/impl/DenyUserStatementAssert.java
index a92ec9650eb..0875ed5e24b 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/impl/DenyUserStatementAssert.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/impl/DenyUserStatementAssert.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.DenyUserStatement;
+import org.apache.shardingsphere.sql.parser.statement.sqlserver.dcl.SQLServerDenyUserStatement;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.column.ColumnAssert;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.table.TableAssert;
@@ -42,12 +42,12 @@ public final class DenyUserStatementAssert {
      * @param actual actual deny user statement
      * @param expected expected deny user statement test case
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, final DenyUserStatement actual, final DenyUserStatementTestCase expected) {
+    public static void assertIs(final SQLCaseAssertContext assertContext, final SQLServerDenyUserStatement actual, final DenyUserStatementTestCase expected) {
         assertTable(assertContext, actual, expected);
         assertColumns(assertContext, actual, expected);
     }
     
-    private static void assertTable(final SQLCaseAssertContext assertContext, final DenyUserStatement actual, final DenyUserStatementTestCase expected) {
+    private static void assertTable(final SQLCaseAssertContext assertContext, final SQLServerDenyUserStatement actual, final DenyUserStatementTestCase expected) {
         if (null == expected.getTable()) {
             assertNull(actual.getTable(), assertContext.getText("Actual table segment should not exist."));
         } else {
@@ -56,7 +56,7 @@ public final class DenyUserStatementAssert {
         }
     }
     
-    private static void assertColumns(final SQLCaseAssertContext assertContext, final DenyUserStatement actual, final DenyUserStatementTestCase expected) {
+    private static void assertColumns(final SQLCaseAssertContext assertContext, final SQLServerDenyUserStatement actual, final DenyUserStatementTestCase expected) {
         if (expected.getColumns().isEmpty()) {
             assertTrue(actual.getColumns().isEmpty(), assertContext.getText("Actual columns segments should not exist."));
         } else {