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/04/29 11:45:59 UTC
[shardingsphere] branch master updated: Fix Oracle
addColumnSpecification grammar (#10201)
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 63d9908 Fix Oracle addColumnSpecification grammar (#10201)
63d9908 is described below
commit 63d990853a3ccce52ab7c1681310a6f9ce90730f
Author: Liangda-w <66...@users.noreply.github.com>
AuthorDate: Thu Apr 29 13:45:04 2021 +0200
Fix Oracle addColumnSpecification grammar (#10201)
* Fix Oracle addColumnSpecification grammar
* remove whitespace
---
.../src/main/antlr4/imports/oracle/DDLStatement.g4 | 4 +--
.../src/main/resources/case/ddl/alter-table.xml | 39 +++++++++++++---------
.../src/main/resources/sql/supported/ddl/alter.xml | 31 ++++++++---------
3 files changed, 42 insertions(+), 32 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 03a3470..41a2f80 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
@@ -304,11 +304,11 @@ operateColumnClause
;
addColumnSpecification
- : ADD columnOrVirtualDefinitions columnProperties?
+ : ADD LP_ columnOrVirtualDefinitions RP_ columnProperties?
;
columnOrVirtualDefinitions
- : LP_? columnOrVirtualDefinition (COMMA_ columnOrVirtualDefinition)* RP_? | columnOrVirtualDefinition
+ : columnOrVirtualDefinition (COMMA_ columnOrVirtualDefinition)*
;
columnOrVirtualDefinition
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-table.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-table.xml
index a4696a5..94765e2 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-table.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-table.xml
@@ -26,6 +26,15 @@
</add-column>
</alter-table>
+ <alter-table sql-case-id="alter_table_oracle">
+ <table name="t_log" start-index="12" stop-index="16" />
+ <add-column>
+ <column-definition type="varchar" start-index="23" stop-index="38">
+ <column name="name" />
+ </column-definition>
+ </add-column>
+ </alter-table>
+
<alter-table sql-case-id="alter_table_if_exists_only">
<table name="t_log" start-index="27" stop-index="31" />
<add-column>
@@ -715,17 +724,17 @@
<alter-table sql-case-id="alter_table_add_columns_oracle">
<table name="t_order" start-index="12" stop-index="18" />
<add-column>
- <column-definition type="VARCHAR2" start-index="24" stop-index="43">
+ <column-definition type="VARCHAR2" start-index="25" stop-index="44">
<column name="column4" />
</column-definition>
</add-column>
<add-column>
- <column-definition type="VARCHAR2" start-index="49" stop-index="68">
+ <column-definition type="VARCHAR2" start-index="47" stop-index="66">
<column name="column5" />
</column-definition>
</add-column>
<add-column>
- <column-definition type="VARCHAR2" start-index="74" stop-index="93">
+ <column-definition type="VARCHAR2" start-index="69" stop-index="88">
<column name="column6" />
</column-definition>
</add-column>
@@ -919,7 +928,7 @@
<alter-table sql-case-id="alter_table_with_optimize_memory_read">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="43" stop-index="58">
+ <column-definition type="VARCHAR" start-index="44" stop-index="59">
<column name="name" />
</column-definition>
</add-column>
@@ -928,7 +937,7 @@
<alter-table sql-case-id="alter_table_with_no_optimize_memory_write">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="47" stop-index="62">
+ <column-definition type="VARCHAR" start-index="48" stop-index="63">
<column name="name" />
</column-definition>
</add-column>
@@ -937,7 +946,7 @@
<alter-table sql-case-id="alter_table_with_enable_validate">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="22" stop-index="37">
+ <column-definition type="VARCHAR" start-index="23" stop-index="38">
<column name="name" />
</column-definition>
</add-column>
@@ -946,7 +955,7 @@
<alter-table sql-case-id="alter_table_with_primary_key">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="22" stop-index="37">
+ <column-definition type="VARCHAR" start-index="23" stop-index="38">
<column name="name" />
</column-definition>
</add-column>
@@ -955,7 +964,7 @@
<alter-table sql-case-id="alter_table_with_index_clause">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="22" stop-index="37">
+ <column-definition type="VARCHAR" start-index="23" stop-index="38">
<column name="name" />
</column-definition>
</add-column>
@@ -964,7 +973,7 @@
<alter-table sql-case-id="alter_table_with_exception_clause">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="22" stop-index="37">
+ <column-definition type="VARCHAR" start-index="23" stop-index="38">
<column name="name" />
</column-definition>
</add-column>
@@ -973,7 +982,7 @@
<alter-table sql-case-id="alter_table_with_cascade">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="22" stop-index="37">
+ <column-definition type="VARCHAR" start-index="23" stop-index="38">
<column name="name" />
</column-definition>
</add-column>
@@ -982,7 +991,7 @@
<alter-table sql-case-id="alter_table_with_keep_index">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="22" stop-index="37">
+ <column-definition type="VARCHAR" start-index="23" stop-index="38">
<column name="name" />
</column-definition>
</add-column>
@@ -991,7 +1000,7 @@
<alter-table sql-case-id="alter_table_with_enable_table_lock">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="22" stop-index="37">
+ <column-definition type="VARCHAR" start-index="23" stop-index="38">
<column name="name" />
</column-definition>
</add-column>
@@ -1000,7 +1009,7 @@
<alter-table sql-case-id="alter_table_with_enable_all_triggers">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="22" stop-index="37">
+ <column-definition type="VARCHAR" start-index="23" stop-index="38">
<column name="name" />
</column-definition>
</add-column>
@@ -1009,7 +1018,7 @@
<alter-table sql-case-id="alter_table_with_disable_container_map">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="22" stop-index="37">
+ <column-definition type="VARCHAR" start-index="23" stop-index="38">
<column name="name" />
</column-definition>
</add-column>
@@ -1018,7 +1027,7 @@
<alter-table sql-case-id="alter_table_with_disable_containers_default">
<table name="t_log" start-index="12" stop-index="16"/>
<add-column>
- <column-definition type="VARCHAR" start-index="22" stop-index="37">
+ <column-definition type="VARCHAR" start-index="23" stop-index="38">
<column name="name" />
</column-definition>
</add-column>
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 a1ac078..ae64a97 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
@@ -17,7 +17,8 @@
-->
<sql-cases>
- <sql-case id="alter_table" value="ALTER TABLE t_log ADD name varchar(10)" />
+ <sql-case id="alter_table" value="ALTER TABLE t_log ADD name varchar(10)" db-types="MySQL, PostgreSQL" />
+ <sql-case id="alter_table_oracle" value="ALTER TABLE t_log ADD (name varchar(10))" db-types="Oracle" />
<sql-case id="alter_table_not_null" value="alter table t1 add c2 real not null" db-types="MySQL" />
<sql-case id="alter_table_not_null_first" value="alter table t1 add c2 real not null first" db-types="MySQL" />
<sql-case id="alter_table_not_null_after" value="alter table t1 add c4 real not null after c2" db-types="MySQL" />
@@ -32,7 +33,7 @@
<sql-case id="alter_table_with_space" value=" ALTER TABLE
t_order" db-types="MySQL,Oracle" />
<sql-case id="alter_table_with_back_quota" value="ALTER TABLE `t_order` FORCE" db-types="MySQL" />
- <sql-case id="alter_table_add_column" value="ALTER TABLE t_order ADD column4 VARCHAR(10)" />
+ <sql-case id="alter_table_add_column" value="ALTER TABLE t_order ADD column4 VARCHAR(10)" db-types="MySQL, PostgreSQL" />
<sql-case id="alter_table_add_columns" value="ALTER TABLE t_order ADD column4 VARCHAR(10), ADD column5 VARCHAR(10), ADD column6 VARCHAR(10)" db-types="MySQL,PostgreSQL" />
<sql-case id="alter_table_add_columns_integer_type_mysql" value="ALTER TABLE t_order ADD column4 INTEGER, ADD column5 TINYINT, ADD column6 MEDIUMINT" db-types="MySQL" />
<sql-case id="alter_table_add_columns_integer_type_oracle" value="ALTER TABLE t_order ADD (column4 INTEGER, column5 INT, column6 SMALLINT)" db-types="Oracle" />
@@ -80,7 +81,7 @@
<sql-case id="alter_table_with_quota" value="ALTER TABLE "t_order" PARALLEL" db-types="Oracle" />
<!-- TODO support PostgreSQL-->
<sql-case id="alter_table_add_check" value="ALTER TABLE t_order ADD CONSTRAINT chk_order_id CHECK (order_id > 0)" db-types="Oracle,SQLServer" />
- <sql-case id="alter_table_add_columns_oracle" value="ALTER TABLE t_order ADD column4 VARCHAR2(10) ADD column5 VARCHAR2(10) ADD column6 VARCHAR2(10)" db-types="Oracle" />
+ <sql-case id="alter_table_add_columns_oracle" value="ALTER TABLE t_order ADD (column4 VARCHAR2(10), column5 VARCHAR2(10), column6 VARCHAR2(10))" db-types="Oracle" />
<sql-case id="alter_table_modify_columns_oracle" value="ALTER TABLE t_order MODIFY column4 VARCHAR2(20) MODIFY column5 VARCHAR2(20) MODIFY column6 VARCHAR2(20)" db-types="Oracle" />
<sql-case id="alter_table_drop_columns_oracle" value="ALTER TABLE t_order DROP COLUMN user_id DROP COLUMN column5" db-types="Oracle" />
<sql-case id="alter_table_add_primary_foreign_key" value="ALTER TABLE t_order_item ADD PRIMARY KEY (order_id) UNIQUE (order_id) CHECK (order_id > 0) FOREIGN KEY (order_id) REFERENCES t_order (order_id) ON DELETE CASCADE CHECK (order_id > 0)" db-types="Oracle" />
@@ -110,18 +111,18 @@
<sql-case id="alter_table_attach_partition" value="ALTER TABLE t_order ATTACH PARTITION measurement_y2016m07 FOR VALUES FROM ('2016-07-01') TO ('2016-08-01')" db-types="PostgreSQL"/>
<sql-case id="alter_table_detach_partition" value="ALTER TABLE t_order ATTACH PARTITION measurement_y2016m07 FOR VALUES FROM ('2016-07-01') TO ('2016-08-01')" db-types="PostgreSQL"/>
<sql-case id="alter_table_in_hash_partitioned_table" value="ALTER TABLE t_order ATTACH PARTITION orders_p4 FOR VALUES WITH (MODULUS 4, REMAINDER 3)" db-types="PostgreSQL" />
- <sql-case id="alter_table_with_optimize_memory_read" value="ALTER TABLE t_log MEMOPTIMIZE FOR READ ADD name VARCHAR(10)" db-types="Oracle" />
- <sql-case id="alter_table_with_no_optimize_memory_write" value="ALTER TABLE t_log NO MEMOPTIMIZE FOR WRITE ADD name VARCHAR(10)" db-types="Oracle" />
- <sql-case id="alter_table_with_enable_validate" value="ALTER TABLE t_log ADD name VARCHAR(10) ENABLE VALIDATE PRIMARY KEY" db-types="Oracle" />
- <sql-case id="alter_table_with_primary_key" value="ALTER TABLE t_log ADD name VARCHAR(10) ENABLE PRIMARY KEY" db-types="Oracle" />
- <sql-case id="alter_table_with_index_clause" value="ALTER TABLE t_log ADD name VARCHAR(10) ENABLE PRIMARY KEY USING INDEX t_log" db-types="Oracle" />
- <sql-case id="alter_table_with_exception_clause" value="ALTER TABLE t_log ADD name VARCHAR(10) DISABLE PRIMARY KEY EXCEPTIONS INTO t_log" db-types="Oracle" />
- <sql-case id="alter_table_with_cascade" value="ALTER TABLE t_log ADD name VARCHAR(10) DISABLE PRIMARY KEY CASCADE" db-types="Oracle" />
- <sql-case id="alter_table_with_keep_index" value="ALTER TABLE t_log ADD name VARCHAR(10) DISABLE PRIMARY KEY KEEP INDEX" db-types="Oracle" />
- <sql-case id="alter_table_with_enable_table_lock" value="ALTER TABLE t_log ADD name VARCHAR(10) ENABLE TABLE LOCK" db-types="Oracle" />
- <sql-case id="alter_table_with_enable_all_triggers" value="ALTER TABLE t_log ADD name VARCHAR(10) ENABLE ALL TRIGGERS" db-types="Oracle" />
- <sql-case id="alter_table_with_disable_container_map" value="ALTER TABLE t_log ADD name VARCHAR(10) DISABLE CONTAINER_MAP" db-types="Oracle" />
- <sql-case id="alter_table_with_disable_containers_default" value="ALTER TABLE t_log ADD name VARCHAR(10) DISABLE CONTAINERS_DEFAULT" db-types="Oracle" />
+ <sql-case id="alter_table_with_optimize_memory_read" value="ALTER TABLE t_log MEMOPTIMIZE FOR READ ADD (name VARCHAR(10))" db-types="Oracle" />
+ <sql-case id="alter_table_with_no_optimize_memory_write" value="ALTER TABLE t_log NO MEMOPTIMIZE FOR WRITE ADD (name VARCHAR(10))" db-types="Oracle" />
+ <sql-case id="alter_table_with_enable_validate" value="ALTER TABLE t_log ADD (name VARCHAR(10)) ENABLE VALIDATE PRIMARY KEY" db-types="Oracle" />
+ <sql-case id="alter_table_with_primary_key" value="ALTER TABLE t_log ADD (name VARCHAR(10)) ENABLE PRIMARY KEY" db-types="Oracle" />
+ <sql-case id="alter_table_with_index_clause" value="ALTER TABLE t_log ADD (name VARCHAR(10)) ENABLE PRIMARY KEY USING INDEX t_log" db-types="Oracle" />
+ <sql-case id="alter_table_with_exception_clause" value="ALTER TABLE t_log ADD (name VARCHAR(10)) DISABLE PRIMARY KEY EXCEPTIONS INTO t_log" db-types="Oracle" />
+ <sql-case id="alter_table_with_cascade" value="ALTER TABLE t_log ADD (name VARCHAR(10)) DISABLE PRIMARY KEY CASCADE" db-types="Oracle" />
+ <sql-case id="alter_table_with_keep_index" value="ALTER TABLE t_log ADD (name VARCHAR(10)) DISABLE PRIMARY KEY KEEP INDEX" db-types="Oracle" />
+ <sql-case id="alter_table_with_enable_table_lock" value="ALTER TABLE t_log ADD (name VARCHAR(10)) ENABLE TABLE LOCK" db-types="Oracle" />
+ <sql-case id="alter_table_with_enable_all_triggers" value="ALTER TABLE t_log ADD (name VARCHAR(10)) ENABLE ALL TRIGGERS" db-types="Oracle" />
+ <sql-case id="alter_table_with_disable_container_map" value="ALTER TABLE t_log ADD (name VARCHAR(10)) DISABLE CONTAINER_MAP" db-types="Oracle" />
+ <sql-case id="alter_table_with_disable_containers_default" value="ALTER TABLE t_log ADD (name VARCHAR(10)) DISABLE CONTAINERS_DEFAULT" db-types="Oracle" />
<sql-case id="alter_table_add_range_partition" value="ALTER TABLE t_order ADD PARTITION range_p_order VALUES LESS THAN(100)" db-types="Oracle" />
<sql-case id="alter_table_add_list_partition" value="ALTER TABLE t_order ADD PARTITION list_p_order VALUES(100, 200, 300)" db-types="Oracle" />
<sql-case id="alter_table_drop_partition" value="ALTER TABLE t_order DROP PARTITION list_p_order" db-types="Oracle" />