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 2e753b8e459 Add StatementCopyUtils (#35668)
2e753b8e459 is described below
commit 2e753b8e45933bcd27713f55cb828072d5c81a8a
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Jun 11 01:16:21 2025 +0800
Add StatementCopyUtils (#35668)
* Add StatementCopyUtils
* Add StatementCopyUtils
* Add StatementCopyUtils
---
.../engine/statement/SQLStatementCopyUtils.java | 33 ++++++++++++----------
.../statement/dal/ExplainStatementBinder.java | 9 ++----
.../dal/OptimizeTableStatementBinder.java | 5 ++--
.../statement/dal/ShowColumnsStatementBinder.java | 5 ++--
.../dal/ShowCreateTableStatementBinder.java | 5 ++--
.../statement/dal/ShowIndexStatementBinder.java | 5 ++--
.../statement/dcl/DenyUserStatementBinder.java | 5 ++--
.../statement/ddl/AlterIndexStatementBinder.java | 11 +++-----
.../statement/ddl/AlterTableStatementBinder.java | 11 +++-----
.../statement/ddl/AlterViewStatementBinder.java | 11 +++-----
.../statement/ddl/CreateIndexStatementBinder.java | 11 +++-----
.../statement/ddl/CreateTableStatementBinder.java | 5 ++--
.../statement/ddl/CreateViewStatementBinder.java | 11 +++-----
.../statement/ddl/CursorStatementBinder.java | 7 ++---
.../statement/ddl/DropIndexStatementBinder.java | 11 +++-----
.../statement/ddl/DropTableStatementBinder.java | 11 +++-----
.../statement/ddl/DropViewStatementBinder.java | 11 +++-----
.../statement/ddl/RenameTableStatementBinder.java | 5 ++--
.../statement/ddl/TruncateStatementBinder.java | 11 +++-----
.../engine/statement/dml/CopyStatementBinder.java | 5 ++--
.../statement/dml/DeleteStatementBinder.java | 5 ++--
.../statement/dml/InsertStatementBinder.java | 5 ++--
.../statement/dml/LoadDataStatementBinder.java | 5 ++--
.../statement/dml/LoadXMLStatementBinder.java | 5 ++--
.../statement/dml/SelectStatementBinder.java | 5 ++--
.../statement/dml/UpdateStatementBinder.java | 5 ++--
.../core/statement/ddl/AlterIndexStatement.java | 2 +-
.../core/statement/ddl/AlterTableStatement.java | 2 +-
.../core/statement/ddl/AlterViewStatement.java | 2 +-
.../core/statement/ddl/CreateIndexStatement.java | 2 +-
.../core/statement/ddl/DropIndexStatement.java | 2 +-
.../core/statement/ddl/DropTableStatement.java | 2 +-
.../core/statement/ddl/DropViewStatement.java | 2 +-
33 files changed, 95 insertions(+), 137 deletions(-)
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropViewStatement.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/SQLStatementCopyUtils.java
similarity index 51%
copy from
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropViewStatement.java
copy to
infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/SQLStatementCopyUtils.java
index 49ca9fcb9dd..ad1484a7469 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropViewStatement.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/SQLStatementCopyUtils.java
@@ -15,24 +15,27 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sql.parser.statement.core.statement.ddl;
+package org.apache.shardingsphere.infra.binder.engine.statement;
-import lombok.Getter;
-import lombok.Setter;
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.AbstractSQLStatement;
-
-import java.util.Collection;
-import java.util.LinkedList;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
/**
- * Drop view statement.
+ * SQL statement copy utils.
*/
-@Getter
-@Setter
-public class DropViewStatement extends AbstractSQLStatement implements
DDLStatement {
-
- private final Collection<SimpleTableSegment> views = new LinkedList<>();
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class SQLStatementCopyUtils {
- private boolean ifExists;
+ /**
+ * Copy attributes of SQL statement.
+ *
+ * @param originalSQLStatement original SQL statement
+ * @param boundSQLStatement bound SQL statement
+ */
+ public static void copyAttributes(final SQLStatement originalSQLStatement,
final SQLStatement boundSQLStatement) {
+
boundSQLStatement.addParameterMarkers(originalSQLStatement.getParameterMarkers());
+
boundSQLStatement.getVariableNames().addAll(originalSQLStatement.getVariableNames());
+
boundSQLStatement.getComments().addAll(originalSQLStatement.getComments());
+ }
}
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 0de3331fe9a..0038f1d2859 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
@@ -18,9 +18,9 @@
package org.apache.shardingsphere.infra.binder.engine.statement.dal;
import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.infra.binder.engine.type.DMLStatementBindEngine;
import org.apache.shardingsphere.infra.hint.HintValueContext;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
@@ -51,14 +51,11 @@ public final class ExplainStatementBinder implements
SQLStatementBinder<ExplainS
return result;
}
- @SneakyThrows(ReflectiveOperationException.class)
private ExplainStatement copy(final ExplainStatement sqlStatement) {
- ExplainStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ ExplainStatement result = new ExplainStatement();
sqlStatement.getSimpleTable().ifPresent(result::setSimpleTable);
sqlStatement.getColumnWild().ifPresent(result::setColumnWild);
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
return result;
}
}
diff --git
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/OptimizeTableStatementBinder.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/OptimizeTableStatementBinder.java
index 038c88dbfc4..d6e0a3e6a9e 100644
---
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/OptimizeTableStatementBinder.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/OptimizeTableStatementBinder.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.Ta
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dal.OptimizeTableStatement;
import java.util.LinkedList;
@@ -43,9 +44,7 @@ public final class OptimizeTableStatementBinder implements
SQLStatementBinder<Op
private OptimizeTableStatement copy(final OptimizeTableStatement
sqlStatement) {
OptimizeTableStatement result = new OptimizeTableStatement(new
LinkedList<>());
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
return result;
}
}
diff --git
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowColumnsStatementBinder.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowColumnsStatementBinder.java
index e8a72773174..0a007405e0f 100644
---
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowColumnsStatementBinder.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowColumnsStatementBinder.java
@@ -25,6 +25,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.Ta
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.ShowFilterSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dal.ShowColumnsStatement;
@@ -47,9 +48,7 @@ public final class ShowColumnsStatementBinder implements
SQLStatementBinder<Show
private ShowColumnsStatement copy(final ShowColumnsStatement sqlStatement,
final SimpleTableSegment table, final ShowFilterSegment filter) {
ShowColumnsStatement result = new ShowColumnsStatement(table,
sqlStatement.getFromDatabase().orElse(null), filter);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
return result;
}
}
diff --git
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowCreateTableStatementBinder.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowCreateTableStatementBinder.java
index bda67420b93..9977b246279 100644
---
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowCreateTableStatementBinder.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowCreateTableStatementBinder.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.Ta
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dal.ShowCreateTableStatement;
@@ -40,9 +41,7 @@ public final class ShowCreateTableStatementBinder implements
SQLStatementBinder<
private ShowCreateTableStatement copy(final ShowCreateTableStatement
sqlStatement, final SimpleTableSegment table) {
ShowCreateTableStatement result = new ShowCreateTableStatement(table);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
return result;
}
}
diff --git
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowIndexStatementBinder.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowIndexStatementBinder.java
index c4522bac746..e533e7d5003 100644
---
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowIndexStatementBinder.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowIndexStatementBinder.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.Ta
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dal.ShowIndexStatement;
@@ -40,9 +41,7 @@ public final class ShowIndexStatementBinder implements
SQLStatementBinder<ShowIn
private ShowIndexStatement copy(final ShowIndexStatement sqlStatement,
final SimpleTableSegment table) {
ShowIndexStatement result = new ShowIndexStatement(table,
sqlStatement.getFromDatabase().orElse(null));
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
return result;
}
}
diff --git
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/DenyUserStatementBinder.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/DenyUserStatementBinder.java
index 37771173994..7dc20625032 100644
---
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/DenyUserStatementBinder.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/DenyUserStatementBinder.java
@@ -26,6 +26,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.Ta
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dcl.DenyUserStatement;
/**
@@ -46,9 +47,7 @@ public final class DenyUserStatementBinder implements
SQLStatementBinder<DenyUse
private static DenyUserStatement copy(final DenyUserStatement
sqlStatement) {
DenyUserStatement result = new DenyUserStatement();
result.setTable(sqlStatement.getTable());
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 d7d5c440571..75c9dbe7cf4 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
@@ -20,11 +20,11 @@ package
org.apache.shardingsphere.infra.binder.engine.statement.ddl;
import com.cedarsoftware.util.CaseInsensitiveMap;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterIndexStatement;
/**
@@ -43,14 +43,11 @@ public final class AlterIndexStatementBinder implements
SQLStatementBinder<Alter
return result;
}
- @SneakyThrows(ReflectiveOperationException.class)
- private static AlterIndexStatement copy(final AlterIndexStatement
sqlStatement) {
- AlterIndexStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
+ private AlterIndexStatement copy(final AlterIndexStatement sqlStatement) {
+ AlterIndexStatement result = new AlterIndexStatement();
sqlStatement.getIndex().ifPresent(result::setIndex);
sqlStatement.getSimpleTable().ifPresent(result::setSimpleTable);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 6759a027470..f954af01796 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
@@ -20,11 +20,11 @@ package
org.apache.shardingsphere.infra.binder.engine.statement.ddl;
import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterTableStatement;
/**
@@ -41,9 +41,8 @@ public final class AlterTableStatementBinder implements
SQLStatementBinder<Alter
return result;
}
- @SneakyThrows(ReflectiveOperationException.class)
- private static AlterTableStatement copy(final AlterTableStatement
sqlStatement) {
- AlterTableStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
+ private AlterTableStatement copy(final AlterTableStatement sqlStatement) {
+ AlterTableStatement result = new AlterTableStatement();
// TODO bind column and reference table if kernel need use them
sqlStatement.getConvertTableDefinition().ifPresent(result::setConvertTableDefinition);
result.getAddColumnDefinitions().addAll(sqlStatement.getAddColumnDefinitions());
@@ -58,9 +57,7 @@ public final class AlterTableStatementBinder implements
SQLStatementBinder<Alter
result.getRenameColumnDefinitions().addAll(sqlStatement.getRenameColumnDefinitions());
result.getRenameIndexDefinitions().addAll(sqlStatement.getRenameIndexDefinitions());
sqlStatement.getModifyCollectionRetrieval().ifPresent(result::setModifyCollectionRetrieval);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 0fae4aeec32..c7a255f5c67 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
@@ -20,11 +20,11 @@ package
org.apache.shardingsphere.infra.binder.engine.statement.ddl;
import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.infra.binder.engine.statement.dml.SelectStatementBinder;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterViewStatement;
@@ -43,14 +43,11 @@ public final class AlterViewStatementBinder implements
SQLStatementBinder<AlterV
return result;
}
- @SneakyThrows(ReflectiveOperationException.class)
- private static AlterViewStatement copy(final AlterViewStatement
sqlStatement) {
- AlterViewStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
+ private AlterViewStatement copy(final AlterViewStatement sqlStatement) {
+ AlterViewStatement result = new AlterViewStatement();
sqlStatement.getViewDefinition().ifPresent(result::setViewDefinition);
sqlStatement.getConstraintDefinition().ifPresent(result::setConstraintDefinition);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 d164373b4d5..1219e69523d 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
@@ -20,13 +20,13 @@ package
org.apache.shardingsphere.infra.binder.engine.statement.ddl;
import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
-import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.binder.engine.segment.SegmentType;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.expression.type.ColumnSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateIndexStatement;
/**
@@ -44,17 +44,14 @@ public final class CreateIndexStatementBinder implements
SQLStatementBinder<Crea
return result;
}
- @SneakyThrows(ReflectiveOperationException.class)
- private static CreateIndexStatement copy(final CreateIndexStatement
sqlStatement) {
- CreateIndexStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
+ private CreateIndexStatement copy(final CreateIndexStatement sqlStatement)
{
+ CreateIndexStatement result = new CreateIndexStatement();
result.setIndex(sqlStatement.getIndex());
sqlStatement.getGeneratedIndexStartIndex().ifPresent(result::setGeneratedIndexStartIndex);
result.setIfNotExists(sqlStatement.isIfNotExists());
sqlStatement.getAlgorithmType().ifPresent(result::setAlgorithmType);
sqlStatement.getLockTable().ifPresent(result::setLockTable);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 d03f909b002..2384b6b77eb 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
@@ -26,6 +26,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.Ta
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.infra.binder.engine.statement.dml.SelectStatementBinder;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateTableStatement;
@@ -53,9 +54,7 @@ public final class CreateTableStatementBinder implements
SQLStatementBinder<Crea
result.getColumns().addAll(sqlStatement.getColumns());
sqlStatement.getLikeTable().ifPresent(result::setLikeTable);
sqlStatement.getCreateTableOption().ifPresent(result::setCreateTableOption);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 8a50415b50b..2aec42fa9a0 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
@@ -20,11 +20,11 @@ package
org.apache.shardingsphere.infra.binder.engine.statement.ddl;
import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.infra.binder.engine.statement.dml.SelectStatementBinder;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateViewStatement;
@@ -43,13 +43,10 @@ public final class CreateViewStatementBinder implements
SQLStatementBinder<Creat
return result;
}
- @SneakyThrows(ReflectiveOperationException.class)
- private static CreateViewStatement copy(final CreateViewStatement
sqlStatement) {
- CreateViewStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
+ private CreateViewStatement copy(final CreateViewStatement sqlStatement) {
+ CreateViewStatement result = new CreateViewStatement();
result.setViewDefinition(sqlStatement.getViewDefinition());
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 92262299705..e50cdc72b6d 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
@@ -19,6 +19,7 @@ package
org.apache.shardingsphere.infra.binder.engine.statement.ddl;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.infra.binder.engine.statement.dml.SelectStatementBinder;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CursorStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dml.SelectStatement;
@@ -33,11 +34,9 @@ public final class CursorStatementBinder implements
SQLStatementBinder<CursorSta
return copy(sqlStatement, new
SelectStatementBinder().bind(sqlStatement.getSelect(), binderContext));
}
- private static CursorStatement copy(final CursorStatement sqlStatement,
final SelectStatement boundSelectStatement) {
+ private CursorStatement copy(final CursorStatement sqlStatement, final
SelectStatement boundSelectStatement) {
CursorStatement result = new
CursorStatement(sqlStatement.getCursorName(), boundSelectStatement);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 e9c259eb0af..8aa79baee90 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
@@ -20,11 +20,11 @@ package
org.apache.shardingsphere.infra.binder.engine.statement.ddl;
import com.cedarsoftware.util.CaseInsensitiveMap;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropIndexStatement;
/**
@@ -44,16 +44,13 @@ public final class DropIndexStatementBinder implements
SQLStatementBinder<DropIn
return result;
}
- @SneakyThrows(ReflectiveOperationException.class)
- private static DropIndexStatement copy(final DropIndexStatement
sqlStatement) {
- DropIndexStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
+ private DropIndexStatement copy(final DropIndexStatement sqlStatement) {
+ DropIndexStatement result = new DropIndexStatement();
sqlStatement.getSimpleTable().ifPresent(result::setSimpleTable);
sqlStatement.getAlgorithmType().ifPresent(result::setAlgorithmType);
sqlStatement.getLockTable().ifPresent(result::setLockTable);
result.setIfExists(sqlStatement.isIfExists());
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 8495ec8fbe1..6f88dbd7247 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
@@ -20,11 +20,11 @@ package
org.apache.shardingsphere.infra.binder.engine.statement.ddl;
import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropTableStatement;
/**
@@ -40,14 +40,11 @@ public final class DropTableStatementBinder implements
SQLStatementBinder<DropTa
return result;
}
- @SneakyThrows(ReflectiveOperationException.class)
- private static DropTableStatement copy(final DropTableStatement
sqlStatement) {
- DropTableStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
+ private DropTableStatement copy(final DropTableStatement sqlStatement) {
+ DropTableStatement result = new DropTableStatement();
result.setIfExists(sqlStatement.isIfExists());
result.setContainsCascade(sqlStatement.isContainsCascade());
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 d492df330dd..caf22803562 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
@@ -20,11 +20,11 @@ package
org.apache.shardingsphere.infra.binder.engine.statement.ddl;
import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropViewStatement;
/**
@@ -40,12 +40,9 @@ public final class DropViewStatementBinder implements
SQLStatementBinder<DropVie
return result;
}
- @SneakyThrows(ReflectiveOperationException.class)
- private static DropViewStatement copy(final DropViewStatement
sqlStatement) {
- DropViewStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ private DropViewStatement copy(final DropViewStatement sqlStatement) {
+ DropViewStatement result = new DropViewStatement();
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 ae79fc696a9..e867296a257 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
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.ddl.column.RenameTa
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.RenameTableDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.RenameTableStatement;
@@ -45,9 +46,7 @@ public final class RenameTableStatementBinder implements
SQLStatementBinder<Rena
private static RenameTableStatement copy(final RenameTableStatement
sqlStatement, final Collection<RenameTableDefinitionSegment> boundRenameTables)
{
RenameTableStatement result = new
RenameTableStatement(boundRenameTables);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 2a937295cb4..4b21afdfbb3 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
@@ -20,11 +20,11 @@ package
org.apache.shardingsphere.infra.binder.engine.statement.ddl;
import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
-import lombok.SneakyThrows;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.TruncateStatement;
/**
@@ -40,12 +40,9 @@ public final class TruncateStatementBinder implements
SQLStatementBinder<Truncat
return result;
}
- @SneakyThrows(ReflectiveOperationException.class)
- private static TruncateStatement copy(final TruncateStatement
sqlStatement) {
- TruncateStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ private TruncateStatement copy(final TruncateStatement sqlStatement) {
+ TruncateStatement result = new TruncateStatement();
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
return result;
}
}
diff --git
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/CopyStatementBinder.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/CopyStatementBinder.java
index 1cedff83ddc..9385b4e2fd8 100644
---
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/CopyStatementBinder.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/CopyStatementBinder.java
@@ -27,6 +27,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.Simpl
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.prepare.PrepareStatementQuerySegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+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.dml.prepare.PrepareStatementQuerySegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
@@ -54,9 +55,7 @@ public final class CopyStatementBinder implements
SQLStatementBinder<CopyStateme
private CopyStatement copy(final CopyStatement sqlStatement,
final SimpleTableSegment boundTable, final
Collection<ColumnSegment> boundColumns, final PrepareStatementQuerySegment
boundPrepareStatementQuery) {
CopyStatement result = new CopyStatement(boundTable, boundColumns,
boundPrepareStatementQuery);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 9303a106cea..336c94933d4 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
@@ -28,6 +28,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.predicate.Where
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.with.WithSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dml.DeleteStatement;
/**
@@ -52,9 +53,7 @@ public final class DeleteStatementBinder implements
SQLStatementBinder<DeleteSta
DeleteStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
sqlStatement.getLimit().ifPresent(result::setLimit);
sqlStatement.getOutputSegment().ifPresent(result::setOutputSegment);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 6c56a7c13fa..24f22414349 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
@@ -29,6 +29,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.Simpl
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.with.WithSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+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.dml.item.ColumnProjectionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ProjectionSegment;
@@ -69,9 +70,7 @@ public final class InsertStatementBinder implements
SQLStatementBinder<InsertSta
sqlStatement.getMultiTableInsertIntoSegment().ifPresent(result::setMultiTableInsertIntoSegment);
sqlStatement.getMultiTableConditionalIntoSegment().ifPresent(result::setMultiTableConditionalIntoSegment);
sqlStatement.getReturningSegment().ifPresent(result::setReturningSegment);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
return result;
}
diff --git
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/LoadDataStatementBinder.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/LoadDataStatementBinder.java
index 8de45116f17..5f88661e60d 100644
---
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/LoadDataStatementBinder.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/LoadDataStatementBinder.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.Ta
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dml.LoadDataStatement;
@@ -40,9 +41,7 @@ public final class LoadDataStatementBinder implements
SQLStatementBinder<LoadDat
private LoadDataStatement copy(final LoadDataStatement sqlStatement, final
SimpleTableSegment boundTableSegment) {
LoadDataStatement result = new LoadDataStatement(boundTableSegment);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
return result;
}
}
diff --git
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/LoadXMLStatementBinder.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/LoadXMLStatementBinder.java
index 6837a2ec081..c3f9ae4f521 100644
---
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/LoadXMLStatementBinder.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/LoadXMLStatementBinder.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.Ta
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dml.LoadXMLStatement;
@@ -40,9 +41,7 @@ public final class LoadXMLStatementBinder implements
SQLStatementBinder<LoadXMLS
private LoadXMLStatement copy(final LoadXMLStatement sqlStatement, final
SimpleTableSegment boundTableSegment) {
LoadXMLStatement result = new LoadXMLStatement(boundTableSegment);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 037aad8fe0a..b54c0b250e6 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
@@ -36,6 +36,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.with.WithSegmen
import
org.apache.shardingsphere.infra.binder.engine.segment.util.SubqueryTableBindUtils;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.enums.TableSourceType;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ProjectionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableSegment;
@@ -93,9 +94,7 @@ public final class SelectStatementBinder implements
SQLStatementBinder<SelectSta
sqlStatement.getWindow().ifPresent(result::setWindow);
sqlStatement.getModelSegment().ifPresent(result::setModelSegment);
sqlStatement.getSubqueryType().ifPresent(result::setSubqueryType);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
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 a86f343fa90..6744625dd49 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
@@ -29,6 +29,7 @@ import
org.apache.shardingsphere.infra.binder.engine.segment.dml.predicate.Where
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.with.WithSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
+import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dml.UpdateStatement;
/**
@@ -54,9 +55,7 @@ public final class UpdateStatementBinder implements
SQLStatementBinder<UpdateSta
private UpdateStatement copy(final UpdateStatement sqlStatement) {
UpdateStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
sqlStatement.getLimit().ifPresent(result::setLimit);
- result.addParameterMarkers(sqlStatement.getParameterMarkers());
- result.getComments().addAll(sqlStatement.getComments());
- result.getVariableNames().addAll(sqlStatement.getVariableNames());
+ SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
return result;
}
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterIndexStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterIndexStatement.java
index 7c9aff53f42..13f7ca2c9bc 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterIndexStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterIndexStatement.java
@@ -28,7 +28,7 @@ import java.util.Optional;
* Alter index statement.
*/
@Setter
-public class AlterIndexStatement extends AbstractSQLStatement implements
DDLStatement {
+public final class AlterIndexStatement extends AbstractSQLStatement implements
DDLStatement {
private IndexSegment index;
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterTableStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterTableStatement.java
index 5104a0e645c..d50a950c150 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterTableStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterTableStatement.java
@@ -46,7 +46,7 @@ import java.util.Optional;
*/
@Getter
@Setter
-public class AlterTableStatement extends AbstractSQLStatement implements
DDLStatement {
+public final class AlterTableStatement extends AbstractSQLStatement implements
DDLStatement {
private SimpleTableSegment table;
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterViewStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterViewStatement.java
index 9debcf47dce..a2eddfec6ce 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterViewStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterViewStatement.java
@@ -31,7 +31,7 @@ import java.util.Optional;
*/
@Getter
@Setter
-public class AlterViewStatement extends AbstractSQLStatement implements
DDLStatement {
+public final class AlterViewStatement extends AbstractSQLStatement implements
DDLStatement {
private SimpleTableSegment view;
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/CreateIndexStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/CreateIndexStatement.java
index 5ae161db4ab..91fe20d41c5 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/CreateIndexStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/CreateIndexStatement.java
@@ -35,7 +35,7 @@ import java.util.Optional;
*/
@Getter
@Setter
-public class CreateIndexStatement extends AbstractSQLStatement implements
DDLStatement {
+public final class CreateIndexStatement extends AbstractSQLStatement
implements DDLStatement {
private IndexSegment index;
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropIndexStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropIndexStatement.java
index 29025bbaab4..e15a60c166c 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropIndexStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropIndexStatement.java
@@ -34,7 +34,7 @@ import java.util.Optional;
*/
@Getter
@Setter
-public class DropIndexStatement extends AbstractSQLStatement implements
DDLStatement {
+public final class DropIndexStatement extends AbstractSQLStatement implements
DDLStatement {
private final Collection<IndexSegment> indexes = new LinkedList<>();
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropTableStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropTableStatement.java
index 436ff710903..d0fe22f8d62 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropTableStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropTableStatement.java
@@ -30,7 +30,7 @@ import java.util.LinkedList;
*/
@Getter
@Setter
-public class DropTableStatement extends AbstractSQLStatement implements
DDLStatement {
+public final class DropTableStatement extends AbstractSQLStatement implements
DDLStatement {
private final Collection<SimpleTableSegment> tables = new LinkedList<>();
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropViewStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropViewStatement.java
index 49ca9fcb9dd..a709bf42962 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropViewStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/DropViewStatement.java
@@ -30,7 +30,7 @@ import java.util.LinkedList;
*/
@Getter
@Setter
-public class DropViewStatement extends AbstractSQLStatement implements
DDLStatement {
+public final class DropViewStatement extends AbstractSQLStatement implements
DDLStatement {
private final Collection<SimpleTableSegment> views = new LinkedList<>();