This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 36d4632ccc1 Add rules for oracle alter type. (#27785)
36d4632ccc1 is described below
commit 36d4632ccc10584b5c351768ec751fcca16a8ebd
Author: boyjoy1127 <[email protected]>
AuthorDate: Thu Aug 3 13:53:16 2023 +0800
Add rules for oracle alter type. (#27785)
* feat: add alter type SQL.
* feat: add alter type SQL.
* feat: add rules for alter type.
* feat: add rules for alter type.
* feat: add rules for alter type.
* feat: add rules for alter type.
* feat: add rules for alter type.
* feat: add rules for alter type.
* feat: add rules for alter type.
---
.../oracle/src/main/antlr4/imports/oracle/DDLStatement.g4 | 7 ++++++-
test/it/parser/src/main/resources/case/ddl/alter-type.xml | 6 ++++++
.../src/main/resources/sql/supported/ddl/alter-type.xml | 12 ++++++++++--
3 files changed, 22 insertions(+), 3 deletions(-)
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 0f4a883944a..a5622c82235 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
@@ -3758,8 +3758,13 @@ alterMethodSpec
: (ADD | DROP) (mapOrderFunctionSpec | subprogramSpec) ((ADD | DROP)
(mapOrderFunctionSpec | subprogramSpec))*
;
+alterAttributeDefinition
+ : (ADD | MODIFY) ATTRIBUTE ( attributeName dataType? | LP_ attributeName
dataType (COMMA_ attributeName dataType)* RP_)
+ | DROP ATTRIBUTE ( attributeName | LP_ attributeName (COMMA_
attributeName)* RP_)
+ ;
+
alterType
- : ALTER TYPE typeName
(compileTypeClause|replaceTypeClause|RESET|(alterMethodSpec))?
+ : ALTER TYPE typeName
(compileTypeClause|replaceTypeClause|RESET|(alterMethodSpec|alterAttributeDefinition))?
;
createCluster
diff --git a/test/it/parser/src/main/resources/case/ddl/alter-type.xml
b/test/it/parser/src/main/resources/case/ddl/alter-type.xml
index 0d0a3ef08b8..a7af32e931d 100644
--- a/test/it/parser/src/main/resources/case/ddl/alter-type.xml
+++ b/test/it/parser/src/main/resources/case/ddl/alter-type.xml
@@ -77,4 +77,10 @@
<alter-type sql-case-id="alter_type_drop_static_procedure" />
<alter-type sql-case-id="alter_type_drop_static_function_as" />
<alter-type sql-case-id="alter_type_drop_static_procedure_is" />
+ <alter-type sql-case-id="alter_type_add_single_attribute" />
+ <alter-type sql-case-id="alter_type_add_multi_attribute" />
+ <alter-type sql-case-id="alter_type_modify_single_attribute" />
+ <alter-type sql-case-id="alter_type_modify_multi_attribute" />
+ <alter-type sql-case-id="alter_type_drop_single_attribute" />
+ <alter-type sql-case-id="alter_type_drop_multi_attribute" />
</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/ddl/alter-type.xml
b/test/it/parser/src/main/resources/sql/supported/ddl/alter-type.xml
index bc721da2f7b..ca9ea8827bd 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/alter-type.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/alter-type.xml
@@ -69,9 +69,11 @@
<sql-case id="alter_type_replace_element_constructor_function_inout"
value="ALTER TYPE type_name
REPLACE AS OBJECT (a NUMBER, b NUMBER, CONSTRUCTOR FUNCTION p(SELF IN OUT
NUMBER, n1 NUMBER) RETURN SELF AS RESULT)" db-types="Oracle" />
<sql-case id="alter_type_replace_element_constructor_function_as_call"
value="ALTER TYPE type_name
- REPLACE AS OBJECT (a NUMBER, b NUMBER, CONSTRUCTOR FUNCTION p(SELF IN OUT
NUMBER, n1 NUMBER) RETURN SELF AS RESULT AS LANGUAGE JAVA NAME 'resultName')"
db-types="Oracle" />
+ REPLACE AS OBJECT (a NUMBER, b NUMBER, CONSTRUCTOR FUNCTION p(SELF IN OUT
NUMBER, n1 NUMBER)
+ RETURN SELF AS RESULT AS LANGUAGE JAVA NAME 'resultName')"
db-types="Oracle" />
<sql-case id="alter_type_replace_element_constructor_function_is_call"
value="ALTER TYPE type_name
- REPLACE AS OBJECT (a NUMBER, b NUMBER, CONSTRUCTOR FUNCTION p(SELF IN OUT
NUMBER, n1 NUMBER) RETURN SELF AS RESULT IS LANGUAGE JAVA NAME 'resultName')"
db-types="Oracle" />
+ REPLACE AS OBJECT (a NUMBER, b NUMBER, CONSTRUCTOR FUNCTION p(SELF IN OUT
NUMBER, n1 NUMBER)
+ RETURN SELF AS RESULT IS LANGUAGE JAVA NAME 'resultName')"
db-types="Oracle" />
<sql-case id="alter_type_replace_element_map_function" value="ALTER TYPE
type_name
REPLACE AS OBJECT (a NUMBER, b NUMBER, MAP MEMBER FUNCTION p(n1 NUMBER)
RETURN NUMBER)" db-types="Oracle" />
<sql-case id="alter_type_replace_element_order_function" value="ALTER TYPE
type_name
@@ -120,4 +122,10 @@
STATIC FUNCTION p(b1 BOOL) RETURN NUMBER AS LANGUAGE JAVA NAME
'resultName'" db-types="Oracle" />
<sql-case id="alter_type_drop_static_procedure_is" value="ALTER TYPE
type_name DROP
STATIC PROCEDURE p(b1 BOOL)) IS LANGUAGE JAVA NAME 'resultName'"
db-types="Oracle" />
+ <sql-case id="alter_type_add_single_attribute" value="ALTER TYPE type_name
ADD ATTRIBUTE c1 NUMBER" db-types="Oracle" />
+ <sql-case id="alter_type_add_multi_attribute" value="ALTER TYPE type_name
ADD ATTRIBUTE (c1 NUMBER, b1 BOOL)" db-types="Oracle" />
+ <sql-case id="alter_type_modify_single_attribute" value="ALTER TYPE
type_name MODIFY ATTRIBUTE c1 NUMBER" db-types="Oracle" />
+ <sql-case id="alter_type_modify_multi_attribute" value="ALTER TYPE
type_name MODIFY ATTRIBUTE (c1 NUMBER, b1 BOOL)" db-types="Oracle" />
+ <sql-case id="alter_type_drop_single_attribute" value="ALTER TYPE
type_name DROP ATTRIBUTE c1" db-types="Oracle" />
+ <sql-case id="alter_type_drop_multi_attribute" value="ALTER TYPE type_name
DROP ATTRIBUTE (c1,b1)" db-types="Oracle" />
</sql-cases>