This is an automated email from the ASF dual-hosted git repository. duanzhengqiang 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 6d74b70ec84 Support parsing drop edition in oracle (#17416) 6d74b70ec84 is described below commit 6d74b70ec84c93283f98b051a3576a895d9e0316 Author: JackieYan <chakk6...@gmail.com> AuthorDate: Sat May 7 21:25:40 2022 +0800 Support parsing drop edition in oracle (#17416) * support parsing drop edition in oracle * add blank lines at the end for new files * fix test --- .../src/main/antlr4/imports/oracle/DDLStatement.g4 | 4 +++ .../sql/parser/autogen/OracleStatement.g4 | 1 + .../impl/OracleDDLStatementSQLVisitor.java | 7 +++++ .../core/database/visitor/SQLVisitorRule.java | 4 ++- .../oracle/ddl/OracleDropEditionStatement.java | 30 ++++++++++++++++++++++ .../jaxb/cases/domain/SQLParserTestCases.java | 5 ++++ .../ddl/DropEditionStatementTestCase.java | 26 +++++++++++++++++++ .../src/main/resources/case/ddl/drop-edition.xml | 21 +++++++++++++++ .../resources/sql/supported/ddl/drop-edition.xml | 21 +++++++++++++++ 9 files changed, 118 insertions(+), 1 deletion(-) 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 aad085b13f2..363f858b2f4 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 @@ -76,6 +76,10 @@ dropView : DROP VIEW viewName (CASCADE CONSTRAINTS)? ; +dropEdition + : DROP EDITION editionName CASCADE? + ; + 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 d2811ac90db..001633aec26 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 @@ -80,5 +80,6 @@ execute | createDirectory | dropSynonym | dropPackage + | dropEdition ) 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 a982f5e2697..6427423bd2e 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 @@ -44,6 +44,7 @@ import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.Create import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDefinitionClauseContext; import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDimensionContext; import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateFunctionContext; +import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropEditionContext; import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateIndexContext; import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateTableContext; import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateEditionContext; @@ -120,6 +121,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.Ora import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDatabaseStatement; import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDimensionStatement; import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateFunctionStatement; +import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropEditionStatement; import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateIndexStatement; import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateTableStatement; import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateEditionStatement; @@ -678,4 +680,9 @@ public final class OracleDDLStatementSQLVisitor extends OracleStatementSQLVisito public ASTNode visitCreateFunction(final CreateFunctionContext ctx) { return new OracleCreateFunctionStatement(); } + + @Override + public ASTNode visitDropEdition(final DropEditionContext ctx) { + return new OracleDropEditionStatement(); + } } diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java index b3c0e8c68b5..541529222c3 100644 --- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java +++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java @@ -494,7 +494,9 @@ public enum SQLVisitorRule { DROP_OPERATOR_FAMILY("DropOperatorFamily", SQLStatementType.DDL), - DROP_ACCESS_METHOD("DropAccessMethod", SQLStatementType.DDL); + DROP_ACCESS_METHOD("DropAccessMethod", SQLStatementType.DDL), + + DROP_EDITION("DropEdition", SQLStatementType.DDL); private final String name; diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleDropEditionStatement.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleDropEditionStatement.java new file mode 100644 index 00000000000..f64fb89f8e2 --- /dev/null +++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleDropEditionStatement.java @@ -0,0 +1,30 @@ +/* + * 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.sql.parser.sql.dialect.statement.oracle.ddl; + +import lombok.ToString; +import org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement; +import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement; +import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.OracleStatement; + +/** + * Oracle drop edition statement. + */ +@ToString +public final class OracleDropEditionStatement extends AbstractSQLStatement implements DDLStatement, OracleStatement { +} diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java index e60b8a55ec1..fd76ce1cbad 100644 --- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java +++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java @@ -199,6 +199,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.RenameStatementTestCase; import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.RenameTableStatementTestCase; import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.TruncateStatementTestCase; +import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.DropEditionStatementTestCase; import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.AddShardingHintDatabaseValueStatementTestCase; import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.AddShardingHintTableValueStatementTestCase; import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.AlterInstanceStatementTestCase; @@ -387,6 +388,9 @@ public final class SQLParserTestCases { @XmlElement(name = "truncate") private final List<TruncateStatementTestCase> truncateTestCases = new LinkedList<>(); + @XmlElement(name = "drop-edition") + private final List<DropEditionStatementTestCase> dropEditionTestCases = new LinkedList<>(); + @XmlElement(name = "create-index") private final List<CreateIndexStatementTestCase> createIndexTestCases = new LinkedList<>(); @@ -1326,6 +1330,7 @@ public final class SQLParserTestCases { putAll(dropTableTestCases, result); putAll(dropTextSearchTestCases, result); putAll(truncateTestCases, result); + putAll(dropEditionTestCases, result); putAll(createIndexTestCases, result); putAll(alterIndexTestCases, result); putAll(dropIndexTestCases, result); diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DropEditionStatementTestCase.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DropEditionStatementTestCase.java new file mode 100644 index 00000000000..45abf8c62b0 --- /dev/null +++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/DropEditionStatementTestCase.java @@ -0,0 +1,26 @@ +/* + * 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.jaxb.cases.domain.statement.ddl; + +import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase; + +/** + * Drop edition statement test case. + */ +public final class DropEditionStatementTestCase extends SQLParserTestCase { +} diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/drop-edition.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/drop-edition.xml new file mode 100644 index 00000000000..1c10dc1b772 --- /dev/null +++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/drop-edition.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-parser-test-cases> + <drop-edition sql-case-id="drop_edition" /> +</sql-parser-test-cases> diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/drop-edition.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/drop-edition.xml new file mode 100644 index 00000000000..e3c51fe490e --- /dev/null +++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/drop-edition.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_edition" value="DROP EDITION test_ed" db-types="Oracle" /> +</sql-cases>