DBZ-7498 Support Oracle 23 "IF [NOT] EXISTS" clauses for DDL
This commit is contained in:
parent
626e7bb240
commit
08f0b0c52b
@ -592,6 +592,7 @@ sequence_start_clause
|
||||
|
||||
create_index
|
||||
: CREATE (UNIQUE | BITMAP)? INDEX index_name
|
||||
(IF NOT EXISTS)?
|
||||
ON (cluster_index_clause | table_index_clause | bitmap_join_index_clause)
|
||||
UNUSABLE?
|
||||
;
|
||||
@ -863,6 +864,7 @@ new_index_name
|
||||
create_user
|
||||
: CREATE USER
|
||||
user_object_name
|
||||
(IF NOT EXISTS)?
|
||||
( identified_by
|
||||
| identified_other_clause
|
||||
| user_tablespace_clause
|
||||
@ -872,7 +874,7 @@ create_user
|
||||
| user_lock_clause
|
||||
| user_editions_clause
|
||||
| container_clause
|
||||
)+ ';'
|
||||
)+
|
||||
;
|
||||
|
||||
// The standard clauses only permit one user per statement.
|
||||
@ -897,7 +899,7 @@ alter_user
|
||||
;
|
||||
|
||||
drop_user
|
||||
: DROP USER user_object_name CASCADE?
|
||||
: DROP USER user_object_name (IF EXISTS)? CASCADE?
|
||||
;
|
||||
|
||||
alter_identified_by
|
||||
@ -1256,7 +1258,7 @@ sql_statement_shortcut
|
||||
;
|
||||
|
||||
drop_index
|
||||
: DROP INDEX index_name ';'
|
||||
: DROP INDEX index_name (IF EXISTS)? ';'
|
||||
;
|
||||
|
||||
rename_object
|
||||
@ -1516,11 +1518,10 @@ create_tablespace
|
||||
| temporary_tablespace_clause
|
||||
| undo_tablespace_clause
|
||||
)
|
||||
';'
|
||||
;
|
||||
|
||||
permanent_tablespace_clause
|
||||
: TABLESPACE id_expression datafile_specification?
|
||||
: TABLESPACE id_expression (IF NOT EXISTS)? datafile_specification?
|
||||
( MINIMUM EXTENT size_clause
|
||||
| BLOCKSIZE size_clause
|
||||
| logging_clause
|
||||
@ -1557,12 +1558,14 @@ segment_management_clause
|
||||
|
||||
temporary_tablespace_clause
|
||||
: TEMPORARY TABLESPACE tablespace_name=id_expression
|
||||
(IF NOT EXISTS)?
|
||||
tempfile_specification?
|
||||
tablespace_group_clause? extent_management_clause?
|
||||
;
|
||||
|
||||
undo_tablespace_clause
|
||||
: UNDO TABLESPACE tablespace_name=id_expression
|
||||
(IF NOT EXISTS)?
|
||||
datafile_specification?
|
||||
extent_management_clause? tablespace_retention_clause?
|
||||
;
|
||||
@ -1828,7 +1831,7 @@ create_table
|
||||
| DUPLICATED
|
||||
| IMMUTABLE? BLOCKCHAIN
|
||||
| IMMUTABLE
|
||||
)? TABLE tableview_name
|
||||
)? TABLE tableview_name (IF NOT EXISTS)?
|
||||
(SHARING '=' (NONE | METADATA | DATA | EXTENDED DATA))?
|
||||
(relational_table | object_table | xmltype_table) (USAGE QUEUE)? (AS select_only_statement)? memoptimize_read_write_clause?
|
||||
;
|
||||
@ -2558,11 +2561,11 @@ truncate_cluster
|
||||
;
|
||||
|
||||
drop_table
|
||||
: DROP TABLE tableview_name (AS tableview_name)? (CASCADE CONSTRAINTS)? PURGE? (AS quoted_string)? FORCE?
|
||||
: DROP TABLE tableview_name (IF EXISTS)? (AS tableview_name)? (CASCADE CONSTRAINTS)? PURGE? (AS quoted_string)? FORCE?
|
||||
;
|
||||
|
||||
drop_tablespace
|
||||
: DROP TABLESPACE ts = id_expression ((DROP | KEEP) QUOTA?)? including_contents_clause?
|
||||
: DROP TABLESPACE ts = id_expression (IF EXISTS)? ((DROP | KEEP) QUOTA?)? including_contents_clause?
|
||||
;
|
||||
|
||||
drop_tablespace_set
|
||||
@ -2570,7 +2573,7 @@ drop_tablespace_set
|
||||
;
|
||||
|
||||
drop_view
|
||||
: DROP VIEW tableview_name (CASCADE CONSTRAINT)? SEMICOLON
|
||||
: DROP VIEW tableview_name (IF EXISTS)? (CASCADE CONSTRAINT)? SEMICOLON
|
||||
;
|
||||
|
||||
including_contents_clause
|
||||
|
@ -656,4 +656,13 @@ CREATE IMMUTABLE TABLE t_temp_log(id int, status varchar(10));
|
||||
CREATE BLOCKCHAIN TABLE t_temp_log(id int, status varchar(10));
|
||||
CREATE IMMUTABLE BLOCKCHAIN TABLE t_temp_log(id int, status varchar(10));
|
||||
|
||||
-- Create table (Oracle 23+)
|
||||
create table debezium.products if not exists (id NUMBER(4) GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH 101) NOT NULL PRIMARY KEY, name VARCHAR2(255) NOT NULL, description VARCHAR2(512), weight FLOAT);
|
||||
-- Create index (Oracle 23+)
|
||||
create index hr.name IF NOT EXISTS on hr.table (id,data) tablespace ts;
|
||||
-- Create user (Oracle 23+)
|
||||
CREATE USER debezium IF NOT EXISTS IDENTIFIED BY abc;
|
||||
-- Create tablespace (Oracle 23+)
|
||||
CREATE TABLESPACE LOGMINER_TBS IF NOT EXISTS DATAFILE '/opt/oracle/oradata/ORCLCDB/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
|
||||
|
||||
CREATE OR REPLACE NONEDITIONABLE PACKAGE BODY tidy_html_snippet_pkg AS FUNCTION tidy(i_html_snippet IN CLOB) RETURN CLOB; FUNCTION tidy(i_html_snippet IN VARCHAR2) RETURN CLOB; END tidy_html_snippet_pkg;
|
||||
|
@ -17,3 +17,17 @@ DROP TABLESPACE SET ts1 INCLUDING CONTENTS;
|
||||
DROP TABLESPACE SET ts1 INCLUDING CONTENTS CASCADE CONSTRAINTS;
|
||||
DROP TABLESPACE SET ts1 INCLUDING CONTENTS AND DATAFILES;
|
||||
|
||||
-- Drop table (Oracle 23+)
|
||||
DROP TABLE TEST.STUDENT IF EXISTS;
|
||||
DROP TABLE TEST.STUDENT IF EXISTS CASCADE CONSTRAINTS;
|
||||
|
||||
-- Drop user (Oracle 23+)
|
||||
DROP USER debezium IF EXISTS;
|
||||
|
||||
-- Drop tablespace (Oracle 23+)
|
||||
DROP TABLESPACE tbs_01 IF EXISTS;
|
||||
DROP TABLESPACE tbs_01 IF EXISTS KEEP QUOTA;
|
||||
|
||||
-- Drop index (Oracle 23+)
|
||||
DROP INDEX index_name IF EXISTS;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user