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>

Reply via email to