You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/09/29 02:51:55 UTC
[shardingsphere] branch master updated: Optimize alter view/drop view parse logic and fix alter view refresher bug (#21255)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 b1fa82f3692 Optimize alter view/drop view parse logic and fix alter view refresher bug (#21255)
b1fa82f3692 is described below
commit b1fa82f3692178b9032190a5a2ba01c6c063d6f4
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Thu Sep 29 10:51:46 2022 +0800
Optimize alter view/drop view parse logic and fix alter view refresher bug (#21255)
* Optimize alter view/drop view parse logic and fix alter view refresher bug
* fix unit test
Co-authored-by: shardingsphere <de...@shardingsphere.apache.org>
---
.../ddl/AlterViewStatementContextTest.java | 2 +-
.../type/AlterViewStatementSchemaRefresher.java | 7 +--
.../impl/MySQLDDLStatementSQLVisitor.java | 2 +-
.../impl/OpenGaussDDLStatementSQLVisitor.java | 1 -
.../impl/OracleDDLStatementSQLVisitor.java | 22 +++++----
.../impl/PostgreSQLDDLStatementSQLVisitor.java | 1 -
.../sql/parser/autogen/SQLServerStatement.g4 | 1 +
.../impl/SQLServerDDLStatementSQLVisitor.java | 13 ++++-
.../common/statement/ddl/AlterViewStatement.java | 2 -
.../handler/ddl/AlterViewStatementHandler.java | 23 ++++++++-
.../mysql/ddl/MySQLAlterViewStatement.java | 11 +----
.../sqlserver/ddl/SQLServerAlterViewStatement.java | 9 ++++
.../handler/ddl/AlterViewStatementHandlerTest.java | 13 ++---
.../asserts/statement/ddl/DDLStatementAssert.java | 10 ++++
...ntAssert.java => AlterViewStatementAssert.java} | 39 +++++++--------
.../ddl/impl/CreateViewStatementAssert.java | 6 +--
.../ddl/impl/DropViewStatementAssert.java | 47 ++++++++++++++++++
.../statement/ddl/AlterViewStatementTestCase.java | 21 ++++++++
.../statement/ddl/DropViewStatementTestCase.java | 12 +++++
.../src/main/resources/case/ddl/alter-view.xml | 57 ++++++++++++++++++----
.../src/main/resources/case/ddl/drop-view.xml | 24 +++++++--
.../resources/sql/supported/ddl/alter-view.xml | 1 +
22 files changed, 250 insertions(+), 74 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/ddl/AlterViewStatementContextTest.java b/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/ddl/AlterViewStatementContextTest.java
index 2160360c366..50294b58b3f 100644
--- a/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/ddl/AlterViewStatementContextTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/ddl/AlterViewStatementContextTest.java
@@ -52,7 +52,7 @@ public final class AlterViewStatementContextTest {
when(select.getFrom()).thenReturn(view);
MySQLAlterViewStatement mySQLAlterViewStatement = mock(MySQLAlterViewStatement.class);
when(mySQLAlterViewStatement.getView()).thenReturn(view);
- when(mySQLAlterViewStatement.getSelect()).thenReturn(Optional.of(select));
+ when(mySQLAlterViewStatement.getSelect()).thenReturn(select);
assertNewInstance(mySQLAlterViewStatement);
}
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterViewStatementSchemaRefresher.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterViewStatementSchemaRefresher.java
index fc0e3f1ebb9..6cde19e3f44 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterViewStatementSchemaRefresher.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterViewStatementSchemaRefresher.java
@@ -48,7 +48,6 @@ public final class AlterViewStatementSchemaRefresher implements MetaDataRefreshe
public Optional<MetaDataRefreshedEvent> refresh(final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
final String schemaName, final AlterViewStatement sqlStatement, final ConfigurationProperties props) throws SQLException {
String viewName = sqlStatement.getView().getTableName().getIdentifier().getValue();
- String viewDefinition = sqlStatement.getViewSQL().substring(sqlStatement.getViewSQL().substring(0, sqlStatement.getViewSQL().indexOf(" as ")).length() + 4).trim();
SchemaAlteredEvent event = new SchemaAlteredEvent(database.getName(), schemaName);
Optional<SimpleTableSegment> renameView = AlterViewStatementHandler.getRenameView(sqlStatement);
if (renameView.isPresent()) {
@@ -60,8 +59,10 @@ public final class AlterViewStatementSchemaRefresher implements MetaDataRefreshe
event.getAlteredViews().add(database.getSchema(schemaName).getView(renameViewName));
event.getDroppedTables().add(viewName);
event.getDroppedViews().add(viewName);
- } else {
- putTableMetaData(database, logicDataSourceNames, schemaName, viewName, viewDefinition, props);
+ }
+ Optional<String> viewDefinition = AlterViewStatementHandler.getViewDefinition(sqlStatement);
+ if (viewDefinition.isPresent()) {
+ putTableMetaData(database, logicDataSourceNames, schemaName, viewName, viewDefinition.get(), props);
event.getAlteredTables().add(database.getSchema(schemaName).getTable(viewName));
event.getAlteredViews().add(database.getSchema(schemaName).getView(viewName));
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
index 2efc59139b7..89dfe26fe7c 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
@@ -199,7 +199,7 @@ public final class MySQLDDLStatementSQLVisitor extends MySQLStatementSQLVisitor
public ASTNode visitAlterView(final AlterViewContext ctx) {
MySQLAlterViewStatement result = new MySQLAlterViewStatement();
result.setView((SimpleTableSegment) visit(ctx.viewName()));
- result.setViewSQL(getOriginalText(ctx));
+ result.setViewDefinition(getOriginalText(ctx.select()));
result.setSelect((MySQLSelectStatement) visit(ctx.select()));
return result;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDDLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDDLStatementSQLVisitor.java
index 69467491b40..e95c7729c85 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDDLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDDLStatementSQLVisitor.java
@@ -632,7 +632,6 @@ public final class OpenGaussDDLStatementSQLVisitor extends OpenGaussStatementSQL
@Override
public ASTNode visitAlterView(final AlterViewContext ctx) {
OpenGaussAlterViewStatement result = new OpenGaussAlterViewStatement();
- result.setViewSQL(getOriginalText(ctx));
result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
if (ctx.alterViewClauses() instanceof AlterRenameViewContext) {
NameContext nameContext = ((AlterRenameViewContext) ctx.alterViewClauses()).name();
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
index 1823c2c591b..60f50c8cb71 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
@@ -33,21 +33,21 @@ import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterD
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDefinitionClauseContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDimensionContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDiskgroupContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterHierarchyContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterFlashbackArchiveContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterFunctionContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterHierarchyContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterIndexContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterIndexTypeContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterInmemoryJoinGroupContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterLibraryContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterJavaContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterLibraryContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterLockdownProfileContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterMaterializedViewContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterMaterializedViewLogContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterMaterializedZonemapContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterOperatorContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterOutlineContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterPackageContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterLockdownProfileContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterPluggableDatabaseContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterProcedureContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSequenceContext;
@@ -98,13 +98,13 @@ import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropEd
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropFlashbackArchiveContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropIndexContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropIndexTypeContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropMaterializedViewContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropMaterializedViewLogContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropMaterializedZonemapContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropInmemoryJoinGroupContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropJavaContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropLibraryContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropLockdownProfileContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropMaterializedViewContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropMaterializedViewLogContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropMaterializedZonemapContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropOperatorContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropOutlineContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropPackageContext;
@@ -175,9 +175,9 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.Ora
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterInmemoryJoinGroupStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterJavaStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterLibraryStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterLockdownProfileStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterMaterializedViewLogStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterMaterializedViewStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterLockdownProfileStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterMaterializedZonemapStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterOperatorStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterOutlineStatement;
@@ -505,7 +505,9 @@ public final class OracleDDLStatementSQLVisitor extends OracleStatementSQLVisito
@Override
public ASTNode visitAlterView(final AlterViewContext ctx) {
- return new OracleAlterViewStatement();
+ OracleAlterViewStatement result = new OracleAlterViewStatement();
+ result.setView((SimpleTableSegment) visit(ctx.viewName()));
+ return result;
}
@Override
@@ -535,7 +537,9 @@ public final class OracleDDLStatementSQLVisitor extends OracleStatementSQLVisito
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
- return new OracleDropViewStatement();
+ OracleDropViewStatement result = new OracleDropViewStatement();
+ result.getViews().add((SimpleTableSegment) visit(ctx.viewName()));
+ return result;
}
@Override
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDDLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDDLStatementSQLVisitor.java
index a510cc99b08..71a74ff55a5 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDDLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDDLStatementSQLVisitor.java
@@ -783,7 +783,6 @@ public final class PostgreSQLDDLStatementSQLVisitor extends PostgreSQLStatementS
public ASTNode visitAlterView(final AlterViewContext ctx) {
PostgreSQLAlterViewStatement result = new PostgreSQLAlterViewStatement();
result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
- result.setViewSQL(getOriginalText(ctx));
if (ctx.alterViewClauses() instanceof AlterRenameViewContext) {
NameContext nameContext = ((AlterRenameViewContext) ctx.alterViewClauses()).name();
result.setRenameView(new SimpleTableSegment(new TableNameSegment(nameContext.getStart().getStartIndex(),
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
index 7bbc61df5fb..2147c65ff16 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
@@ -41,6 +41,7 @@ execute
| alterDatabase
| alterService
| alterSchema
+ | alterView
| dropTable
| dropDatabase
| dropFunction
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDDLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDDLStatementSQLVisitor.java
index 4650e2444e1..176a7528c66 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDDLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDDLStatementSQLVisitor.java
@@ -70,6 +70,7 @@ import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.Dro
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ModifyColumnSpecificationContext;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.TableConstraintContext;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.TruncateTableContext;
+import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ViewNameContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.AlterDefinitionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.CreateDefinitionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.ColumnDefinitionSegment;
@@ -465,7 +466,11 @@ public final class SQLServerDDLStatementSQLVisitor extends SQLServerStatementSQL
@Override
public ASTNode visitAlterView(final AlterViewContext ctx) {
- return new SQLServerAlterViewStatement();
+ SQLServerAlterViewStatement result = new SQLServerAlterViewStatement();
+ result.setView((SimpleTableSegment) visit(ctx.viewName()));
+ result.setViewDefinition(getOriginalText(ctx.createOrAlterViewClause().select()));
+ result.setSelect((SQLServerSelectStatement) visit(ctx.createOrAlterViewClause().select()));
+ return result;
}
@Override
@@ -490,7 +495,11 @@ public final class SQLServerDDLStatementSQLVisitor extends SQLServerStatementSQL
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
- return new SQLServerDropViewStatement();
+ SQLServerDropViewStatement result = new SQLServerDropViewStatement();
+ for (ViewNameContext each : ctx.viewName()) {
+ result.getViews().add((SimpleTableSegment) visit(each));
+ }
+ return result;
}
@Override
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterViewStatement.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterViewStatement.java
index 4d33c2373af..b8cf744077e 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterViewStatement.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterViewStatement.java
@@ -32,6 +32,4 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStat
public abstract class AlterViewStatement extends AbstractSQLStatement implements DDLStatement {
private SimpleTableSegment view;
-
- private String viewSQL;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/ddl/AlterViewStatementHandler.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/ddl/AlterViewStatementHandler.java
index fba1240fdc0..9fa9ffdcccb 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/ddl/AlterViewStatementHandler.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/ddl/AlterViewStatementHandler.java
@@ -29,6 +29,8 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.Open
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.ddl.OpenGaussAlterViewStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.PostgreSQLStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.ddl.PostgreSQLAlterViewStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.SQLServerStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterViewStatement;
import java.util.Optional;
@@ -46,7 +48,26 @@ public final class AlterViewStatementHandler implements SQLStatementHandler {
*/
public static Optional<SelectStatement> getSelectStatement(final AlterViewStatement alterViewStatement) {
if (alterViewStatement instanceof MySQLStatement) {
- return ((MySQLAlterViewStatement) alterViewStatement).getSelect();
+ return Optional.of(((MySQLAlterViewStatement) alterViewStatement).getSelect());
+ }
+ if (alterViewStatement instanceof SQLServerStatement) {
+ return Optional.of(((SQLServerAlterViewStatement) alterViewStatement).getSelect());
+ }
+ return Optional.empty();
+ }
+
+ /**
+ * Get view definition.
+ *
+ * @param alterViewStatement AlterViewStatement
+ * @return view definition
+ */
+ public static Optional<String> getViewDefinition(final AlterViewStatement alterViewStatement) {
+ if (alterViewStatement instanceof MySQLStatement) {
+ return Optional.of(((MySQLAlterViewStatement) alterViewStatement).getViewDefinition());
+ }
+ if (alterViewStatement instanceof SQLServerStatement) {
+ return Optional.of(((SQLServerAlterViewStatement) alterViewStatement).getViewDefinition());
}
return Optional.empty();
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/ddl/MySQLAlterViewStatement.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/ddl/MySQLAlterViewStatement.java
index c374e22d463..2a49db51c4c 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/ddl/MySQLAlterViewStatement.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/ddl/MySQLAlterViewStatement.java
@@ -24,8 +24,6 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterViewSt
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.MySQLStatement;
-import java.util.Optional;
-
/**
* MySQL alter view statement.
*/
@@ -36,12 +34,5 @@ public final class MySQLAlterViewStatement extends AlterViewStatement implements
private SelectStatement select;
- /**
- * Get select statement.
- *
- * @return select statement
- */
- public Optional<SelectStatement> getSelect() {
- return Optional.ofNullable(select);
- }
+ private String viewDefinition;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerAlterViewStatement.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerAlterViewStatement.java
index 1652a9c8e70..387d7989cce 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerAlterViewStatement.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerAlterViewStatement.java
@@ -17,13 +17,22 @@
package org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl;
+import lombok.Getter;
+import lombok.Setter;
import lombok.ToString;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterViewStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.SQLServerStatement;
/**
* SQLServer alter view statement.
*/
+@Getter
+@Setter
@ToString(callSuper = true)
public final class SQLServerAlterViewStatement extends AlterViewStatement implements SQLServerStatement {
+
+ private SelectStatement select;
+
+ private String viewDefinition;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/ddl/AlterViewStatementHandlerTest.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/ddl/AlterViewStatementHandlerTest.java
index 82dea074bbb..8aa9b674c30 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/ddl/AlterViewStatementHandlerTest.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/ddl/AlterViewStatementHandlerTest.java
@@ -27,12 +27,14 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.ddl.
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterViewStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.ddl.PostgreSQLAlterViewStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterViewStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dml.SQLServerSelectStatement;
import org.junit.Test;
import java.util.Optional;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
public final class AlterViewStatementHandlerTest {
@@ -44,13 +46,6 @@ public final class AlterViewStatementHandlerTest {
assertTrue(selectStatement.isPresent());
}
- @Test
- public void assertGetSelectStatementWithoutSelectStatementForMySQL() {
- MySQLAlterViewStatement alterViewStatement = new MySQLAlterViewStatement();
- Optional<SelectStatement> selectStatement = AlterViewStatementHandler.getSelectStatement(alterViewStatement);
- assertFalse(selectStatement.isPresent());
- }
-
@Test
public void assertGetRenameViewWithRenameViewSegmentForPostgreSQL() {
PostgreSQLAlterViewStatement alterViewStatement = new PostgreSQLAlterViewStatement();
@@ -90,7 +85,9 @@ public final class AlterViewStatementHandlerTest {
assertFalse(AlterViewStatementHandler.getSelectStatement(new OpenGaussAlterViewStatement()).isPresent());
assertFalse(AlterViewStatementHandler.getSelectStatement(new OracleAlterViewStatement()).isPresent());
assertFalse(AlterViewStatementHandler.getSelectStatement(new PostgreSQLAlterViewStatement()).isPresent());
- assertFalse(AlterViewStatementHandler.getSelectStatement(new SQLServerAlterViewStatement()).isPresent());
+ SQLServerAlterViewStatement alterViewStatement = new SQLServerAlterViewStatement();
+ alterViewStatement.setSelect(mock(SQLServerSelectStatement.class));
+ assertTrue(AlterViewStatementHandler.getSelectStatement(alterViewStatement).isPresent());
}
@Test
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/DDLStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/DDLStatementAssert.java
index 34ef1cee8f0..3d977b2ddc6 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/DDLStatementAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/DDLStatementAssert.java
@@ -22,6 +22,7 @@ import lombok.NoArgsConstructor;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterIndexStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterSystemStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterTableStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterViewStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CloseStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.ClusterStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CommentStatement;
@@ -32,6 +33,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatemen
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DeclareStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropIndexStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropTableStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropViewStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.FetchStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.ListenStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.MoveStatement;
@@ -56,6 +58,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.AlterSynonymStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.AlterSystemStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.AlterTableStatementAssert;
+import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.AlterViewStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.AnalyzeStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.AssociateStatisticsStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.AuditStatementAssert;
@@ -70,6 +73,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.DisassociateStatisticsStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.DropIndexStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.DropTableStatementAssert;
+import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.DropViewStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.FetchStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.ListenStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl.MoveStatementAssert;
@@ -87,6 +91,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterSynonymStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterSystemStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterTableStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterViewStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AnalyzeStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AssociateStatisticsStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AuditStatementTestCase;
@@ -101,6 +106,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.DisassociateStatisticsStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.DropIndexStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.DropTableStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.DropViewStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.FetchStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.ListenStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.MoveStatementTestCase;
@@ -187,6 +193,10 @@ public final class DDLStatementAssert {
SecurityLabelStmtStatementAssert.assertIs(assertContext, (SecurityLabelStmtStatement) actual, (SecurityLabelStmtStatementTestCase) expected);
} else if (actual instanceof CreateViewStatement) {
CreateViewStatementAssert.assertIs(assertContext, (CreateViewStatement) actual, (CreateViewStatementTestCase) expected);
+ } else if (actual instanceof AlterViewStatement) {
+ AlterViewStatementAssert.assertIs(assertContext, (AlterViewStatement) actual, (AlterViewStatementTestCase) expected);
+ } else if (actual instanceof DropViewStatement) {
+ DropViewStatementAssert.assertIs(assertContext, (DropViewStatement) actual, (DropViewStatementTestCase) expected);
}
}
}
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateViewStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AlterViewStatementAssert.java
similarity index 61%
copy from shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateViewStatementAssert.java
copy to shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AlterViewStatementAssert.java
index c5b3ec21477..2733b5b2d8f 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateViewStatementAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AlterViewStatementAssert.java
@@ -19,56 +19,57 @@ package org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statemen
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateViewStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterViewStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.AlterViewStatementHandler;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.table.TableAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dml.impl.SelectStatementAssert;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.CreateViewStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterViewStatementTestCase;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
- * Create view statement assert.
+ * Alter view statement assert.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class CreateViewStatementAssert {
+public final class AlterViewStatementAssert {
/**
- * Assert create table statement is correct with expected parser result.
+ * Assert alter view statement is correct with expected parser result.
*
* @param assertContext assert context
- * @param actual actual create table statement
- * @param expected expected create table statement test case
+ * @param actual actual alter view statement
+ * @param expected expected alter view statement test case
*/
- public static void assertIs(final SQLCaseAssertContext assertContext, final CreateViewStatement actual, final CreateViewStatementTestCase expected) {
+ public static void assertIs(final SQLCaseAssertContext assertContext, final AlterViewStatement actual, final AlterViewStatementTestCase expected) {
assertView(assertContext, actual, expected);
assertViewDefinition(assertContext, actual, expected);
assertSelect(assertContext, actual, expected);
}
- private static void assertView(final SQLCaseAssertContext assertContext, final CreateViewStatement actual, final CreateViewStatementTestCase expected) {
+ private static void assertView(final SQLCaseAssertContext assertContext, final AlterViewStatement actual, final AlterViewStatementTestCase expected) {
TableAssert.assertIs(assertContext, actual.getView(), expected.getView());
}
- private static void assertViewDefinition(final SQLCaseAssertContext assertContext, final CreateViewStatement actual, final CreateViewStatementTestCase expected) {
+ private static void assertViewDefinition(final SQLCaseAssertContext assertContext, final AlterViewStatement actual, final AlterViewStatementTestCase expected) {
if (null != expected.getViewDefinition()) {
- assertNotNull("actual view definition should exist", actual.getViewDefinition());
- assertThat(assertContext.getText(String.format("`%s`'s view definition assertion error: ", actual.getClass().getSimpleName())), actual.getViewDefinition(),
+ assertTrue("actual view definition should exist", AlterViewStatementHandler.getViewDefinition(actual).isPresent());
+ assertThat(assertContext.getText(String.format("`%s`'s view definition assertion error: ", actual.getClass().getSimpleName())), AlterViewStatementHandler.getViewDefinition(actual).get(),
is(expected.getViewDefinition()));
} else {
- assertNull("actual view definition should not exist", actual.getViewDefinition());
+ assertFalse("actual view definition should not exist", AlterViewStatementHandler.getViewDefinition(actual).isPresent());
}
}
- private static void assertSelect(final SQLCaseAssertContext assertContext, final CreateViewStatement actual, final CreateViewStatementTestCase expected) {
+ private static void assertSelect(final SQLCaseAssertContext assertContext, final AlterViewStatement actual, final AlterViewStatementTestCase expected) {
if (null != expected.getSelectStatement()) {
- assertNotNull("actual select statement should exist", actual.getSelect());
- SelectStatementAssert.assertIs(assertContext, actual.getSelect(), expected.getSelectStatement());
+ assertTrue("actual select statement should exist", AlterViewStatementHandler.getSelectStatement(actual).isPresent());
+ SelectStatementAssert.assertIs(assertContext, AlterViewStatementHandler.getSelectStatement(actual).get(), expected.getSelectStatement());
} else {
- assertNull("actual select statement should not exist", actual.getSelect());
+ assertFalse("actual select statement should not exist", AlterViewStatementHandler.getSelectStatement(actual).isPresent());
}
}
}
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateViewStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateViewStatementAssert.java
index c5b3ec21477..20b9dff4290 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateViewStatementAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateViewStatementAssert.java
@@ -37,11 +37,11 @@ import static org.junit.Assert.assertNull;
public final class CreateViewStatementAssert {
/**
- * Assert create table statement is correct with expected parser result.
+ * Assert create view statement is correct with expected parser result.
*
* @param assertContext assert context
- * @param actual actual create table statement
- * @param expected expected create table statement test case
+ * @param actual actual create view statement
+ * @param expected expected create view statement test case
*/
public static void assertIs(final SQLCaseAssertContext assertContext, final CreateViewStatement actual, final CreateViewStatementTestCase expected) {
assertView(assertContext, actual, expected);
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/DropViewStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/DropViewStatementAssert.java
new file mode 100644
index 00000000000..52a3b4e6cb2
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/DropViewStatementAssert.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+
+package org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.ddl.impl;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropViewStatement;
+import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
+import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.table.TableAssert;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.DropViewStatementTestCase;
+
+/**
+ * Drop view statement assert.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DropViewStatementAssert {
+
+ /**
+ * Assert drop view statement is correct with expected parser result.
+ *
+ * @param assertContext assert context
+ * @param actual actual drop view statement
+ * @param expected expected drop view statement test case
+ */
+ public static void assertIs(final SQLCaseAssertContext assertContext, final DropViewStatement actual, final DropViewStatementTestCase expected) {
+ assertViews(assertContext, actual, expected);
+ }
+
+ private static void assertViews(final SQLCaseAssertContext assertContext, final DropViewStatement actual, final DropViewStatementTestCase expected) {
+ TableAssert.assertIs(assertContext, actual.getViews(), expected.getViews());
+ }
+}
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AlterViewStatementTestCase.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AlterViewStatementTestCase.java
index a49537e293c..d4c76d5e02d 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AlterViewStatementTestCase.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AlterViewStatementTestCase.java
@@ -17,10 +17,31 @@
package org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedSimpleTable;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dml.SelectStatementTestCase;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
/**
* Alter view statement test case.
*/
+@Getter
+@Setter
public final class AlterViewStatementTestCase extends SQLParserTestCase {
+
+ @XmlAttribute(name = "view-definition")
+ private String viewDefinition;
+
+ @XmlElement(name = "view")
+ private ExpectedSimpleTable view;
+
+ @XmlElement(name = "rename-view")
+ private ExpectedSimpleTable renameView;
+
+ @XmlElement(name = "select")
+ private SelectStatementTestCase selectStatement;
}
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DropViewStatementTestCase.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DropViewStatementTestCase.java
index ad65a7d92cb..cfdec0087b9 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DropViewStatementTestCase.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DropViewStatementTestCase.java
@@ -17,10 +17,22 @@
package org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedSimpleTable;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import javax.xml.bind.annotation.XmlElement;
+import java.util.LinkedList;
+import java.util.List;
+
/**
* Drop view statement test case.
*/
+@Getter
+@Setter
public final class DropViewStatementTestCase extends SQLParserTestCase {
+
+ @XmlElement(name = "view")
+ private final List<ExpectedSimpleTable> views = new LinkedList<>();
}
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-view.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-view.xml
index 9faad410a87..edfc0706dd5 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-view.xml
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-view.xml
@@ -17,13 +17,52 @@
-->
<sql-parser-test-cases>
- <alter-view sql-case-id="alter_view" />
- <alter-view sql-case-id="alter_view_set_default_column" />
- <alter-view sql-case-id="alter_view_drop_default" />
- <alter-view sql-case-id="alter_view_owner" />
- <alter-view sql-case-id="alter_view_rename" />
- <alter-view sql-case-id="alter_view_rename_column" />
- <alter-view sql-case-id="alter_view_set_schema" />
- <alter-view sql-case-id="alter_view_set_view_option" />
- <alter-view sql-case-id="alter_view_reset" />
+ <alter-view sql-case-id="alter_view">
+ <view name="customer_ro" start-index="11" stop-index="21" />
+ </alter-view>
+
+ <alter-view sql-case-id="alter_view_set_default_column">
+ <view name="order_view" start-index="11" stop-index="20" />
+ </alter-view>
+
+ <alter-view sql-case-id="alter_view_drop_default">
+ <view name="order_view" start-index="11" stop-index="20" />
+ </alter-view>
+
+ <alter-view sql-case-id="alter_view_owner">
+ <view name="order_view" start-index="11" stop-index="20" />
+ </alter-view>
+
+ <alter-view sql-case-id="alter_view_rename">
+ <view name="order_view" start-index="11" stop-index="20" />
+ <rename-view name="new_order_view" start-index="32" stop-index="45" />
+ </alter-view>
+
+ <alter-view sql-case-id="alter_view_rename_column">
+ <view name="order_view" start-index="11" stop-index="20" />
+ </alter-view>
+
+ <alter-view sql-case-id="alter_view_set_schema">
+ <view name="order_view" start-index="11" stop-index="20" />
+ </alter-view>
+
+ <alter-view sql-case-id="alter_view_set_view_option">
+ <view name="order_view" start-index="11" stop-index="20" />
+ </alter-view>
+
+ <alter-view sql-case-id="alter_view_reset">
+ <view name="order_view" start-index="11" stop-index="20" />
+ </alter-view>
+
+ <alter-view sql-case-id="alter_view_definition" view-definition="SELECT * FROM t_order">
+ <view name="order_view" start-index="11" stop-index="20" />
+ <select>
+ <projections start-index="32" stop-index="32">
+ <shorthand-projection start-index="32" stop-index="32" />
+ </projections>
+ <from>
+ <simple-table name="t_order" start-index="39" stop-index="45" />
+ </from>
+ </select>
+ </alter-view>
</sql-parser-test-cases>
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/drop-view.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/drop-view.xml
index 7cf571b58f6..494aa27d089 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/drop-view.xml
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/drop-view.xml
@@ -17,8 +17,24 @@
-->
<sql-parser-test-cases>
- <drop-view sql-case-id="drop_view" />
- <drop-view sql-case-id="drop_view_with_schemaname" />
- <drop-view sql-case-id="drop_view_cascade_constraints" />
- <drop-view sql-case-id="drop_view_cascade" />
+ <drop-view sql-case-id="drop_view">
+ <view name="kinds" start-index="10" stop-index="14" />
+ </drop-view>
+
+ <drop-view sql-case-id="drop_view_with_schemaname">
+ <view name="viewName" start-index="10" stop-index="28">
+ <owner name="schemaName" start-index="10" stop-index="19" />
+ </view>
+ </drop-view>
+
+ <drop-view sql-case-id="drop_view_cascade_constraints">
+ <view name="viewName" start-index="10" stop-index="28">
+ <owner name="schemaName" start-index="10" stop-index="19" />
+ </view>
+ </drop-view>
+
+ <drop-view sql-case-id="drop_view_cascade">
+ <view name="order_view" start-index="17" stop-index="26" />
+ <view name="kinds" start-index="10" stop-index="14" />
+ </drop-view>
</sql-parser-test-cases>
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-view.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-view.xml
index d7a5a42aff1..a6cfb5c5a41 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-view.xml
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-view.xml
@@ -26,4 +26,5 @@
<sql-case id="alter_view_set_schema" value="ALTER VIEW order_view SET SCHEMA test" db-types="PostgreSQL,openGauss" />
<sql-case id="alter_view_set_view_option" value="ALTER VIEW order_view SET (security_barrier=TRUE)" db-types="PostgreSQL,openGauss" />
<sql-case id="alter_view_reset" value="ALTER VIEW order_view RESET (security_barrier)" db-types="PostgreSQL,openGauss" />
+ <sql-case id="alter_view_definition" value="ALTER VIEW order_view AS SELECT * FROM t_order" db-types="MySQL,SQLServer" />
</sql-cases>