@@ -18,6 +18,12 @@ CREATE AGGREGATE reorg.array_accum (
18
18
initcond = '{}'
19
19
);
20
20
21
+ CREATE FUNCTION reorg.oid2text(oid) RETURNS text AS
22
+ $$
23
+ SELECT textin(regclassout($1));
24
+ $$
25
+ LANGUAGE sql STABLE STRICT;
26
+
21
27
CREATE FUNCTION reorg.get_index_columns(oid, text) RETURNS text AS
22
28
$$
23
29
SELECT array_to_string(reorg.array_accum(quote_ident(attname)), $2)
@@ -58,7 +64,7 @@ CREATE FUNCTION reorg.get_create_trigger(relid oid, pkid oid)
58
64
RETURNS text AS
59
65
$$
60
66
SELECT 'CREATE TRIGGER z_reorg_trigger' ||
61
- ' BEFORE INSERT OR DELETE OR UPDATE ON ' || $1::regclass ||
67
+ ' BEFORE INSERT OR DELETE OR UPDATE ON ' || reorg.oid2text($1) ||
62
68
' FOR EACH ROW EXECUTE PROCEDURE reorg.reorg_trigger(' ||
63
69
'''INSERT INTO reorg.log_' || $1 || '(pk, row) VALUES(' ||
64
70
' CASE WHEN $1 IS NULL THEN NULL ELSE (ROW($1.' ||
@@ -104,11 +110,11 @@ CREATE VIEW reorg.tables AS
104
110
PK.indexrelid AS pkid,
105
111
CK.indexrelid AS ckid,
106
112
reorg.get_create_index_type(PK.indexrelid, 'reorg.pk_' || R.oid) AS create_pktype,
107
- 'CREATE TABLE reorg.log_' || R.oid || ' (id bigserial PRIMARY KEY, pk reorg.pk_' || R.oid || ', row ' || R.oid::regclass || ')' AS create_log,
113
+ 'CREATE TABLE reorg.log_' || R.oid || ' (id bigserial PRIMARY KEY, pk reorg.pk_' || R.oid || ', row ' || reorg.oid2text( R.oid) || ')' AS create_log,
108
114
reorg.get_create_trigger(R.oid, PK.indexrelid) AS create_trigger,
109
- 'CREATE TABLE reorg.table_' || R.oid || ' WITH (' || array_to_string(array_append(R.reloptions, 'oids=' || R.relhasoids), ',') || ') TABLESPACE ' || coalesce(quote_ident(S.spcname), 'pg_default') || ' AS SELECT * FROM ONLY ' || R.oid::regclass AS create_table,
115
+ 'CREATE TABLE reorg.table_' || R.oid || ' WITH (' || array_to_string(array_append(R.reloptions, 'oids=' || CASE WHEN R.relhasoids THEN 'true' ELSE 'false' END ), ',') || ') TABLESPACE ' || coalesce(quote_ident(S.spcname), 'pg_default') || ' AS SELECT * FROM ONLY ' || reorg.oid2text( R.oid) AS create_table,
110
116
'DELETE FROM reorg.log_' || R.oid AS delete_log,
111
- 'LOCK TABLE ' || R.oid::regclass || ' IN ACCESS EXCLUSIVE MODE' AS lock_table,
117
+ 'LOCK TABLE ' || reorg.oid2text( R.oid) || ' IN ACCESS EXCLUSIVE MODE' AS lock_table,
112
118
reorg.get_index_keys(CK.indexrelid, R.oid) AS ckey,
113
119
'SELECT * FROM reorg.log_' || R.oid || ' ORDER BY id LIMIT $1' AS sql_peek,
114
120
'INSERT INTO reorg.table_' || R.oid || ' VALUES ($1.*)' AS sql_insert,
0 commit comments