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 e8c32e7fa4c Add rules for oracle alter type (#27631)
e8c32e7fa4c is described below

commit e8c32e7fa4c5d18fbf75ace876356559274d7e94
Author: boyjoy1127 <[email protected]>
AuthorDate: Wed Aug 2 16:59:01 2023 +0800

    Add rules for oracle alter type (#27631)
    
    * 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.
---
 .../src/main/antlr4/imports/oracle/DDLStatement.g4 |  6 ++++-
 .../src/main/resources/case/ddl/alter-type.xml     | 14 +++++++++++
 .../resources/sql/supported/ddl/alter-type.xml     | 28 ++++++++++++++++++++++
 3 files changed, 47 insertions(+), 1 deletion(-)

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 49e1ef7fe2d..756be65b857 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
@@ -3698,8 +3698,12 @@ replaceTypeClause
     : REPLACE invokerRightsClause? AS OBJECT LP_ (attributeName dataType 
(COMMA_ (elementSpecification | attributeName dataType))*) RP_
     ;
 
+alterMethodSpec
+    : (ADD | DROP) (mapOrderFunctionSpec | subprogramSpec) ((ADD | DROP) 
(mapOrderFunctionSpec | subprogramSpec))*
+    ;
+
 alterType
-    : ALTER TYPE typeName (compileTypeClause|replaceTypeClause)?
+    : ALTER TYPE typeName 
(compileTypeClause|replaceTypeClause|RESET|(alterMethodSpec))?
     ;
 
 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 26b640b03d5..0d0a3ef08b8 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
@@ -63,4 +63,18 @@
     <alter-type sql-case-id="alter_type_replace_element_restrict_wnps" />
     <alter-type sql-case-id="alter_type_replace_element_restrict_trust" />
     <alter-type sql-case-id="alter_type_reset" />
+    <alter-type sql-case-id="alter_type_add_member_function" />
+    <alter-type sql-case-id="alter_type_drop_member_function" />
+    <alter-type sql-case-id="alter_type_add_order_function" />
+    <alter-type sql-case-id="alter_type_drop_order_function" />
+    <alter-type sql-case-id="alter_type_add_order_function_as" />
+    <alter-type sql-case-id="alter_type_drop_order_function_is" />
+    <alter-type sql-case-id="alter_type_add_static_function" />
+    <alter-type sql-case-id="alter_type_add_static_procedure" />
+    <alter-type sql-case-id="alter_type_add_static_function_as" />
+    <alter-type sql-case-id="alter_type_add_static_procedure_is" />
+    <alter-type sql-case-id="alter_type_drop_static_function" />
+    <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" />
 </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 f672ee40813..bc721da2f7b 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
@@ -92,4 +92,32 @@
     REPLACE AS OBJECT (a NUMBER, b link1, MEMBER FUNCTION p(c1 NUMBER) RETURN 
NUMBER
     , PRAGMA RESTRICT_REFERENCES (method_name, TRUST))" db-types="Oracle" />
     <sql-case id="alter_type_reset" value="ALTER TYPE type_name RESET" 
db-types="Oracle" />
+    <sql-case id="alter_type_add_member_function" value="ALTER TYPE type_name 
ADD
+    MAP MEMBER FUNCTION p(n1 NUMBER) RETURN NUMBER" db-types="Oracle" />
+    <sql-case id="alter_type_drop_member_function" value="ALTER TYPE type_name 
DROP
+    MAP MEMBER FUNCTION p(n1 NUMBER) RETURN NUMBER" db-types="Oracle" />
+    <sql-case id="alter_type_add_order_function" value="ALTER TYPE type_name 
ADD
+    ORDER MEMBER FUNCTION p(n1 NUMBER) RETURN NUMBER" db-types="Oracle" />
+    <sql-case id="alter_type_drop_order_function" value="ALTER TYPE type_name 
DROP
+    ORDER MEMBER FUNCTION p(n1 NUMBER) RETURN NUMBER" db-types="Oracle" />
+    <sql-case id="alter_type_add_order_function_as" value="ALTER TYPE 
type_name ADD
+    ORDER MEMBER FUNCTION p(n1 NUMBER) RETURN NUMBER AS LANGUAGE JAVA NAME 
'resultName'" db-types="Oracle" />
+    <sql-case id="alter_type_drop_order_function_is" value="ALTER TYPE 
type_name DROP
+    ORDER MEMBER FUNCTION p(n1 NUMBER) RETURN NUMBER IS LANGUAGE JAVA NAME 
'resultName'" db-types="Oracle" />
+    <sql-case id="alter_type_add_static_function" value="ALTER TYPE type_name 
ADD
+    STATIC FUNCTION p(b1 BOOL) RETURN NUMBER" db-types="Oracle" />
+    <sql-case id="alter_type_add_static_procedure" value="ALTER TYPE type_name 
ADD
+    STATIC PROCEDURE p(b1 BOOL))" db-types="Oracle" />
+    <sql-case id="alter_type_add_static_function_as" value="ALTER TYPE 
type_name ADD
+    STATIC FUNCTION p(b1 BOOL) RETURN NUMBER AS LANGUAGE JAVA NAME 
'resultName'" db-types="Oracle" />
+    <sql-case id="alter_type_add_static_procedure_is" value="ALTER TYPE 
type_name ADD
+    STATIC PROCEDURE p(b1 BOOL)) IS LANGUAGE JAVA NAME 'resultName'" 
db-types="Oracle" />
+    <sql-case id="alter_type_drop_static_function" value="ALTER TYPE type_name 
DROP
+    STATIC FUNCTION p(b1 BOOL) RETURN NUMBER" db-types="Oracle" />
+    <sql-case id="alter_type_drop_static_procedure" value="ALTER TYPE 
type_name DROP
+    STATIC PROCEDURE p(b1 BOOL))" db-types="Oracle" />
+    <sql-case id="alter_type_drop_static_function_as" value="ALTER TYPE 
type_name DROP
+    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-cases>

Reply via email to