Skip to content

Commit f2fed24

Browse files
author
Masahiko Sakamoto
committed
Fixes for 9.2devel. reported by Josh.
- Since 9.2, RenameRelationInternal() has changed its signature. - In CREATE FUNCTION, LANGUAGE clause does not accept string.
1 parent 815dd72 commit f2fed24

File tree

2 files changed

+31
-16
lines changed

2 files changed

+31
-16
lines changed

lib/pg_reorg.sql.in

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ CREATE SCHEMA reorg;
1414

1515
CREATE FUNCTION reorg.version() RETURNS text AS
1616
'MODULE_PATHNAME', 'reorg_version'
17-
LANGUAGE 'C' IMMUTABLE STRICT;
17+
LANGUAGE C IMMUTABLE STRICT;
1818

1919
CREATE AGGREGATE reorg.array_accum (
2020
sfunc = array_append,
@@ -46,7 +46,7 @@ LANGUAGE sql STABLE STRICT;
4646

4747
CREATE FUNCTION reorg.get_index_keys(oid, oid) RETURNS text AS
4848
'MODULE_PATHNAME', 'reorg_get_index_keys'
49-
LANGUAGE 'C' STABLE STRICT;
49+
LANGUAGE C STABLE STRICT;
5050

5151
CREATE FUNCTION reorg.get_create_index_type(oid, name) RETURNS text AS
5252
$$
@@ -196,11 +196,11 @@ CREATE VIEW reorg.tables AS
196196

197197
CREATE FUNCTION reorg.reorg_indexdef(oid, oid) RETURNS text AS
198198
'MODULE_PATHNAME', 'reorg_indexdef'
199-
LANGUAGE 'C' STABLE STRICT;
199+
LANGUAGE C STABLE STRICT;
200200

201201
CREATE FUNCTION reorg.reorg_trigger() RETURNS trigger AS
202202
'MODULE_PATHNAME', 'reorg_trigger'
203-
LANGUAGE 'C' VOLATILE STRICT SECURITY DEFINER;
203+
LANGUAGE C VOLATILE STRICT SECURITY DEFINER;
204204

205205
CREATE FUNCTION reorg.conflicted_triggers(oid) RETURNS SETOF name AS
206206
$$
@@ -211,7 +211,7 @@ LANGUAGE sql STABLE STRICT;
211211

212212
CREATE FUNCTION reorg.disable_autovacuum(regclass) RETURNS void AS
213213
'MODULE_PATHNAME', 'reorg_disable_autovacuum'
214-
LANGUAGE 'C' VOLATILE STRICT;
214+
LANGUAGE C VOLATILE STRICT;
215215

216216
CREATE FUNCTION reorg.reorg_apply(
217217
sql_peek cstring,
@@ -222,14 +222,14 @@ CREATE FUNCTION reorg.reorg_apply(
222222
count integer)
223223
RETURNS integer AS
224224
'MODULE_PATHNAME', 'reorg_apply'
225-
LANGUAGE 'C' VOLATILE;
225+
LANGUAGE C VOLATILE;
226226

227227
CREATE FUNCTION reorg.reorg_swap(oid) RETURNS void AS
228228
'MODULE_PATHNAME', 'reorg_swap'
229-
LANGUAGE 'C' VOLATILE STRICT;
229+
LANGUAGE C VOLATILE STRICT;
230230

231231
CREATE FUNCTION reorg.reorg_drop(oid) RETURNS void AS
232232
'MODULE_PATHNAME', 'reorg_drop'
233-
LANGUAGE 'C' VOLATILE STRICT;
233+
LANGUAGE C VOLATILE STRICT;
234234

235235
COMMIT;

lib/reorg.c

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,25 @@ must_be_superuser(const char *func)
7070
elog(ERROR, "must be superuser to use %s function", func);
7171
}
7272

73+
74+
/* Include an implementation of RenameRelationInternal for old
75+
* versions which don't have one.
76+
*/
7377
#if PG_VERSION_NUM < 80400
7478
static void RenameRelationInternal(Oid myrelid, const char *newrelname, Oid namespaceId);
7579
#endif
7680

81+
82+
/* The API of RenameRelationInternal() was changed in 9.2.
83+
* Use the RENAME_REL macro for compatibility across versions.
84+
*/
85+
#if PG_VERSION_NUM < 90200
86+
#define RENAME_REL(relid, newrelname) RenameRelationInternal(relid, newrelname, PG_TOAST_NAMESPACE);
87+
#else
88+
#define RENAME_REL(relid, newrelname) RenameRelationInternal(relid, newrelname);
89+
#endif
90+
91+
7792
Datum
7893
reorg_version(PG_FUNCTION_ARGS)
7994
{
@@ -730,9 +745,9 @@ reorg_swap(PG_FUNCTION_ARGS)
730745

731746
/* rename X to Y */
732747
snprintf(name, NAMEDATALEN, "pg_toast_%u", oid2);
733-
RenameRelationInternal(reltoastrelid1, name, PG_TOAST_NAMESPACE);
748+
RENAME_REL(reltoastrelid1, name);
734749
snprintf(name, NAMEDATALEN, "pg_toast_%u_index", oid2);
735-
RenameRelationInternal(reltoastidxid1, name, PG_TOAST_NAMESPACE);
750+
RENAME_REL(reltoastidxid1, name);
736751
CommandCounterIncrement();
737752
}
738753
else if (reltoastrelid1 != InvalidOid)
@@ -742,23 +757,23 @@ reorg_swap(PG_FUNCTION_ARGS)
742757

743758
/* rename X to TEMP */
744759
snprintf(name, NAMEDATALEN, "pg_toast_pid%d", pid);
745-
RenameRelationInternal(reltoastrelid1, name, PG_TOAST_NAMESPACE);
760+
RENAME_REL(reltoastrelid1, name);
746761
snprintf(name, NAMEDATALEN, "pg_toast_pid%d_index", pid);
747-
RenameRelationInternal(reltoastidxid1, name, PG_TOAST_NAMESPACE);
762+
RENAME_REL(reltoastidxid1, name);
748763
CommandCounterIncrement();
749764

750765
/* rename Y to X */
751766
snprintf(name, NAMEDATALEN, "pg_toast_%u", oid);
752-
RenameRelationInternal(reltoastrelid2, name, PG_TOAST_NAMESPACE);
767+
RENAME_REL(reltoastrelid2, name);
753768
snprintf(name, NAMEDATALEN, "pg_toast_%u_index", oid);
754-
RenameRelationInternal(reltoastidxid2, name, PG_TOAST_NAMESPACE);
769+
RENAME_REL(reltoastidxid2, name);
755770
CommandCounterIncrement();
756771

757772
/* rename TEMP to Y */
758773
snprintf(name, NAMEDATALEN, "pg_toast_%u", oid2);
759-
RenameRelationInternal(reltoastrelid1, name, PG_TOAST_NAMESPACE);
774+
RENAME_REL(reltoastrelid1, name);
760775
snprintf(name, NAMEDATALEN, "pg_toast_%u_index", oid2);
761-
RenameRelationInternal(reltoastidxid1, name, PG_TOAST_NAMESPACE);
776+
RENAME_REL(reltoastidxid1, name);
762777
CommandCounterIncrement();
763778
}
764779

0 commit comments

Comments
 (0)