Skip to content

Commit 0b75fea

Browse files
committed
wrap possible unsupported DDL to dynamic SQL
1 parent e9ff512 commit 0b75fea

5 files changed

+66
-66
lines changed

orafce--3.13--3.14.sql

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ LANGUAGE 'c';
66
do $$
77
BEGIN
88
IF EXISTS(SELECT * FROM pg_settings WHERE name = 'server_version_num' AND setting::int >= 120000) THEN
9-
ALTER FUNCTION varchar2(varchar2, integer, boolean) SUPPORT varchar2_transform;
9+
EXECUTE $_$ALTER FUNCTION varchar2(varchar2, integer, boolean) SUPPORT varchar2_transform$_$;
1010
ELSE
1111
UPDATE pg_proc SET protransform= 'varchar2_transform'::regproc::oid WHERE proname='varchar2';
1212

@@ -21,7 +21,7 @@ $$;
2121
do $$
2222
BEGIN
2323
IF EXISTS(SELECT * FROM pg_settings WHERE name = 'server_version_num' AND setting::int >= 120000) THEN
24-
ALTER FUNCTION nvarchar2(nvarchar2, integer, boolean) SUPPORT nvarchar2_transform;
24+
EXECUTE $_$ALTER FUNCTION nvarchar2(nvarchar2, integer, boolean) SUPPORT nvarchar2_transform$_$;
2525
ELSE
2626
UPDATE pg_proc SET protransform= 'nvarchar2_transform'::regproc::oid WHERE proname='nvarchar2';
2727

orafce--3.21--3.22.sql

+52-52
Original file line numberDiff line numberDiff line change
@@ -5,58 +5,58 @@
55
DO $$
66
BEGIN
77
IF EXISTS(SELECT * FROM pg_settings WHERE name = 'server_version_num' AND setting::int >= 120000) THEN
8-
ALTER FUNCTION pg_catalog.trunc(date,text) SET SCHEMA oracle;
9-
ALTER FUNCTION pg_catalog.round(date,text) SET SCHEMA oracle;
10-
ALTER FUNCTION pg_catalog.next_day(date,text) SET SCHEMA oracle;
11-
ALTER FUNCTION pg_catalog.next_day(date,integer) SET SCHEMA oracle;
12-
ALTER FUNCTION pg_catalog.last_day(date) SET SCHEMA oracle;
13-
ALTER FUNCTION pg_catalog.months_between(date,date) SET SCHEMA oracle;
14-
ALTER FUNCTION pg_catalog.add_months(date,integer) SET SCHEMA oracle;
15-
ALTER FUNCTION pg_catalog.trunc(timestamp with time zone,text) SET SCHEMA oracle;
16-
ALTER FUNCTION pg_catalog.round(timestamp with time zone,text) SET SCHEMA oracle;
17-
ALTER FUNCTION pg_catalog.round(timestamp with time zone) SET SCHEMA oracle;
18-
ALTER FUNCTION pg_catalog.round(date) SET SCHEMA oracle;
19-
ALTER FUNCTION pg_catalog.trunc(timestamp with time zone) SET SCHEMA oracle;
20-
ALTER FUNCTION pg_catalog.trunc(date) SET SCHEMA oracle;
21-
ALTER FUNCTION pg_catalog.nlssort(text,text) SET SCHEMA oracle;
22-
ALTER FUNCTION pg_catalog.nlssort(text) SET SCHEMA oracle;
23-
ALTER FUNCTION pg_catalog.set_nls_sort(text) SET SCHEMA oracle;
24-
ALTER FUNCTION pg_catalog.instr(text,text,integer,integer) SET SCHEMA oracle;
25-
ALTER FUNCTION pg_catalog.instr(text,text,integer) SET SCHEMA oracle;
26-
ALTER FUNCTION pg_catalog.instr(text,text) SET SCHEMA oracle;
27-
ALTER FUNCTION pg_catalog.to_char(smallint) SET SCHEMA oracle;
28-
ALTER FUNCTION pg_catalog.to_char(integer) SET SCHEMA oracle;
29-
ALTER FUNCTION pg_catalog.to_char(bigint) SET SCHEMA oracle;
30-
ALTER FUNCTION pg_catalog.to_char(real) SET SCHEMA oracle;
31-
ALTER FUNCTION pg_catalog.to_char(double precision) SET SCHEMA oracle;
32-
ALTER FUNCTION pg_catalog.to_char(numeric) SET SCHEMA oracle;
33-
ALTER FUNCTION pg_catalog.to_number(text) SET SCHEMA oracle;
34-
ALTER FUNCTION pg_catalog.to_number(numeric) SET SCHEMA oracle;
35-
ALTER FUNCTION pg_catalog.to_number(numeric,numeric) SET SCHEMA oracle;
36-
ALTER FUNCTION pg_catalog.lnnvl(boolean) SET SCHEMA oracle;
37-
ALTER FUNCTION pg_catalog.listagg1_transfn(internal,text) SET SCHEMA oracle;
38-
ALTER FUNCTION pg_catalog.wm_concat_transfn(internal,text) SET SCHEMA oracle;
39-
ALTER FUNCTION pg_catalog.listagg2_transfn(internal,text,text) SET SCHEMA oracle;
40-
ALTER FUNCTION pg_catalog.listagg_finalfn(internal) SET SCHEMA oracle;
41-
ALTER FUNCTION pg_catalog.listagg(text) SET SCHEMA oracle;
42-
ALTER FUNCTION pg_catalog.wm_concat(text) SET SCHEMA oracle;
43-
ALTER FUNCTION pg_catalog.listagg(text,text) SET SCHEMA oracle;
44-
ALTER FUNCTION pg_catalog.median4_transfn(internal,real) SET SCHEMA oracle;
45-
ALTER FUNCTION pg_catalog.median4_finalfn(internal) SET SCHEMA oracle;
46-
ALTER FUNCTION pg_catalog.median8_transfn(internal,double precision) SET SCHEMA oracle;
47-
ALTER FUNCTION pg_catalog.median8_finalfn(internal) SET SCHEMA oracle;
48-
ALTER FUNCTION pg_catalog.median(real) SET SCHEMA oracle;
49-
ALTER FUNCTION pg_catalog.median(double precision) SET SCHEMA oracle;
50-
ALTER FUNCTION pg_catalog.substrb(varchar2,integer,integer) SET SCHEMA oracle;
51-
ALTER FUNCTION pg_catalog.substrb(varchar2,integer) SET SCHEMA oracle;
52-
ALTER FUNCTION pg_catalog.lengthb(varchar2) SET SCHEMA oracle;
53-
ALTER FUNCTION pg_catalog.strposb(varchar2,varchar2) SET SCHEMA oracle;
54-
ALTER FUNCTION pg_catalog.trunc(timestamp without time zone,text) SET SCHEMA oracle;
55-
ALTER FUNCTION pg_catalog.round(timestamp without time zone,text) SET SCHEMA oracle;
56-
ALTER FUNCTION pg_catalog.round(timestamp without time zone) SET SCHEMA oracle;
57-
ALTER FUNCTION pg_catalog.trunc(timestamp without time zone) SET SCHEMA oracle;
58-
ALTER FUNCTION pg_catalog.to_date(text) RENAME TO orafce__obsolete_to_date;
59-
ALTER FUNCTION pg_catalog.orafce__obsolete_to_date(text) SET SCHEMA oracle;
8+
EXECUTE $_$ALTER FUNCTION pg_catalog.trunc(date,text) SET SCHEMA oracle$_$;
9+
EXECUTE $_$ALTER FUNCTION pg_catalog.round(date,text) SET SCHEMA oracle$_$;
10+
EXECUTE $_$ALTER FUNCTION pg_catalog.next_day(date,text) SET SCHEMA oracle$_$;
11+
EXECUTE $_$ALTER FUNCTION pg_catalog.next_day(date,integer) SET SCHEMA oracle$_$;
12+
EXECUTE $_$ALTER FUNCTION pg_catalog.last_day(date) SET SCHEMA oracle$_$;
13+
EXECUTE $_$ALTER FUNCTION pg_catalog.months_between(date,date) SET SCHEMA oracle$_$;
14+
EXECUTE $_$ALTER FUNCTION pg_catalog.add_months(date,integer) SET SCHEMA oracle$_$;
15+
EXECUTE $_$ALTER FUNCTION pg_catalog.trunc(timestamp with time zone,text) SET SCHEMA oracle$_$;
16+
EXECUTE $_$ALTER FUNCTION pg_catalog.round(timestamp with time zone,text) SET SCHEMA oracle$_$;
17+
EXECUTE $_$ALTER FUNCTION pg_catalog.round(timestamp with time zone) SET SCHEMA oracle$_$;
18+
EXECUTE $_$ALTER FUNCTION pg_catalog.round(date) SET SCHEMA oracle$_$;
19+
EXECUTE $_$ALTER FUNCTION pg_catalog.trunc(timestamp with time zone) SET SCHEMA oracle$_$;
20+
EXECUTE $_$ALTER FUNCTION pg_catalog.trunc(date) SET SCHEMA oracle$_$;
21+
EXECUTE $_$ALTER FUNCTION pg_catalog.nlssort(text,text) SET SCHEMA oracle$_$;
22+
EXECUTE $_$ALTER FUNCTION pg_catalog.nlssort(text) SET SCHEMA oracle$_$;
23+
EXECUTE $_$ALTER FUNCTION pg_catalog.set_nls_sort(text) SET SCHEMA oracle$_$;
24+
EXECUTE $_$ALTER FUNCTION pg_catalog.instr(text,text,integer,integer) SET SCHEMA oracle$_$;
25+
EXECUTE $_$ALTER FUNCTION pg_catalog.instr(text,text,integer) SET SCHEMA oracle$_$;
26+
EXECUTE $_$ALTER FUNCTION pg_catalog.instr(text,text) SET SCHEMA oracle$_$;
27+
EXECUTE $_$ALTER FUNCTION pg_catalog.to_char(smallint) SET SCHEMA oracle$_$;
28+
EXECUTE $_$ALTER FUNCTION pg_catalog.to_char(integer) SET SCHEMA oracle$_$;
29+
EXECUTE $_$ALTER FUNCTION pg_catalog.to_char(bigint) SET SCHEMA oracle$_$;
30+
EXECUTE $_$ALTER FUNCTION pg_catalog.to_char(real) SET SCHEMA oracle$_$;
31+
EXECUTE $_$ALTER FUNCTION pg_catalog.to_char(double precision) SET SCHEMA oracle$_$;
32+
EXECUTE $_$ALTER FUNCTION pg_catalog.to_char(numeric) SET SCHEMA oracle$_$;
33+
EXECUTE $_$ALTER FUNCTION pg_catalog.to_number(text) SET SCHEMA oracle$_$;
34+
EXECUTE $_$ALTER FUNCTION pg_catalog.to_number(numeric) SET SCHEMA oracle$_$;
35+
EXECUTE $_$ALTER FUNCTION pg_catalog.to_number(numeric,numeric) SET SCHEMA oracle$_$;
36+
EXECUTE $_$ALTER FUNCTION pg_catalog.lnnvl(boolean) SET SCHEMA oracle$_$;
37+
EXECUTE $_$ALTER FUNCTION pg_catalog.listagg1_transfn(internal,text) SET SCHEMA oracle$_$;
38+
EXECUTE $_$ALTER FUNCTION pg_catalog.wm_concat_transfn(internal,text) SET SCHEMA oracle$_$;
39+
EXECUTE $_$ALTER FUNCTION pg_catalog.listagg2_transfn(internal,text,text) SET SCHEMA oracle$_$;
40+
EXECUTE $_$ALTER FUNCTION pg_catalog.listagg_finalfn(internal) SET SCHEMA oracle$_$;
41+
EXECUTE $_$ALTER FUNCTION pg_catalog.listagg(text) SET SCHEMA oracle$_$;
42+
EXECUTE $_$ALTER FUNCTION pg_catalog.wm_concat(text) SET SCHEMA oracle$_$;
43+
EXECUTE $_$ALTER FUNCTION pg_catalog.listagg(text,text) SET SCHEMA oracle$_$;
44+
EXECUTE $_$ALTER FUNCTION pg_catalog.median4_transfn(internal,real) SET SCHEMA oracle$_$;
45+
EXECUTE $_$ALTER FUNCTION pg_catalog.median4_finalfn(internal) SET SCHEMA oracle$_$;
46+
EXECUTE $_$ALTER FUNCTION pg_catalog.median8_transfn(internal,double precision) SET SCHEMA oracle$_$;
47+
EXECUTE $_$ALTER FUNCTION pg_catalog.median8_finalfn(internal) SET SCHEMA oracle$_$;
48+
EXECUTE $_$ALTER FUNCTION pg_catalog.median(real) SET SCHEMA oracle$_$;
49+
EXECUTE $_$ALTER FUNCTION pg_catalog.median(double precision) SET SCHEMA oracle$_$;
50+
EXECUTE $_$ALTER FUNCTION pg_catalog.substrb(varchar2,integer,integer) SET SCHEMA oracle$_$;
51+
EXECUTE $_$ALTER FUNCTION pg_catalog.substrb(varchar2,integer) SET SCHEMA oracle$_$;
52+
EXECUTE $_$ALTER FUNCTION pg_catalog.lengthb(varchar2) SET SCHEMA oracle$_$;
53+
EXECUTE $_$ALTER FUNCTION pg_catalog.strposb(varchar2,varchar2) SET SCHEMA oracle$_$;
54+
EXECUTE $_$ALTER FUNCTION pg_catalog.trunc(timestamp without time zone,text) SET SCHEMA oracle$_$;
55+
EXECUTE $_$ALTER FUNCTION pg_catalog.round(timestamp without time zone,text) SET SCHEMA oracle$_$;
56+
EXECUTE $_$ALTER FUNCTION pg_catalog.round(timestamp without time zone) SET SCHEMA oracle$_$;
57+
EXECUTE $_$ALTER FUNCTION pg_catalog.trunc(timestamp without time zone) SET SCHEMA oracle$_$;
58+
EXECUTE $_$ALTER FUNCTION pg_catalog.to_date(text) RENAME TO orafce__obsolete_to_date$_$;
59+
EXECUTE $_$ALTER FUNCTION pg_catalog.orafce__obsolete_to_date(text) SET SCHEMA oracle$_$;
6060
ELSE
6161
-- Pre PostgreSQL 12 doesn't allow ALTER FUNCTION pg_catalog.xx SET SCHEMA
6262
-- So we need to use dirty way

orafce--3.22--3.23.sql

+4-4
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ $$ LANGUAGE sql IMMUTABLE;
2121
DO $$
2222
BEGIN
2323
IF EXISTS(SELECT * FROM pg_settings WHERE name = 'server_version_num' AND setting::int >= 90600) THEN
24-
ALTER FUNCTION oracle.mod(SMALLINT, SMALLINT) PARALLEL SAFE;
25-
ALTER FUNCTION oracle.mod(INT, INT) PARALLEL SAFE;
26-
ALTER FUNCTION oracle.mod(BIGINT, BIGINT) PARALLEL SAFE;
27-
ALTER FUNCTION oracle.mod(NUMERIC, NUMERIC) PARALLEL SAFE;
24+
EXECUTE $_$ALTER FUNCTION oracle.mod(SMALLINT, SMALLINT) PARALLEL SAFE$_$;
25+
EXECUTE $_$ALTER FUNCTION oracle.mod(INT, INT) PARALLEL SAFE$_$;
26+
EXECUTE $_$ALTER FUNCTION oracle.mod(BIGINT, BIGINT) PARALLEL SAFE$_$;
27+
EXECUTE $_$ALTER FUNCTION oracle.mod(NUMERIC, NUMERIC) PARALLEL SAFE$_$;
2828
END IF;
2929
END;
3030
$$;

orafce--3.23--3.24.sql

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
DO $$
22
BEGIN
33
IF EXISTS(SELECT * FROM pg_settings WHERE name = 'server_version_num' AND setting::int >= 130000) THEN
4-
ALTER TYPE oracle.nvarchar2 SET (storage = extended);
5-
ALTER TYPE oracle.varchar2 SET (storage = extended);
4+
EXECUTE $_$ALTER TYPE oracle.nvarchar2 SET (storage = extended)$_$;
5+
EXECUTE $_$ALTER TYPE oracle.varchar2 SET (storage = extended)$_$;
66
ELSE
77
UPDATE pg_type SET typstorage = 'x' WHERE typname = 'nvarchar2' AND typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'oracle');
88
UPDATE pg_type SET typstorage = 'x' WHERE typname = 'varchar2' AND typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'oracle');

orafce--3.24.sql

+6-6
Original file line numberDiff line numberDiff line change
@@ -330,10 +330,10 @@ $$ LANGUAGE sql IMMUTABLE;
330330
DO $$
331331
BEGIN
332332
IF EXISTS(SELECT * FROM pg_settings WHERE name = 'server_version_num' AND setting::int >= 90600) THEN
333-
ALTER FUNCTION oracle.mod(SMALLINT, SMALLINT) PARALLEL SAFE;
334-
ALTER FUNCTION oracle.mod(INT, INT) PARALLEL SAFE;
335-
ALTER FUNCTION oracle.mod(BIGINT, BIGINT) PARALLEL SAFE;
336-
ALTER FUNCTION oracle.mod(NUMERIC, NUMERIC) PARALLEL SAFE;
333+
EXECUTE $_$ALTER FUNCTION oracle.mod(SMALLINT, SMALLINT) PARALLEL SAFE$_$;
334+
EXECUTE $_$ALTER FUNCTION oracle.mod(INT, INT) PARALLEL SAFE$_$;
335+
EXECUTE $_$ALTER FUNCTION oracle.mod(BIGINT, BIGINT) PARALLEL SAFE$_$;
336+
EXECUTE $_$ALTER FUNCTION oracle.mod(NUMERIC, NUMERIC) PARALLEL SAFE$_$;
337337
END IF;
338338
END;
339339
$$;
@@ -2326,7 +2326,7 @@ AS IMPLICIT;
23262326
do $$
23272327
BEGIN
23282328
IF EXISTS(SELECT * FROM pg_settings WHERE name = 'server_version_num' AND setting::int >= 120000) THEN
2329-
ALTER FUNCTION oracle.varchar2(oracle.varchar2, integer, boolean) SUPPORT oracle.varchar2_transform;
2329+
EXECUTE $_$ALTER FUNCTION oracle.varchar2(oracle.varchar2, integer, boolean) SUPPORT oracle.varchar2_transform$_$;
23302330
ELSE
23312331
UPDATE pg_proc SET protransform= 'oracle.varchar2_transform'::regproc::oid WHERE proname='varchar2';
23322332

@@ -2546,7 +2546,7 @@ AS IMPLICIT;
25462546
do $$
25472547
BEGIN
25482548
IF EXISTS(SELECT * FROM pg_settings WHERE name = 'server_version_num' AND setting::int >= 120000) THEN
2549-
ALTER FUNCTION oracle.nvarchar2(oracle.nvarchar2, integer, boolean) SUPPORT oracle.nvarchar2_transform;
2549+
EXECUTE $_$ALTER FUNCTION oracle.nvarchar2(oracle.nvarchar2, integer, boolean) SUPPORT oracle.nvarchar2_transform$_$;
25502550
ELSE
25512551
UPDATE pg_proc SET protransform= 'oracle.nvarchar2_transform'::regproc::oid WHERE proname='nvarchar2';
25522552

0 commit comments

Comments
 (0)