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_index
|
||||||
: CREATE (UNIQUE | BITMAP)? INDEX index_name
|
: CREATE (UNIQUE | BITMAP)? INDEX index_name
|
||||||
|
(IF NOT EXISTS)?
|
||||||
ON (cluster_index_clause | table_index_clause | bitmap_join_index_clause)
|
ON (cluster_index_clause | table_index_clause | bitmap_join_index_clause)
|
||||||
UNUSABLE?
|
UNUSABLE?
|
||||||
;
|
;
|
||||||
@ -863,6 +864,7 @@ new_index_name
|
|||||||
create_user
|
create_user
|
||||||
: CREATE USER
|
: CREATE USER
|
||||||
user_object_name
|
user_object_name
|
||||||
|
(IF NOT EXISTS)?
|
||||||
( identified_by
|
( identified_by
|
||||||
| identified_other_clause
|
| identified_other_clause
|
||||||
| user_tablespace_clause
|
| user_tablespace_clause
|
||||||
@ -872,7 +874,7 @@ create_user
|
|||||||
| user_lock_clause
|
| user_lock_clause
|
||||||
| user_editions_clause
|
| user_editions_clause
|
||||||
| container_clause
|
| container_clause
|
||||||
)+ ';'
|
)+
|
||||||
;
|
;
|
||||||
|
|
||||||
// The standard clauses only permit one user per statement.
|
// The standard clauses only permit one user per statement.
|
||||||
@ -897,7 +899,7 @@ alter_user
|
|||||||
;
|
;
|
||||||
|
|
||||||
drop_user
|
drop_user
|
||||||
: DROP USER user_object_name CASCADE?
|
: DROP USER user_object_name (IF EXISTS)? CASCADE?
|
||||||
;
|
;
|
||||||
|
|
||||||
alter_identified_by
|
alter_identified_by
|
||||||
@ -1256,7 +1258,7 @@ sql_statement_shortcut
|
|||||||
;
|
;
|
||||||
|
|
||||||
drop_index
|
drop_index
|
||||||
: DROP INDEX index_name ';'
|
: DROP INDEX index_name (IF EXISTS)? ';'
|
||||||
;
|
;
|
||||||
|
|
||||||
rename_object
|
rename_object
|
||||||
@ -1516,11 +1518,10 @@ create_tablespace
|
|||||||
| temporary_tablespace_clause
|
| temporary_tablespace_clause
|
||||||
| undo_tablespace_clause
|
| undo_tablespace_clause
|
||||||
)
|
)
|
||||||
';'
|
|
||||||
;
|
;
|
||||||
|
|
||||||
permanent_tablespace_clause
|
permanent_tablespace_clause
|
||||||
: TABLESPACE id_expression datafile_specification?
|
: TABLESPACE id_expression (IF NOT EXISTS)? datafile_specification?
|
||||||
( MINIMUM EXTENT size_clause
|
( MINIMUM EXTENT size_clause
|
||||||
| BLOCKSIZE size_clause
|
| BLOCKSIZE size_clause
|
||||||
| logging_clause
|
| logging_clause
|
||||||
@ -1557,12 +1558,14 @@ segment_management_clause
|
|||||||
|
|
||||||
temporary_tablespace_clause
|
temporary_tablespace_clause
|
||||||
: TEMPORARY TABLESPACE tablespace_name=id_expression
|
: TEMPORARY TABLESPACE tablespace_name=id_expression
|
||||||
|
(IF NOT EXISTS)?
|
||||||
tempfile_specification?
|
tempfile_specification?
|
||||||
tablespace_group_clause? extent_management_clause?
|
tablespace_group_clause? extent_management_clause?
|
||||||
;
|
;
|
||||||
|
|
||||||
undo_tablespace_clause
|
undo_tablespace_clause
|
||||||
: UNDO TABLESPACE tablespace_name=id_expression
|
: UNDO TABLESPACE tablespace_name=id_expression
|
||||||
|
(IF NOT EXISTS)?
|
||||||
datafile_specification?
|
datafile_specification?
|
||||||
extent_management_clause? tablespace_retention_clause?
|
extent_management_clause? tablespace_retention_clause?
|
||||||
;
|
;
|
||||||
@ -1828,7 +1831,7 @@ create_table
|
|||||||
| DUPLICATED
|
| DUPLICATED
|
||||||
| IMMUTABLE? BLOCKCHAIN
|
| IMMUTABLE? BLOCKCHAIN
|
||||||
| IMMUTABLE
|
| IMMUTABLE
|
||||||
)? TABLE tableview_name
|
)? TABLE tableview_name (IF NOT EXISTS)?
|
||||||
(SHARING '=' (NONE | METADATA | DATA | EXTENDED DATA))?
|
(SHARING '=' (NONE | METADATA | DATA | EXTENDED DATA))?
|
||||||
(relational_table | object_table | xmltype_table) (USAGE QUEUE)? (AS select_only_statement)? memoptimize_read_write_clause?
|
(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
|
||||||
: 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
|
||||||
: 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
|
drop_tablespace_set
|
||||||
@ -2570,7 +2573,7 @@ drop_tablespace_set
|
|||||||
;
|
;
|
||||||
|
|
||||||
drop_view
|
drop_view
|
||||||
: DROP VIEW tableview_name (CASCADE CONSTRAINT)? SEMICOLON
|
: DROP VIEW tableview_name (IF EXISTS)? (CASCADE CONSTRAINT)? SEMICOLON
|
||||||
;
|
;
|
||||||
|
|
||||||
including_contents_clause
|
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 BLOCKCHAIN TABLE t_temp_log(id int, status varchar(10));
|
||||||
CREATE IMMUTABLE 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;
|
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 CASCADE CONSTRAINTS;
|
||||||
DROP TABLESPACE SET ts1 INCLUDING CONTENTS AND DATAFILES;
|
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