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=""" end-delimiter=""" 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 "order_index" 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" />