You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by li...@apache.org on 2022/04/10 09:17:45 UTC
[shardingsphere] branch master updated: Support Parsing `DROP VIEW` in Oracle (#16708)
This is an automated email from the ASF dual-hosted git repository.
liangda 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 9491aa9a7ad Support Parsing `DROP VIEW` in Oracle (#16708)
9491aa9a7ad is described below
commit 9491aa9a7ad7fc44d6c688ad5e084afaffcdf857
Author: Everly Precia Suresh <77...@users.noreply.github.com>
AuthorDate: Sun Apr 10 14:47:29 2022 +0530
Support Parsing `DROP VIEW` in Oracle (#16708)
* add dropView
* correct grammar & optimize code
* optimize code
---
.../src/main/antlr4/imports/oracle/DDLStatement.g4 | 4 ++++
.../shardingsphere/sql/parser/autogen/OracleStatement.g4 | 1 +
.../visitor/statement/impl/OracleDDLStatementSQLVisitor.java | 7 +++++++
.../dialect/statement/oracle/ddl/OracleDropViewStatement.java | 11 +++++++----
.../cases/domain/statement/ddl/DropViewStatementTestCase.java | 2 +-
.../src/main/resources/case/ddl/drop-view.xml | 2 ++
.../src/main/resources/sql/supported/ddl/drop-view.xml | 4 +++-
7 files changed, 25 insertions(+), 6 deletions(-)
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
index 1e7664aa398..8fc2c527b05 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
@@ -43,6 +43,10 @@ dropIndex
: DROP INDEX indexName ONLINE? FORCE? ((DEFERRED|IMMEDIATE) INVALIDATION)?
;
+dropView
+ : DROP VIEW viewName (CASCADE CONSTRAINTS)?
+ ;
+
truncateTable
: TRUNCATE TABLE tableName materializedViewLogClause? dropReuseClause? CASCADE?
;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
index 3115b0a0d22..7752dcf4a1d 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
@@ -69,5 +69,6 @@ execute
| createFunction
| dropDatabaseLink
| dropDirectory
+ | dropView
) SEMI_?
;
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 1bdaa8e3ce5..9c95262f8d1 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
@@ -53,6 +53,7 @@ import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDi
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropIndexContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropTableContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDatabaseLinkContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropViewContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDirectoryContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.FlashbackDatabaseContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.FlashbackTableContext;
@@ -117,6 +118,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.Ora
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropIndexStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropTableStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDatabaseLinkStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropViewStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleFlashbackDatabaseStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleFlashbackTableStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleNoAuditStatement;
@@ -375,6 +377,11 @@ public final class OracleDDLStatementSQLVisitor extends OracleStatementSQLVisito
public ASTNode visitDropDatabaseLink(final DropDatabaseLinkContext ctx) {
return new OracleDropDatabaseLinkStatement();
}
+
+ @Override
+ public ASTNode visitDropView(final DropViewContext ctx) {
+ return new OracleDropViewStatement();
+ }
@Override
public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
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-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleDropViewStatement.java
similarity index 65%
copy from shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DropViewStatementTestCase.java
copy to shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleDropViewStatement.java
index b6c75f73120..aa3faad9641 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-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleDropViewStatement.java
@@ -15,12 +15,15 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl;
+package org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import lombok.ToString;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropViewStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.OracleStatement;
/**
- * Drop trigger statement test case.
+ * Oracle drop view statement.
*/
-public final class DropViewStatementTestCase extends SQLParserTestCase {
+@ToString
+public final class OracleDropViewStatement extends DropViewStatement implements OracleStatement {
}
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 b6c75f73120..ad65a7d92cb 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
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domai
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
/**
- * Drop trigger statement test case.
+ * Drop view statement test case.
*/
public final class DropViewStatementTestCase extends SQLParserTestCase {
}
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 2b9b9074c3a..3191098c4cb 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
@@ -18,4 +18,6 @@
<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" />
</sql-parser-test-cases>
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/drop-view.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/drop-view.xml
index d642e0d6628..c5949c3b8a3 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/drop-view.xml
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/drop-view.xml
@@ -17,5 +17,7 @@
-->
<sql-cases>
- <sql-case id="drop_view" value="DROP VIEW kinds" db-types="PostgreSQL,openGauss, SQLServer" />
+ <sql-case id="drop_view" value="DROP VIEW kinds" db-types="PostgreSQL,openGauss, SQLServer, Oracle" />
+ <sql-case id="drop_view_with_schemaname" value="DROP VIEW schemaName.viewName;" db-types="Oracle" />
+ <sql-case id="drop_view_cascade_constraints" value="DROP VIEW schemaName.viewName CASCADE CONSTRAINTS;" db-types="Oracle" />
</sql-cases>