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 2021/02/09 07:14:16 UTC

[shardingsphere] branch master updated: fix: add grammar for alter index. (#9382)

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 92cb453  fix: add grammar for alter index. (#9382)
92cb453 is described below

commit 92cb45313c6b2db62dcd3adeb984ffee86ae203e
Author: coco <co...@gmail.com>
AuthorDate: Tue Feb 9 15:13:47 2021 +0800

    fix: add grammar for alter index. (#9382)
---
 .../src/main/antlr4/imports/oracle/DDLStatement.g4 | 24 +++++++++++-
 .../main/antlr4/imports/oracle/OracleKeyword.g4    | 44 ++++++++++++++++++++++
 .../src/main/resources/case/ddl/alter-index.xml    | 40 +++++++++++++++++++-
 .../src/main/resources/sql/supported/ddl/alter.xml |  9 +++++
 4 files changed, 113 insertions(+), 4 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 a1592d2..455408c 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
@@ -31,9 +31,8 @@ alterTable
     : ALTER TABLE tableName memOptimizeClause alterDefinitionClause enableDisableClauses
     ;
 
-// TODO hongjun throw exeption when alter index on oracle
 alterIndex
-    : ALTER INDEX indexName renameIndexClause
+    : ALTER INDEX indexName alterIndexInformationClause
     ;
 
 dropTable
@@ -371,6 +370,19 @@ objectProperty
     : (columnName | attributeName) (DEFAULT expr)? (inlineConstraint* | inlineRefConstraint?) | outOfLineConstraint | outOfLineRefConstraint
     ;
 
+alterIndexInformationClause
+    : rebuildClause ((DEFERRED|IMMEDIATE) | INVALIDATION)?
+    | parallelClause
+    | COMPILE
+    | (ENABLE | DISABLE)
+    | UNUSABLE ONLINE? ((DEFERRED|IMMEDIATE)|INVALIDATION)?
+    | (VISIBLE | INVISIBLE)
+    | renameIndexClause
+    | COALESCE CLEANUP? ONLY? parallelClause?
+    | ((MONITORING | NOMONITORING) USAGE)
+    | UPDATE BLOCK REFERENCES
+    ;
+
 renameIndexClause
     : (RENAME TO indexName)?
     ;
@@ -403,6 +415,14 @@ enableDisableOthers
     : (ENABLE | DISABLE) (TABLE LOCK | ALL TRIGGERS | CONTAINER_MAP | CONTAINERS_DEFAULT)
     ;
 
+rebuildClause
+    : REBUILD parallelClause?
+    ;
+
+parallelClause
+    : PARALLEL
+    ;
+
 usableSpecification
     : (USABLE | UNUSABLE)
     ;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
index 22e6cac..d36dd1d 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
@@ -839,6 +839,22 @@ BATCH
     : B A T C H
     ;
 
+BLOCK
+    : B L O C K
+    ;
+
+REBUILD
+    : R E B U I L D
+    ;
+
+INVALIDATION
+    : I N V A L I D A T I O N
+    ;
+
+COMPILE
+    : C O M P I L E
+    ;
+
 USABLE
     : U S A B L E
     ;
@@ -847,6 +863,34 @@ UNUSABLE
     : U N U S A B L E
     ;
 
+ONLINE
+    : O N L I N E
+    ;
+
+MONITORING
+    : M O N I T O R I N G
+    ;
+
+NOMONITORING
+    : N O M O N I T O R I N G
+    ;
+
+USAGE
+    : U S A G E
+    ;
+
+COALESCE
+    : C O A L E S C E
+    ;
+
+CLEANUP
+    : C L E A N U P
+    ;
+
+PARALLEL
+    : P A R A L L E L
+    ;
+
 INVALIDATION
     : I N V A L I D A T I O N
     ;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-index.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-index.xml
index 02ea058..b79cd08 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-index.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-index.xml
@@ -29,7 +29,43 @@
     <alter-index sql-case-id="alter_index_with_quota">
         <index name="order_index" start-delimiter="&quot;" end-delimiter="&quot;" start-index="12" stop-index="24" />
     </alter-index>
-
+    
+    <alter-index sql-case-id="alter_index_with_parallel">
+        <index name="order_index" start-index="12" stop-index="22" />
+    </alter-index>
+    
+    <alter-index sql-case-id="alter_index_with_compile">
+        <index name="order_index" start-index="12" stop-index="22" />
+    </alter-index>
+    
+    <alter-index sql-case-id="alter_index_with_disable">
+        <index name="order_index" start-index="12" stop-index="22" />
+    </alter-index>
+    
+    <alter-index sql-case-id="alter_index_with_unusable">
+        <index name="order_index" start-index="12" stop-index="22" />
+    </alter-index>
+    
+    <alter-index sql-case-id="alter_index_with_visable">
+        <index name="order_index" start-index="12" stop-index="22" />
+    </alter-index>
+    
+    <alter-index sql-case-id="alter_index_with_rename">
+        <index name="order_index" start-index="12" stop-index="22" />
+    </alter-index>
+    
+    <alter-index sql-case-id="alter_index_with_coalesce">
+        <index name="order_index" start-index="12" stop-index="22" />
+    </alter-index>
+    
+    <alter-index sql-case-id="alter_index_with_usage">
+        <index name="order_index" start-index="12" stop-index="22" />
+    </alter-index>
+    
+    <alter-index sql-case-id="alter_index_with_update">
+        <index name="order_index" start-index="12" stop-index="22" />
+    </alter-index>
+    
     <alter-index sql-case-id="alter_index_rebuild">
         <table name="t_order" start-index="27" stop-index="33" />
     </alter-index>
@@ -37,7 +73,7 @@
     <alter-index sql-case-id="alter_index_with_quota_bracket">
         <table name="t_order" start-delimiter="[" end-delimiter="]" start-index="29" stop-index="37" />
     </alter-index>
-
+    
     <alter-index sql-case-id="alter_index_alter_column" />
     <alter-index sql-case-id="alter_index_set_tablespace" />
 </sql-parser-test-cases>
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter.xml
index 5e0ff5e..a1df893 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter.xml
@@ -129,6 +129,15 @@
         order_index
     REBUILD PARALLEL    " db-types="Oracle" />
     <sql-case id="alter_index_with_quota" value="ALTER INDEX &quot;order_index&quot; REBUILD PARALLEL" db-types="Oracle" />
+    <sql-case id="alter_index_with_parallel" value="ALTER INDEX order_index PARALLEL" db-types="Oracle" />
+    <sql-case id="alter_index_with_compile" value="ALTER INDEX order_index COMPILE" db-types="Oracle" />
+    <sql-case id="alter_index_with_disable" value="ALTER INDEX order_index DISABLE" db-types="Oracle" />
+    <sql-case id="alter_index_with_unusable" value="ALTER INDEX order_index UNUSABLE ONLINE IMMEDIATE INVALIDATION" db-types="Oracle" />
+    <sql-case id="alter_index_with_visable" value="ALTER INDEX order_index VISIBLE" db-types="Oracle" />
+    <sql-case id="alter_index_with_rename" value="ALTER INDEX order_index RENAME TO order_index_new" db-types="Oracle" />
+    <sql-case id="alter_index_with_coalesce" value="ALTER INDEX order_index COALESCE CLEANUP ONLY PARALLEL" db-types="Oracle" />
+    <sql-case id="alter_index_with_usage" value="ALTER INDEX order_index MONITORING USAGE" db-types="Oracle" />
+    <sql-case id="alter_index_with_update" value="ALTER INDEX order_index UPDATE BLOCK REFERENCES" db-types="Oracle" />
     <sql-case id="alter_index_rebuild" value="ALTER INDEX order_index ON t_order REBUILD" db-types="SQLServer" />
     <sql-case id="alter_index_with_quota_bracket" value="ALTER INDEX [order_index] ON [t_order] REBUILD" db-types="SQLServer" />
     <sql-case id="alter_index_set_tablespace" value="ALTER INDEX distributors SET TABLESPACE fasttablespace" db-types="PostgreSQL" />