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>

Reply via email to