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/07/05 12:31:28 UTC

(shardingsphere) branch master updated: Add database type setter on Statement binder (#35897)

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 bf3fe6538bf Add database type setter on Statement binder (#35897)
bf3fe6538bf is described below

commit bf3fe6538bf180d115980d269c59ceab3ea72069
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sat Jul 5 20:31:22 2025 +0800

    Add database type setter on Statement binder (#35897)
---
 .../infra/binder/engine/statement/dal/ExplainStatementBinder.java        | 1 +
 .../infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java     | 1 +
 .../infra/binder/engine/statement/ddl/AlterTableStatementBinder.java     | 1 +
 .../infra/binder/engine/statement/ddl/AlterViewStatementBinder.java      | 1 +
 .../infra/binder/engine/statement/ddl/CreateIndexStatementBinder.java    | 1 +
 .../infra/binder/engine/statement/ddl/CreateTableStatementBinder.java    | 1 +
 .../infra/binder/engine/statement/ddl/CreateViewStatementBinder.java     | 1 +
 .../infra/binder/engine/statement/ddl/CursorStatementBinder.java         | 1 +
 .../infra/binder/engine/statement/ddl/DropIndexStatementBinder.java      | 1 +
 .../infra/binder/engine/statement/ddl/DropTableStatementBinder.java      | 1 +
 .../infra/binder/engine/statement/ddl/DropViewStatementBinder.java       | 1 +
 .../infra/binder/engine/statement/ddl/RenameTableStatementBinder.java    | 1 +
 .../infra/binder/engine/statement/ddl/TruncateStatementBinder.java       | 1 +
 .../infra/binder/engine/statement/dml/DeleteStatementBinder.java         | 1 +
 .../infra/binder/engine/statement/dml/InsertStatementBinder.java         | 1 +
 .../infra/binder/engine/statement/dml/SelectStatementBinder.java         | 1 +
 .../infra/binder/engine/statement/dml/UpdateStatementBinder.java         | 1 +
 .../infra/binder/mysql/bind/type/MySQLLoadDataStatementBinder.java       | 1 +
 .../infra/binder/mysql/bind/type/MySQLLoadXMLStatementBinder.java        | 1 +
 .../infra/binder/mysql/bind/type/MySQLOptimizeTableStatementBinder.java  | 1 +
 .../infra/binder/mysql/bind/type/MySQLShowColumnsStatementBinder.java    | 1 +
 .../binder/mysql/bind/type/MySQLShowCreateTableStatementBinder.java      | 1 +
 .../infra/binder/mysql/bind/type/MySQLShowIndexStatementBinder.java      | 1 +
 .../infra/binder/postgresql/bind/type/PostgreSQLCopyStatementBinder.java | 1 +
 .../binder/sqlserver/bind/type/SQLServerDenyUserStatementBinder.java     | 1 +
 25 files changed, 25 insertions(+)

diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ExplainStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ExplainStatementBinder.java
index a7bbff20f28..942051ec8fb 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ExplainStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ExplainStatementBinder.java
@@ -41,6 +41,7 @@ public final class ExplainStatementBinder implements SQLStatementBinder<ExplainS
     private ExplainStatement copy(final ExplainStatement sqlStatement, final SQLStatement boundSQLStatement) {
         ExplainStatement result = new ExplainStatement(boundSQLStatement);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
index a59b5c81679..63325369638 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
@@ -45,6 +45,7 @@ public final class AlterIndexStatementBinder implements SQLStatementBinder<Alter
         sqlStatement.getRenameIndex().ifPresent(result::setRenameIndex);
         result.setSimpleTable(boundTable);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterTableStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterTableStatementBinder.java
index 5f79aa38ce1..f6419f3cbc4 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterTableStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterTableStatementBinder.java
@@ -60,6 +60,7 @@ public final class AlterTableStatementBinder implements SQLStatementBinder<Alter
         result.getRenameIndexDefinitions().addAll(sqlStatement.getRenameIndexDefinitions());
         sqlStatement.getModifyCollectionRetrieval().ifPresent(result::setModifyCollectionRetrieval);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterViewStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterViewStatementBinder.java
index 4859b568c39..4281ab1f2b4 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterViewStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterViewStatementBinder.java
@@ -52,6 +52,7 @@ public final class AlterViewStatementBinder implements SQLStatementBinder<AlterV
         sqlStatement.getViewDefinition().ifPresent(result::setViewDefinition);
         sqlStatement.getConstraintDefinition().ifPresent(result::setConstraintDefinition);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateIndexStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateIndexStatementBinder.java
index 1c9b4596189..1eff4640fd3 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateIndexStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateIndexStatementBinder.java
@@ -58,6 +58,7 @@ public final class CreateIndexStatementBinder implements SQLStatementBinder<Crea
         sqlStatement.getAlgorithmType().ifPresent(result::setAlgorithmType);
         sqlStatement.getLockTable().ifPresent(result::setLockTable);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateTableStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateTableStatementBinder.java
index ff76a5023be..1b45d6d6585 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateTableStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateTableStatementBinder.java
@@ -63,6 +63,7 @@ public final class CreateTableStatementBinder implements SQLStatementBinder<Crea
         sqlStatement.getLikeTable().ifPresent(result::setLikeTable);
         sqlStatement.getCreateTableOption().ifPresent(result::setCreateTableOption);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateViewStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateViewStatementBinder.java
index 5719ab6c082..795d7168221 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateViewStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateViewStatementBinder.java
@@ -46,6 +46,7 @@ public final class CreateViewStatementBinder implements SQLStatementBinder<Creat
         result.setReplaceView(sqlStatement.isReplaceView());
         result.setViewDefinition(sqlStatement.getViewDefinition());
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CursorStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CursorStatementBinder.java
index 008d93e164d..07471077718 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CursorStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CursorStatementBinder.java
@@ -37,6 +37,7 @@ public final class CursorStatementBinder implements SQLStatementBinder<CursorSta
     private CursorStatement copy(final CursorStatement sqlStatement, final SelectStatement boundSelectStatement) {
         CursorStatement result = new CursorStatement(sqlStatement.getCursorName(), boundSelectStatement);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
index d1ff3e1b847..6f560b8662d 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
@@ -46,6 +46,7 @@ public final class DropIndexStatementBinder implements SQLStatementBinder<DropIn
         sqlStatement.getLockTable().ifPresent(result::setLockTable);
         result.setIfExists(sqlStatement.isIfExists());
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropTableStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropTableStatementBinder.java
index d60f3f5e5a0..500c9278058 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropTableStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropTableStatementBinder.java
@@ -46,6 +46,7 @@ public final class DropTableStatementBinder implements SQLStatementBinder<DropTa
         result.setIfExists(sqlStatement.isIfExists());
         result.setContainsCascade(sqlStatement.isContainsCascade());
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropViewStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropViewStatementBinder.java
index b100cf8c1a7..aa166236098 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropViewStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropViewStatementBinder.java
@@ -44,6 +44,7 @@ public final class DropViewStatementBinder implements SQLStatementBinder<DropVie
         DropViewStatement result = new DropViewStatement();
         result.getViews().addAll(boundViews);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/RenameTableStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/RenameTableStatementBinder.java
index 7201da33a51..d1154810ff6 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/RenameTableStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/RenameTableStatementBinder.java
@@ -43,6 +43,7 @@ public final class RenameTableStatementBinder implements SQLStatementBinder<Rena
     private static RenameTableStatement copy(final RenameTableStatement sqlStatement, final Collection<RenameTableDefinitionSegment> boundRenameTables) {
         RenameTableStatement result = new RenameTableStatement(boundRenameTables);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/TruncateStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/TruncateStatementBinder.java
index e35cc9e0850..18aaaf3aff5 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/TruncateStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/TruncateStatementBinder.java
@@ -43,6 +43,7 @@ public final class TruncateStatementBinder implements SQLStatementBinder<Truncat
     private TruncateStatement copy(final TruncateStatement sqlStatement, final Collection<SimpleTableSegment> boundTables) {
         TruncateStatement result = new TruncateStatement(boundTables);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinder.java
index 6ac647661a7..fc29546f667 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinder.java
@@ -59,6 +59,7 @@ public final class DeleteStatementBinder implements SQLStatementBinder<DeleteSta
         sqlStatement.getLimit().ifPresent(result::setLimit);
         sqlStatement.getOutput().ifPresent(result::setOutput);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/InsertStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/InsertStatementBinder.java
index 86536c9982f..e1ba22d7fae 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/InsertStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/InsertStatementBinder.java
@@ -81,6 +81,7 @@ public final class InsertStatementBinder implements SQLStatementBinder<InsertSta
         sqlStatement.getMultiTableConditionalInto().ifPresent(result::setMultiTableConditionalInto);
         sqlStatement.getReturning().ifPresent(result::setReturning);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
     
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/SelectStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/SelectStatementBinder.java
index 08fb36e5ef4..d5ed88de212 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/SelectStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/SelectStatementBinder.java
@@ -110,6 +110,7 @@ public final class SelectStatementBinder implements SQLStatementBinder<SelectSta
         sqlStatement.getModel().ifPresent(result::setModel);
         sqlStatement.getSubqueryType().ifPresent(result::setSubqueryType);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/UpdateStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/UpdateStatementBinder.java
index 0886da13b68..c68703b1169 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/UpdateStatementBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/UpdateStatementBinder.java
@@ -66,6 +66,7 @@ public final class UpdateStatementBinder implements SQLStatementBinder<UpdateSta
         result.setOrderBy(boundOrderBy);
         sqlStatement.getLimit().ifPresent(result::setLimit);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLLoadDataStatementBinder.java b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLLoadDataStatementBinder.java
index ec31e5e213b..6a10c7a0311 100644
--- a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLLoadDataStatementBinder.java
+++ b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLLoadDataStatementBinder.java
@@ -42,6 +42,7 @@ public final class MySQLLoadDataStatementBinder implements SQLStatementBinder<My
     private MySQLLoadDataStatement copy(final MySQLLoadDataStatement sqlStatement, final SimpleTableSegment boundTableSegment) {
         MySQLLoadDataStatement result = new MySQLLoadDataStatement(boundTableSegment);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLLoadXMLStatementBinder.java b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLLoadXMLStatementBinder.java
index e6080ade381..ff501013bfd 100644
--- a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLLoadXMLStatementBinder.java
+++ b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLLoadXMLStatementBinder.java
@@ -42,6 +42,7 @@ public final class MySQLLoadXMLStatementBinder implements SQLStatementBinder<MyS
     private MySQLLoadXMLStatement copy(final MySQLLoadXMLStatement sqlStatement, final SimpleTableSegment boundTableSegment) {
         MySQLLoadXMLStatement result = new MySQLLoadXMLStatement(boundTableSegment);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLOptimizeTableStatementBinder.java b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLOptimizeTableStatementBinder.java
index 44e2aa8ac82..e5c743a9e29 100644
--- a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLOptimizeTableStatementBinder.java
+++ b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLOptimizeTableStatementBinder.java
@@ -43,6 +43,7 @@ public final class MySQLOptimizeTableStatementBinder implements SQLStatementBind
     private MySQLOptimizeTableStatement copy(final MySQLOptimizeTableStatement sqlStatement, final Collection<SimpleTableSegment> boundTables) {
         MySQLOptimizeTableStatement result = new MySQLOptimizeTableStatement(boundTables);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowColumnsStatementBinder.java b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowColumnsStatementBinder.java
index 9fdd6bea1c0..8f8e496add7 100644
--- a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowColumnsStatementBinder.java
+++ b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowColumnsStatementBinder.java
@@ -48,6 +48,7 @@ public final class MySQLShowColumnsStatementBinder implements SQLStatementBinder
     private MySQLShowColumnsStatement copy(final MySQLShowColumnsStatement sqlStatement, final SimpleTableSegment boundTable, final ShowFilterSegment boundFilter) {
         MySQLShowColumnsStatement result = new MySQLShowColumnsStatement(boundTable, sqlStatement.getFromDatabase().orElse(null), boundFilter);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowCreateTableStatementBinder.java b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowCreateTableStatementBinder.java
index 8bdb290a75d..b2bc79be16f 100644
--- a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowCreateTableStatementBinder.java
+++ b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowCreateTableStatementBinder.java
@@ -38,6 +38,7 @@ public final class MySQLShowCreateTableStatementBinder implements SQLStatementBi
     private MySQLShowCreateTableStatement copy(final MySQLShowCreateTableStatement sqlStatement, final SimpleTableSegment boundTable) {
         MySQLShowCreateTableStatement result = new MySQLShowCreateTableStatement(boundTable);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowIndexStatementBinder.java b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowIndexStatementBinder.java
index ca5e228cca1..a71edd6d8cd 100644
--- a/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowIndexStatementBinder.java
+++ b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/bind/type/MySQLShowIndexStatementBinder.java
@@ -38,6 +38,7 @@ public final class MySQLShowIndexStatementBinder implements SQLStatementBinder<M
     private MySQLShowIndexStatement copy(final MySQLShowIndexStatement sqlStatement, final SimpleTableSegment boundTable) {
         MySQLShowIndexStatement result = new MySQLShowIndexStatement(boundTable, sqlStatement.getFromDatabase().orElse(null));
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/dialect/postgresql/src/main/java/org/apache/shardingsphere/infra/binder/postgresql/bind/type/PostgreSQLCopyStatementBinder.java b/infra/binder/dialect/postgresql/src/main/java/org/apache/shardingsphere/infra/binder/postgresql/bind/type/PostgreSQLCopyStatementBinder.java
index 2307ad0e50b..98dd452e08f 100644
--- a/infra/binder/dialect/postgresql/src/main/java/org/apache/shardingsphere/infra/binder/postgresql/bind/type/PostgreSQLCopyStatementBinder.java
+++ b/infra/binder/dialect/postgresql/src/main/java/org/apache/shardingsphere/infra/binder/postgresql/bind/type/PostgreSQLCopyStatementBinder.java
@@ -56,6 +56,7 @@ public final class PostgreSQLCopyStatementBinder implements SQLStatementBinder<P
                                          final SimpleTableSegment boundTable, final Collection<ColumnSegment> boundColumns, final PrepareStatementQuerySegment boundPrepareStatementQuery) {
         PostgreSQLCopyStatement result = new PostgreSQLCopyStatement(boundTable, boundColumns, boundPrepareStatementQuery);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }
diff --git a/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/bind/type/SQLServerDenyUserStatementBinder.java b/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/bind/type/SQLServerDenyUserStatementBinder.java
index 35b21ac6c63..84990fdfed8 100644
--- a/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/bind/type/SQLServerDenyUserStatementBinder.java
+++ b/infra/binder/dialect/sqlserver/src/main/java/org/apache/shardingsphere/infra/binder/sqlserver/bind/type/SQLServerDenyUserStatementBinder.java
@@ -53,6 +53,7 @@ public final class SQLServerDenyUserStatementBinder implements SQLStatementBinde
         result.setTable(boundTable);
         sqlStatement.getColumns().addAll(boundColumns);
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
+        result.setDatabaseType(sqlStatement.getDatabaseType());
         return result;
     }
 }