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 <[email protected]>
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" />