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>