This is an automated email from the ASF dual-hosted git repository.
yx9o 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 7f8fa57bce9 Support create view, alter view, drop view sql bind logic
(#34167)
7f8fa57bce9 is described below
commit 7f8fa57bce9b0c2c35b24fdc16ad20f4028135db
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Fri Dec 27 07:41:54 2024 +0800
Support create view, alter view, drop view sql bind logic (#34167)
* Support create view, alter view, drop view sql bind logic
* Support create view, alter view, drop view sql bind logic
* Support create view, alter view, drop view sql bind logic
* update release note
* fix rewrite it
---
RELEASE-NOTES.md | 1 +
.../sql/ddl/ShardingAlterViewSupportedChecker.java | 2 +-
.../statement/ddl/AlterViewStatementContext.java | 2 +-
.../dml/from/type/SimpleTableSegmentBinder.java | 21 +++++++++-
.../statement/ddl/AlterIndexStatementBinder.java | 2 +-
...ntBinder.java => AlterViewStatementBinder.java} | 33 +++++++--------
...tBinder.java => CreateViewStatementBinder.java} | 28 ++++++-------
.../statement/ddl/DropIndexStatementBinder.java | 2 +-
...entBinder.java => DropViewStatementBinder.java} | 25 +++++------
.../binder/engine/type/DDLStatementBindEngine.java | 25 ++++++++---
.../core/statement/ddl/AlterViewStatement.java | 34 ++++++++++++++-
.../doris/ddl/DorisAlterViewStatement.java | 2 +-
.../mysql/ddl/MySQLAlterViewStatement.java | 2 +-
.../sqlserver/ddl/SQLServerAlterViewStatement.java | 2 +-
.../test/it/sql/binder/SQLBinderIT.java | 7 ++++
.../src/test/resources/cases/ddl/alter-view.xml | 48 ++++++++++++++++++++++
.../src/test/resources/cases/ddl/create-view.xml | 48 ++++++++++++++++++++++
.../src/test/resources/cases/ddl/drop-index.xml | 2 +
.../src/test/resources/cases/ddl/drop-view.xml | 28 +++++++++++++
.../src/test/resources/sqls/ddl/alter-view.xml | 21 ++++++++++
.../src/test/resources/sqls/ddl/create-view.xml | 21 ++++++++++
.../src/test/resources/sqls/ddl/drop-view.xml | 21 ++++++++++
.../ddl/impl/AlterViewStatementAssert.java | 6 +--
.../scenario/sharding/case/ddl/create-table.xml | 2 +-
24 files changed, 319 insertions(+), 66 deletions(-)
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 92a9855feda..943a601cf47 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -44,6 +44,7 @@
1. SQL Binder: Support rename table statement sql bind and split segment bind
to ddl and dml package -
[#34158](https://github.com/apache/shardingsphere/pull/34158)
1. SQL Binder: Support copy statement sql bind and add bind test case -
[#34159](https://github.com/apache/shardingsphere/pull/34159)
1. SQL Binder: Support truncate table sql bind and add test case -
[#34162](https://github.com/apache/shardingsphere/pull/34162)
+1. SQL Binder: Support create view, alter view, drop view sql bind logic -
[#34167](https://github.com/apache/shardingsphere/pull/34167)
### Bug Fixes
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterViewSupportedChecker.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterViewSupportedChecker.java
index 81ade5d0cb6..7fb9b59180b 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterViewSupportedChecker.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterViewSupportedChecker.java
@@ -47,7 +47,7 @@ public final class ShardingAlterViewSupportedChecker
implements SupportedSQLChec
@Override
public void check(final ShardingRule rule, final ShardingSphereDatabase
database, final ShardingSphereSchema currentSchema, final
AlterViewStatementContext sqlStatementContext) {
AlterViewStatement alterViewStatement =
sqlStatementContext.getSqlStatement();
- Optional<SelectStatement> selectStatement =
alterViewStatement.getSelectStatement();
+ Optional<SelectStatement> selectStatement =
alterViewStatement.getSelect();
String originView =
alterViewStatement.getView().getTableName().getIdentifier().getValue();
selectStatement.ifPresent(optional ->
checkAlterViewShardingTables(rule, optional, originView));
alterViewStatement.getRenameView().ifPresent(optional ->
checkBroadcastShardingView(rule, originView,
optional.getTableName().getIdentifier().getValue()));
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContext.java
index 1b0e25a3c07..21ed040858f 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContext.java
@@ -42,7 +42,7 @@ public final class AlterViewStatementContext extends
CommonSQLStatementContext i
super(sqlStatement);
Collection<SimpleTableSegment> tables = new LinkedList<>();
tables.add(sqlStatement.getView());
- Optional<SelectStatement> selectStatement =
sqlStatement.getSelectStatement();
+ Optional<SelectStatement> selectStatement = sqlStatement.getSelect();
selectStatement.ifPresent(optional -> {
TableExtractor extractor = new TableExtractor();
extractor.extractTablesFromSelect(optional);
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java
index 6b2561ce90a..3ed26ac9e99 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java
@@ -51,7 +51,9 @@ import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterTableStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterViewStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateTableStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateViewStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropTableStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.RenameTableStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
@@ -129,7 +131,8 @@ public final class SimpleTableSegmentBinder {
}
private static void checkTableExists(final SQLStatementBinderContext
binderContext, final ShardingSphereSchema schema, final String schemaName,
final String tableName) {
- if (binderContext.getSqlStatement() instanceof CreateTableStatement) {
+ // TODO refactor table exists check with spi @duanzhengqiang
+ if (binderContext.getSqlStatement() instanceof CreateTableStatement &&
isCreateTable(((CreateTableStatement)
binderContext.getSqlStatement()).getTable(), tableName)) {
ShardingSpherePreconditions.checkState(binderContext.getHintValueContext().isSkipMetadataValidate()
|| ((CreateTableStatement)
binderContext.getSqlStatement()).isIfNotExists() ||
!schema.containsTable(tableName), () -> new TableExistsException(tableName));
return;
@@ -146,6 +149,14 @@ public final class SimpleTableSegmentBinder {
ShardingSpherePreconditions.checkState(binderContext.getHintValueContext().isSkipMetadataValidate()
|| !schema.containsTable(tableName), () -> new
TableExistsException(tableName));
return;
}
+ if (binderContext.getSqlStatement() instanceof CreateViewStatement &&
isCreateTable(((CreateViewStatement)
binderContext.getSqlStatement()).getView(), tableName)) {
+
ShardingSpherePreconditions.checkState(binderContext.getHintValueContext().isSkipMetadataValidate()
|| !schema.containsTable(tableName), () -> new
TableExistsException(tableName));
+ return;
+ }
+ if (binderContext.getSqlStatement() instanceof AlterViewStatement &&
isRenameView((AlterViewStatement) binderContext.getSqlStatement(), tableName)) {
+
ShardingSpherePreconditions.checkState(binderContext.getHintValueContext().isSkipMetadataValidate()
|| !schema.containsTable(tableName), () -> new
TableExistsException(tableName));
+ return;
+ }
if ("DUAL".equalsIgnoreCase(tableName)) {
return;
}
@@ -158,6 +169,10 @@ public final class SimpleTableSegmentBinder {
ShardingSpherePreconditions.checkState(schema.containsTable(tableName), () ->
new TableNotFoundException(tableName));
}
+ private static boolean isCreateTable(final SimpleTableSegment
simpleTableSegment, final String tableName) {
+ return
simpleTableSegment.getTableName().getIdentifier().getValue().equalsIgnoreCase(tableName);
+ }
+
private static boolean isRenameTable(final AlterTableStatement
alterTableStatement, final String tableName) {
return alterTableStatement.getRenameTable().isPresent() &&
alterTableStatement.getRenameTable().get().getTableName().getIdentifier().getValue().equalsIgnoreCase(tableName);
}
@@ -171,6 +186,10 @@ public final class SimpleTableSegmentBinder {
return false;
}
+ private static boolean isRenameView(final AlterViewStatement
alterViewStatement, final String tableName) {
+ return alterViewStatement.getRenameView().isPresent() &&
alterViewStatement.getRenameView().get().getTableName().getIdentifier().getValue().equalsIgnoreCase(tableName);
+ }
+
private static SimpleTableSegmentBinderContext
createSimpleTableBinderContext(final SimpleTableSegment segment, final
ShardingSphereSchema schema, final IdentifierValue databaseName,
final IdentifierValue schemaName, final SQLStatementBinderContext
binderContext) {
IdentifierValue tableName = segment.getTableName().getIdentifier();
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
index 848755e5ac1..55533ab06ed 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
@@ -30,7 +30,7 @@ import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterIn
/**
* Alter index statement binder.
*/
-public class AlterIndexStatementBinder implements
SQLStatementBinder<AlterIndexStatement> {
+public final class AlterIndexStatementBinder implements
SQLStatementBinder<AlterIndexStatement> {
@Override
public AlterIndexStatement bind(final AlterIndexStatement sqlStatement,
final SQLStatementBinderContext binderContext) {
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterViewStatementBinder.java
similarity index 60%
copy from
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
copy to
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterViewStatementBinder.java
index 10d8ecb2926..ba455bf0204 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterViewStatementBinder.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.binder.engine.statement.ddl;
-import com.cedarsoftware.util.CaseInsensitiveMap;
+import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
import lombok.SneakyThrows;
@@ -25,32 +25,29 @@ 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.sql.parser.statement.core.statement.ddl.DropIndexStatement;
+import
org.apache.shardingsphere.infra.binder.engine.statement.dml.SelectStatementBinder;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterViewStatement;
/**
- * Drop index statement binder.
+ * Alter view statement binder.
*/
-public class DropIndexStatementBinder implements
SQLStatementBinder<DropIndexStatement> {
+public final class AlterViewStatementBinder implements
SQLStatementBinder<AlterViewStatement> {
@Override
- public DropIndexStatement bind(final DropIndexStatement sqlStatement,
final SQLStatementBinderContext binderContext) {
- if (!sqlStatement.getSimpleTable().isPresent()) {
- return sqlStatement;
- }
- DropIndexStatement result = copy(sqlStatement);
- Multimap<CaseInsensitiveMap.CaseInsensitiveString,
TableSegmentBinderContext> tableBinderContexts = LinkedHashMultimap.create();
-
result.setSimpleTable(SimpleTableSegmentBinder.bind(sqlStatement.getSimpleTable().get(),
binderContext, tableBinderContexts));
- sqlStatement.getIndexes().forEach(each ->
result.getIndexes().add(each));
+ public AlterViewStatement bind(final AlterViewStatement sqlStatement,
final SQLStatementBinderContext binderContext) {
+ AlterViewStatement result = copy(sqlStatement);
+ Multimap<CaseInsensitiveString, TableSegmentBinderContext>
tableBinderContexts = LinkedHashMultimap.create();
+ result.setView(SimpleTableSegmentBinder.bind(sqlStatement.getView(),
binderContext, tableBinderContexts));
+ sqlStatement.getSelect().ifPresent(optional -> result.setSelect(new
SelectStatementBinder().bind(optional, binderContext)));
+ sqlStatement.getRenameView().ifPresent(optional ->
result.setRenameView(SimpleTableSegmentBinder.bind(optional, binderContext,
tableBinderContexts)));
return result;
}
@SneakyThrows(ReflectiveOperationException.class)
- private static DropIndexStatement copy(final DropIndexStatement
sqlStatement) {
- DropIndexStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
- sqlStatement.getSimpleTable().ifPresent(result::setSimpleTable);
- sqlStatement.getAlgorithmType().ifPresent(result::setAlgorithmType);
- sqlStatement.getLockTable().ifPresent(result::setLockTable);
- result.setIfExists(sqlStatement.isIfExists());
+ private static AlterViewStatement copy(final AlterViewStatement
sqlStatement) {
+ AlterViewStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
+ sqlStatement.getViewDefinition().ifPresent(result::setViewDefinition);
+
sqlStatement.getConstraintDefinition().ifPresent(result::setConstraintDefinition);
result.addParameterMarkerSegments(sqlStatement.getParameterMarkerSegments());
result.getCommentSegments().addAll(sqlStatement.getCommentSegments());
result.getVariableNames().addAll(sqlStatement.getVariableNames());
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateViewStatementBinder.java
similarity index 66%
copy from
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
copy to
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateViewStatementBinder.java
index 848755e5ac1..91befad6c2f 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CreateViewStatementBinder.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.binder.engine.statement.ddl;
-import com.cedarsoftware.util.CaseInsensitiveMap;
+import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
import lombok.SneakyThrows;
@@ -25,29 +25,27 @@ 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.sql.parser.statement.core.statement.ddl.AlterIndexStatement;
+import
org.apache.shardingsphere.infra.binder.engine.statement.dml.SelectStatementBinder;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateViewStatement;
/**
- * Alter index statement binder.
+ * Create view statement binder.
*/
-public class AlterIndexStatementBinder implements
SQLStatementBinder<AlterIndexStatement> {
+public final class CreateViewStatementBinder implements
SQLStatementBinder<CreateViewStatement> {
@Override
- public AlterIndexStatement bind(final AlterIndexStatement sqlStatement,
final SQLStatementBinderContext binderContext) {
- if (!sqlStatement.getSimpleTable().isPresent()) {
- return sqlStatement;
- }
- AlterIndexStatement result = copy(sqlStatement);
- Multimap<CaseInsensitiveMap.CaseInsensitiveString,
TableSegmentBinderContext> tableBinderContexts = LinkedHashMultimap.create();
-
result.setSimpleTable(SimpleTableSegmentBinder.bind(sqlStatement.getSimpleTable().get(),
binderContext, tableBinderContexts));
+ public CreateViewStatement bind(final CreateViewStatement sqlStatement,
final SQLStatementBinderContext binderContext) {
+ CreateViewStatement result = copy(sqlStatement);
+ Multimap<CaseInsensitiveString, TableSegmentBinderContext>
tableBinderContexts = LinkedHashMultimap.create();
+ result.setView(SimpleTableSegmentBinder.bind(sqlStatement.getView(),
binderContext, tableBinderContexts));
+ result.setSelect(new
SelectStatementBinder().bind(sqlStatement.getSelect(), binderContext));
return result;
}
@SneakyThrows(ReflectiveOperationException.class)
- private static AlterIndexStatement copy(final AlterIndexStatement
sqlStatement) {
- AlterIndexStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
- sqlStatement.getIndex().ifPresent(result::setIndex);
- sqlStatement.getSimpleTable().ifPresent(result::setSimpleTable);
+ private static CreateViewStatement copy(final CreateViewStatement
sqlStatement) {
+ CreateViewStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
+ result.setViewDefinition(sqlStatement.getViewDefinition());
result.addParameterMarkerSegments(sqlStatement.getParameterMarkerSegments());
result.getCommentSegments().addAll(sqlStatement.getCommentSegments());
result.getVariableNames().addAll(sqlStatement.getVariableNames());
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
index 10d8ecb2926..56b7ec3b139 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
@@ -30,7 +30,7 @@ import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropInd
/**
* Drop index statement binder.
*/
-public class DropIndexStatementBinder implements
SQLStatementBinder<DropIndexStatement> {
+public final class DropIndexStatementBinder implements
SQLStatementBinder<DropIndexStatement> {
@Override
public DropIndexStatement bind(final DropIndexStatement sqlStatement,
final SQLStatementBinderContext binderContext) {
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropViewStatementBinder.java
similarity index 62%
copy from
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
copy to
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropViewStatementBinder.java
index 848755e5ac1..1e9d2e57906 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropViewStatementBinder.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.binder.engine.statement.ddl;
-import com.cedarsoftware.util.CaseInsensitiveMap;
+import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
import lombok.SneakyThrows;
@@ -25,29 +25,24 @@ 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.sql.parser.statement.core.statement.ddl.AlterIndexStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropViewStatement;
/**
- * Alter index statement binder.
+ * Drop view statement binder.
*/
-public class AlterIndexStatementBinder implements
SQLStatementBinder<AlterIndexStatement> {
+public final class DropViewStatementBinder implements
SQLStatementBinder<DropViewStatement> {
@Override
- public AlterIndexStatement bind(final AlterIndexStatement sqlStatement,
final SQLStatementBinderContext binderContext) {
- if (!sqlStatement.getSimpleTable().isPresent()) {
- return sqlStatement;
- }
- AlterIndexStatement result = copy(sqlStatement);
- Multimap<CaseInsensitiveMap.CaseInsensitiveString,
TableSegmentBinderContext> tableBinderContexts = LinkedHashMultimap.create();
-
result.setSimpleTable(SimpleTableSegmentBinder.bind(sqlStatement.getSimpleTable().get(),
binderContext, tableBinderContexts));
+ public DropViewStatement bind(final DropViewStatement sqlStatement, final
SQLStatementBinderContext binderContext) {
+ DropViewStatement result = copy(sqlStatement);
+ Multimap<CaseInsensitiveString, TableSegmentBinderContext>
tableBinderContexts = LinkedHashMultimap.create();
+ sqlStatement.getViews().forEach(each ->
result.getViews().add(SimpleTableSegmentBinder.bind(each, binderContext,
tableBinderContexts)));
return result;
}
@SneakyThrows(ReflectiveOperationException.class)
- private static AlterIndexStatement copy(final AlterIndexStatement
sqlStatement) {
- AlterIndexStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
- sqlStatement.getIndex().ifPresent(result::setIndex);
- sqlStatement.getSimpleTable().ifPresent(result::setSimpleTable);
+ private static DropViewStatement copy(final DropViewStatement
sqlStatement) {
+ DropViewStatement result =
sqlStatement.getClass().getDeclaredConstructor().newInstance();
result.addParameterMarkerSegments(sqlStatement.getParameterMarkerSegments());
result.getCommentSegments().addAll(sqlStatement.getCommentSegments());
result.getVariableNames().addAll(sqlStatement.getVariableNames());
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/type/DDLStatementBindEngine.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/type/DDLStatementBindEngine.java
index 1860554f46b..f579afbf8ab 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/type/DDLStatementBindEngine.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/type/DDLStatementBindEngine.java
@@ -21,23 +21,29 @@ import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.AlterIndexStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.AlterTableStatementBinder;
+import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.AlterViewStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.CreateIndexStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.CreateTableStatementBinder;
+import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.CreateViewStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.CursorStatementBinder;
-import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.DropTableStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.DropIndexStatementBinder;
+import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.DropTableStatementBinder;
+import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.DropViewStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.RenameTableStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.ddl.TruncateStatementBinder;
import org.apache.shardingsphere.infra.hint.HintValueContext;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterIndexStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterTableStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterViewStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateIndexStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateTableStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateViewStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CursorStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DDLStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropTableStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropIndexStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropTableStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropViewStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.RenameTableStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.TruncateStatement;
@@ -82,12 +88,21 @@ public final class DDLStatementBindEngine {
if (statement instanceof AlterIndexStatement) {
return new AlterIndexStatementBinder().bind((AlterIndexStatement)
statement, binderContext);
}
- if (statement instanceof TruncateStatement) {
- return new TruncateStatementBinder().bind((TruncateStatement)
statement, binderContext);
- }
if (statement instanceof DropIndexStatement) {
return new DropIndexStatementBinder().bind((DropIndexStatement)
statement, binderContext);
}
+ if (statement instanceof CreateViewStatement) {
+ return new CreateViewStatementBinder().bind((CreateViewStatement)
statement, binderContext);
+ }
+ if (statement instanceof AlterViewStatement) {
+ return new AlterViewStatementBinder().bind((AlterViewStatement)
statement, binderContext);
+ }
+ if (statement instanceof DropViewStatement) {
+ return new DropViewStatementBinder().bind((DropViewStatement)
statement, binderContext);
+ }
+ if (statement instanceof TruncateStatement) {
+ return new TruncateStatementBinder().bind((TruncateStatement)
statement, binderContext);
+ }
return statement;
}
}
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 efe898d40bf..33d2761c9d3 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
@@ -40,10 +40,18 @@ public abstract class AlterViewStatement extends
AbstractSQLStatement implements
*
* @return select statement
*/
- public Optional<SelectStatement> getSelectStatement() {
+ public Optional<SelectStatement> getSelect() {
return Optional.empty();
}
+ /**
+ * Set select statement.
+ *
+ * @param select select statement
+ */
+ public void setSelect(final SelectStatement select) {
+ }
+
/**
* Get view definition.
*
@@ -53,6 +61,14 @@ public abstract class AlterViewStatement extends
AbstractSQLStatement implements
return Optional.empty();
}
+ /**
+ * Get view definition.
+ *
+ * @param viewDefinition view definition
+ */
+ public void setViewDefinition(final String viewDefinition) {
+ }
+
/**
* Get rename view.
*
@@ -62,6 +78,14 @@ public abstract class AlterViewStatement extends
AbstractSQLStatement implements
return Optional.empty();
}
+ /**
+ * Get rename view.
+ *
+ * @param renameView rename view
+ */
+ public void setRenameView(final SimpleTableSegment renameView) {
+ }
+
/**
* Get constraint definition.
*
@@ -70,4 +94,12 @@ public abstract class AlterViewStatement extends
AbstractSQLStatement implements
public Optional<ConstraintDefinitionSegment> getConstraintDefinition() {
return Optional.empty();
}
+
+ /**
+ * Get constraint definition.
+ *
+ * @param constraintDefinition constraint definition
+ */
+ public void setConstraintDefinition(final ConstraintDefinitionSegment
constraintDefinition) {
+ }
}
diff --git
a/parser/sql/statement/type/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisAlterViewStatement.java
b/parser/sql/statement/type/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisAlterViewStatement.java
index 989b20fafe6..9922da33dc4 100644
---
a/parser/sql/statement/type/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisAlterViewStatement.java
+++
b/parser/sql/statement/type/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisAlterViewStatement.java
@@ -35,7 +35,7 @@ public final class DorisAlterViewStatement extends
AlterViewStatement implements
private String viewDefinition;
@Override
- public Optional<SelectStatement> getSelectStatement() {
+ public Optional<SelectStatement> getSelect() {
return Optional.ofNullable(select);
}
diff --git
a/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/ddl/MySQLAlterViewStatement.java
b/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/ddl/MySQLAlterViewStatement.java
index e39847195e8..e7382e3dade 100644
---
a/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/ddl/MySQLAlterViewStatement.java
+++
b/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/ddl/MySQLAlterViewStatement.java
@@ -35,7 +35,7 @@ public final class MySQLAlterViewStatement extends
AlterViewStatement implements
private String viewDefinition;
@Override
- public Optional<SelectStatement> getSelectStatement() {
+ public Optional<SelectStatement> getSelect() {
return Optional.ofNullable(select);
}
diff --git
a/parser/sql/statement/type/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/ddl/SQLServerAlterViewStatement.java
b/parser/sql/statement/type/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/ddl/SQLServerAlterViewStatement.java
index 88211af3f58..dbe144a505c 100644
---
a/parser/sql/statement/type/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/ddl/SQLServerAlterViewStatement.java
+++
b/parser/sql/statement/type/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/statement/sqlserver/ddl/SQLServerAlterViewStatement.java
@@ -35,7 +35,7 @@ public final class SQLServerAlterViewStatement extends
AlterViewStatement implem
private String viewDefinition;
@Override
- public Optional<SelectStatement> getSelectStatement() {
+ public Optional<SelectStatement> getSelect() {
return Optional.ofNullable(select);
}
diff --git
a/test/it/binder/src/test/java/org/apache/shardingsphere/test/it/sql/binder/SQLBinderIT.java
b/test/it/binder/src/test/java/org/apache/shardingsphere/test/it/sql/binder/SQLBinderIT.java
index 657bc809b53..5a2fa8de9f9 100644
---
a/test/it/binder/src/test/java/org/apache/shardingsphere/test/it/sql/binder/SQLBinderIT.java
+++
b/test/it/binder/src/test/java/org/apache/shardingsphere/test/it/sql/binder/SQLBinderIT.java
@@ -130,6 +130,13 @@ public abstract class SQLBinderIT {
new ShardingSphereColumn("business_code", Types.VARCHAR,
false, false, false, true, false, false),
new ShardingSphereColumn("telephone", Types.CHAR, false,
false, false, true, false, false),
new ShardingSphereColumn("creation_date", Types.DATE, false,
false, false, true, false, false)), Collections.emptyList(),
Collections.emptyList()));
+ result.add(new ShardingSphereTable("t_order_view", Arrays.asList(
+ new ShardingSphereColumn("order_id", Types.BIGINT, true,
false, false, true, false, false),
+ new ShardingSphereColumn("user_id", Types.INTEGER, false,
false, false, true, false, false),
+ new ShardingSphereColumn("status", Types.VARCHAR, false,
false, false, true, false, false),
+ new ShardingSphereColumn("merchant_id", Types.INTEGER, false,
false, false, true, false, true),
+ new ShardingSphereColumn("remark", Types.VARCHAR, false,
false, false, true, false, false),
+ new ShardingSphereColumn("creation_date", Types.DATE, false,
false, false, true, false, false)), Collections.emptyList(),
Collections.emptyList()));
return result;
}
diff --git a/test/it/binder/src/test/resources/cases/ddl/alter-view.xml
b/test/it/binder/src/test/resources/cases/ddl/alter-view.xml
new file mode 100644
index 00000000000..b35529ede63
--- /dev/null
+++ b/test/it/binder/src/test/resources/cases/ddl/alter-view.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<sql-parser-test-cases>
+ <alter-view sql-case-id="alter_view" view-definition="SELECT order_id FROM
t_order">
+ <view name="t_order_view" start-index="11" stop-index="22">
+ <table-bound>
+ <original-database name="foo_db_1" />
+ <original-schema name="foo_db_1" />
+ </table-bound>
+ </view>
+ <select>
+ <projections start-index="34" stop-index="41">
+ <column-projection name="order_id" start-index="34"
stop-index="41">
+ <column-bound>
+ <original-database name="foo_db_1" />
+ <original-schema name="foo_db_1" />
+ <original-table name="t_order" />
+ <original-column name="order_id" start-delimiter="`"
end-delimiter="`" />
+ </column-bound>
+ </column-projection>
+ </projections>
+ <from>
+ <simple-table name="t_order" start-index="48" stop-index="54">
+ <table-bound>
+ <original-database name="foo_db_1" />
+ <original-schema name="foo_db_1" />
+ </table-bound>
+ </simple-table>
+ </from>
+ </select>
+ </alter-view>
+</sql-parser-test-cases>
diff --git a/test/it/binder/src/test/resources/cases/ddl/create-view.xml
b/test/it/binder/src/test/resources/cases/ddl/create-view.xml
new file mode 100644
index 00000000000..62682e07a1f
--- /dev/null
+++ b/test/it/binder/src/test/resources/cases/ddl/create-view.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<sql-parser-test-cases>
+ <create-view sql-case-id="create_view" view-definition="SELECT order_id
FROM t_order">
+ <view name="t_order_view_tmp" start-index="12" stop-index="27">
+ <table-bound>
+ <original-database name="foo_db_1" />
+ <original-schema name="foo_db_1" />
+ </table-bound>
+ </view>
+ <select>
+ <projections start-index="39" stop-index="46">
+ <column-projection name="order_id" start-index="39"
stop-index="46">
+ <column-bound>
+ <original-database name="foo_db_1" />
+ <original-schema name="foo_db_1" />
+ <original-table name="t_order" />
+ <original-column name="order_id" start-delimiter="`"
end-delimiter="`" />
+ </column-bound>
+ </column-projection>
+ </projections>
+ <from start-index="48" stop-index="59">
+ <simple-table name="t_order" start-index="53" stop-index="59">
+ <table-bound>
+ <original-database name="foo_db_1" />
+ <original-schema name="foo_db_1" />
+ </table-bound>
+ </simple-table>
+ </from>
+ </select>
+ </create-view>
+</sql-parser-test-cases>
diff --git a/test/it/binder/src/test/resources/cases/ddl/drop-index.xml
b/test/it/binder/src/test/resources/cases/ddl/drop-index.xml
index 73f8237cc43..37e3d1e9764 100644
--- a/test/it/binder/src/test/resources/cases/ddl/drop-index.xml
+++ b/test/it/binder/src/test/resources/cases/ddl/drop-index.xml
@@ -26,6 +26,7 @@
</table-bound>
</table>
</drop-index>
+
<drop-index sql-case-id="drop_index_for_sqlserver">
<index name="idx_user_id" start-index="11" stop-index="21"/>
<table name="t_order" start-index="26" stop-index="32">
@@ -35,6 +36,7 @@
</table-bound>
</table>
</drop-index>
+
<drop-index sql-case-id="drop_index_with_lock_algorithm">
<index name="idx_user_id" start-index="11" stop-index="21"/>
<table name="t_order" start-index="26" stop-index="32">
diff --git a/test/it/binder/src/test/resources/cases/ddl/drop-view.xml
b/test/it/binder/src/test/resources/cases/ddl/drop-view.xml
new file mode 100644
index 00000000000..ba9d8a9227f
--- /dev/null
+++ b/test/it/binder/src/test/resources/cases/ddl/drop-view.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<sql-parser-test-cases>
+ <drop-view sql-case-id="drop_view">
+ <view name="t_order_view" start-index="10" stop-index="21">
+ <table-bound>
+ <original-database name="foo_db_1" />
+ <original-schema name="foo_db_1" />
+ </table-bound>
+ </view>
+ </drop-view>
+</sql-parser-test-cases>
diff --git a/test/it/binder/src/test/resources/sqls/ddl/alter-view.xml
b/test/it/binder/src/test/resources/sqls/ddl/alter-view.xml
new file mode 100644
index 00000000000..8cd292f6cad
--- /dev/null
+++ b/test/it/binder/src/test/resources/sqls/ddl/alter-view.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<sql-cases>
+ <sql-case id="alter_view" value="ALTER VIEW t_order_view AS SELECT
order_id FROM t_order" db-types="MySQL" />
+</sql-cases>
diff --git a/test/it/binder/src/test/resources/sqls/ddl/create-view.xml
b/test/it/binder/src/test/resources/sqls/ddl/create-view.xml
new file mode 100644
index 00000000000..922a64857e1
--- /dev/null
+++ b/test/it/binder/src/test/resources/sqls/ddl/create-view.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<sql-cases>
+ <sql-case id="create_view" value="CREATE VIEW t_order_view_tmp AS SELECT
order_id FROM t_order" db-types="MySQL" />
+</sql-cases>
diff --git a/test/it/binder/src/test/resources/sqls/ddl/drop-view.xml
b/test/it/binder/src/test/resources/sqls/ddl/drop-view.xml
new file mode 100644
index 00000000000..6c003b3bcfe
--- /dev/null
+++ b/test/it/binder/src/test/resources/sqls/ddl/drop-view.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<sql-cases>
+ <sql-case id="drop_view" value="DROP VIEW t_order_view"
db-types="MySQL,Doris" />
+</sql-cases>
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/impl/AlterViewStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/impl/AlterViewStatementAssert.java
index dabfc8ca361..b3fb9724968 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/impl/AlterViewStatementAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/impl/AlterViewStatementAssert.java
@@ -70,10 +70,10 @@ public final class AlterViewStatementAssert {
private static void assertSelect(final SQLCaseAssertContext assertContext,
final AlterViewStatement actual, final AlterViewStatementTestCase expected) {
if (null == expected.getSelectStatement()) {
- assertFalse(actual.getSelectStatement().isPresent(), "actual
select statement should not exist");
+ assertFalse(actual.getSelect().isPresent(), "actual select
statement should not exist");
} else {
- assertTrue(actual.getSelectStatement().isPresent(), "actual select
statement should exist");
- SelectStatementAssert.assertIs(assertContext,
actual.getSelectStatement().get(), expected.getSelectStatement());
+ assertTrue(actual.getSelect().isPresent(), "actual select
statement should exist");
+ SelectStatementAssert.assertIs(assertContext,
actual.getSelect().get(), expected.getSelectStatement());
}
}
diff --git
a/test/it/rewriter/src/test/resources/scenario/sharding/case/ddl/create-table.xml
b/test/it/rewriter/src/test/resources/scenario/sharding/case/ddl/create-table.xml
index c2772527943..b4d2b8de0fe 100644
---
a/test/it/rewriter/src/test/resources/scenario/sharding/case/ddl/create-table.xml
+++
b/test/it/rewriter/src/test/resources/scenario/sharding/case/ddl/create-table.xml
@@ -99,7 +99,7 @@
</rewrite-assertion>
<rewrite-assertion id="create_view_with_sharding_table"
db-types="MySQL,PostgreSQL,openGauss">
- <input sql="CREATE VIEW t_account_view AS SELECT account_id, amount
FROM t_account WHERE status = 'OK'" />
+ <input sql="/* SHARDINGSPHERE_HINT: SKIP_METADATA_VALIDATE=true */
CREATE VIEW t_account_view AS SELECT account_id, amount FROM t_account WHERE
status = 'OK'" />
<output sql="CREATE VIEW t_account_view_0 AS SELECT account_id, amount
FROM t_account_0 WHERE status = 'OK'" />
<output sql="CREATE VIEW t_account_view_1 AS SELECT account_id, amount
FROM t_account_1 WHERE status = 'OK'" />
</rewrite-assertion>