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 cf016052109 Support oracle alter rollback segment parse (#27953)
cf016052109 is described below
commit cf0160521091e4e03cb04ce0df4f93c93643b53b
Author: niu niu <[email protected]>
AuthorDate: Mon Aug 7 09:12:43 2023 +0800
Support oracle alter rollback segment parse (#27953)
---
.../src/main/antlr4/imports/oracle/BaseRule.g4 | 6 ++++-
.../src/main/antlr4/imports/oracle/DDLStatement.g4 | 4 ++++
.../sql/parser/autogen/OracleStatement.g4 | 1 +
.../statement/type/OracleDDLStatementVisitor.java | 7 ++++++
.../core/database/visitor/SQLVisitorRule.java | 2 ++
.../ddl/OracleAlterRollbackSegmentStatement.java | 28 ++++++++++++++++++++++
.../cases/parser/jaxb/RootSQLParserTestCases.java | 4 ++++
.../ddl/AlterRollbackSegmentStatementTestCase.java | 26 ++++++++++++++++++++
.../src/main/resources/case/ddl/alter-profile.xml | 3 +++
...lter-profile.xml => alter-rollback-segment.xml} | 4 ++--
.../resources/sql/supported/ddl/alter-profile.xml | 3 +++
.../supported/ddl/alter-rollback-segment.xml} | 8 +++----
12 files changed, 89 insertions(+), 7 deletions(-)
diff --git
a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
index 8a3ddee75fb..c04563e5749 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
@@ -200,7 +200,7 @@ unreservedWord2
| CREATE_STORED_OUTLINES | CROSSEDITION | CSCONVERT | CUBE_GB | CUME_DIST
| CUME_DISTM | CURRENT | CURRENTV | CURRENT_DATE
| CURRENT_SCHEMA | CURRENT_TIME | CURRENT_TIMESTAMP | CURSOR_SHARING_EXACT
| CURSOR_SPECIFIC_SEGMENT | CV
| DATABASE_DEFAULT | DATAOBJNO | DATAOBJ_TO_PARTITION | DATE_MODE | DBA |
DBMS_STATS | DB_ROLE_CHANGE | DB_VERSION
- | DEBUGGER | DECLARE | DECOMPOSE | DECR | DEFAULTS | DEFINED | DEGREE |
DELAY | DELETEXML | DENSE_RANKM | DEQUEUE | DEREF
+ | DEBUGGER | DECLARE | DECOMPOSE | DECR | DEFAULT | DEFAULTS | DEFINED |
DEGREE | DELAY | DELETEXML | DENSE_RANKM | DEQUEUE | DEREF
| DEREF_NO_REWRITE | DETACHED | DIRECT_LOAD | DISABLE_PRESET |
DISABLE_RPKE | DISTINGUISHED | DML_UPDATE | DOCFIDELITY
| DOCUMENT | DOMAIN_INDEX_FILTER | DOMAIN_INDEX_NO_SORT |
DOMAIN_INDEX_SORT | DRIVING_SITE | DROP_COLUMN | DROP_GROUP
| DST_UPGRADE_INSERT_CONV | DUMP | DYNAMIC | DYNAMIC_SAMPLING |
DYNAMIC_SAMPLING_EST_CDN | EACH | EDITIONING | EDITIONS
@@ -383,6 +383,10 @@ profileName
: identifier
;
+rollbackSegmentName
+ : identifier
+ ;
+
typeName
: (owner DOT_)? name
;
diff --git
a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
index b602aa248ab..11171ed408c 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
@@ -1196,6 +1196,10 @@ passwordParameters
| PASSWORD_ROLLOVER_TIME (expr | DEFAULT)
;
+alterRollbackSegment
+ : ALTER ROLLBACK SEGMENT rollbackSegmentName (ONLINE | OFFLINE |
storageClause | SHRINK (TO sizeClause)?)
+ ;
+
packageCompileClause
: COMPILE DEBUG? (PACKAGE | SPECIFICATION | BODY)?
(compilerParametersClause*)? (REUSE SETTINGS)?
;
diff --git
a/parser/sql/dialect/oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
b/parser/sql/dialect/oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
index ea09de497fe..8fc55aa20a9 100644
---
a/parser/sql/dialect/oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
+++
b/parser/sql/dialect/oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
@@ -117,6 +117,7 @@ execute
| alterCluster
| alterOperator
| alterProfile
+ | alterRollbackSegment
| alterDiskgroup
| alterIndexType
| alterMaterializedView
diff --git
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
index a247b90fa63..4c0023cee67 100644
---
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
+++
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
@@ -50,6 +50,7 @@ import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterP
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.AlterProfileContext;
+import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterRollbackSegmentContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSequenceContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSessionContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSynonymContext;
@@ -201,6 +202,7 @@ import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.Ora
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterPluggableDatabaseStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterProcedureStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterProfileStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterRollbackSegmentStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSequenceStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSessionStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSynonymStatement;
@@ -1042,6 +1044,11 @@ public final class OracleDDLStatementVisitor extends
OracleStatementVisitor impl
return new OracleAlterProfileStatement();
}
+ @Override
+ public ASTNode visitAlterRollbackSegment(final AlterRollbackSegmentContext
ctx) {
+ return new OracleAlterRollbackSegmentStatement();
+ }
+
@Override
public ASTNode visitDropOperator(final DropOperatorContext ctx) {
return new OracleDropOperatorStatement();
diff --git
a/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
b/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
index f83a796a061..197fcb86fb8 100644
---
a/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
+++
b/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
@@ -83,6 +83,8 @@ public enum SQLVisitorRule {
ALTER_PROFILE("AlterProfile", SQLStatementType.DDL),
+ ALTER_ROLLBACK_SEGMENT("AlterRollbackSegment", SQLStatementType.DDL),
+
DROP_TABLE("DropTable", SQLStatementType.DDL),
TRUNCATE_TABLE("TruncateTable", SQLStatementType.DDL),
diff --git
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAlterRollbackSegmentStatement.java
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAlterRollbackSegmentStatement.java
new file mode 100644
index 00000000000..e96b5c99506
--- /dev/null
+++
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAlterRollbackSegmentStatement.java
@@ -0,0 +1,28 @@
+/*
+ * 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
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 alter rollback segment statement.
+ */
+public final class OracleAlterRollbackSegmentStatement extends
AbstractSQLStatement implements DDLStatement, OracleStatement {
+}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
index 1e6db7e47b8..191e946c8c7 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
@@ -135,6 +135,7 @@ import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.AlterPublicationStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.AlterProfileStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.AlterRoutineStatementTestCase;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.AlterRollbackSegmentStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.AlterRuleStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.AlterSchemaStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.AlterSequenceStatementTestCase;
@@ -1380,6 +1381,9 @@ public final class RootSQLParserTestCases {
@XmlElement(name = "alter-profile")
private final List<AlterProfileStatementTestCase> alterProfileTestCases =
new LinkedList<>();
+ @XmlElement(name = "alter-rollback-segment")
+ private final List<AlterRollbackSegmentStatementTestCase>
alterRollbackSegmentTestCases = new LinkedList<>();
+
@XmlElement(name = "create-text-search")
private final List<CreateTextSearchStatementTestCase>
createTextSearchTestCases = new LinkedList<>();
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/AlterRollbackSegmentStatementTestCase.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/AlterRollbackSegmentStatementTestCase.java
new file mode 100644
index 00000000000..d5bb893eba3
--- /dev/null
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/AlterRollbackSegmentStatementTestCase.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.it.sql.parser.internal.cases.parser.jaxb.statement.ddl;
+
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+
+/**
+ * Alter rollback segment statement test case.
+ */
+public final class AlterRollbackSegmentStatementTestCase extends
SQLParserTestCase {
+}
diff --git a/test/it/parser/src/main/resources/case/ddl/alter-profile.xml
b/test/it/parser/src/main/resources/case/ddl/alter-profile.xml
index 3a865d5f9c0..1a0db3c6e8c 100644
--- a/test/it/parser/src/main/resources/case/ddl/alter-profile.xml
+++ b/test/it/parser/src/main/resources/case/ddl/alter-profile.xml
@@ -17,6 +17,9 @@
-->
<sql-parser-test-cases>
+ <alter-profile sql-case-id="alter_profile_limit_idle_time" />
+ <alter-profile
sql-case-id="alter_profile_limit_password_reuse_time_password_reuse_max_unlimited"
/>
+ <alter-profile sql-case-id="alter_profile_limit_password_verify_function"
/>
<alter-profile
sql-case-id="alter_profile_limit_failed_login_attempts_password_lock_time" />
<alter-profile
sql-case-id="alter_profile_limit_password_reuse_time_default_password_reuse_max_unlimited"
/>
</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/ddl/alter-profile.xml
b/test/it/parser/src/main/resources/case/ddl/alter-rollback-segment.xml
similarity index 81%
copy from test/it/parser/src/main/resources/case/ddl/alter-profile.xml
copy to test/it/parser/src/main/resources/case/ddl/alter-rollback-segment.xml
index 3a865d5f9c0..fa095f31744 100644
--- a/test/it/parser/src/main/resources/case/ddl/alter-profile.xml
+++ b/test/it/parser/src/main/resources/case/ddl/alter-rollback-segment.xml
@@ -17,6 +17,6 @@
-->
<sql-parser-test-cases>
- <alter-profile
sql-case-id="alter_profile_limit_failed_login_attempts_password_lock_time" />
- <alter-profile
sql-case-id="alter_profile_limit_password_reuse_time_default_password_reuse_max_unlimited"
/>
+ <alter-rollback-segment sql-case-id="alter_rollback_segment_shrink_to_m" />
+ <alter-rollback-segment sql-case-id="alter_rollback_segment_online" />
</sql-parser-test-cases>
diff --git
a/test/it/parser/src/main/resources/sql/supported/ddl/alter-profile.xml
b/test/it/parser/src/main/resources/sql/supported/ddl/alter-profile.xml
index f11169cc0c3..a051afc29af 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/alter-profile.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/alter-profile.xml
@@ -17,6 +17,9 @@
-->
<sql-cases>
+ <sql-case id="alter_profile_limit_idle_time" value="ALTER PROFILE default
LIMIT IDLE_TIME 2" db-types="Oracle" />
+ <sql-case
id="alter_profile_limit_password_reuse_time_password_reuse_max_unlimited"
value="ALTER PROFILE new_profile LIMIT PASSWORD_REUSE_TIME 90
PASSWORD_REUSE_MAX UNLIMITED" db-types="Oracle" />
+ <sql-case id="alter_profile_limit_password_verify_function" value="ALTER
PROFILE default LIMIT PASSWORD_VERIFY_FUNCTION verify_function_11G"
db-types="Oracle" />
<sql-case
id="alter_profile_limit_failed_login_attempts_password_lock_time" value="ALTER
PROFILE prof LIMIT FAILED_LOGIN_ATTEMPTS 9 PASSWORD_LOCK_TIME 10;"
db-types="Oracle" />
<sql-case
id="alter_profile_limit_password_reuse_time_default_password_reuse_max_unlimited"
value="ALTER PROFILE app_user LIMIT PASSWORD_REUSE_TIME DEFAULT
PASSWORD_REUSE_MAX UNLIMITED;" db-types="Oracle" />
</sql-cases>
diff --git a/test/it/parser/src/main/resources/case/ddl/alter-profile.xml
b/test/it/parser/src/main/resources/sql/supported/ddl/alter-rollback-segment.xml
similarity index 76%
copy from test/it/parser/src/main/resources/case/ddl/alter-profile.xml
copy to
test/it/parser/src/main/resources/sql/supported/ddl/alter-rollback-segment.xml
index 3a865d5f9c0..eb6c4e1810f 100644
--- a/test/it/parser/src/main/resources/case/ddl/alter-profile.xml
+++
b/test/it/parser/src/main/resources/sql/supported/ddl/alter-rollback-segment.xml
@@ -16,7 +16,7 @@
~ limitations under the License.
-->
-<sql-parser-test-cases>
- <alter-profile
sql-case-id="alter_profile_limit_failed_login_attempts_password_lock_time" />
- <alter-profile
sql-case-id="alter_profile_limit_password_reuse_time_default_password_reuse_max_unlimited"
/>
-</sql-parser-test-cases>
+<sql-cases>
+ <sql-case id="alter_rollback_segment_shrink_to_m" value="ALTER ROLLBACK
SEGMENT rbs_one SHRINK TO 100M" db-types="Oracle" />
+ <sql-case id="alter_rollback_segment_online" value="ALTER ROLLBACK SEGMENT
rbs_one ONLINE" db-types="Oracle" />
+</sql-cases>