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>

Reply via email to