aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/typecmds.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2014-08-25 22:19:05 -0400
committerBruce Momjian <bruce@momjian.us>2014-08-25 22:19:05 -0400
commita7ae1dcf4939cf643c5abe8dd673e4b87a6efd42 (patch)
treeb71652b71d5609e31bae011db4bb9cc5c28c4048 /src/backend/commands/typecmds.c
parent73fe87503f23144a27f0bdecc55587deb5aa425f (diff)
downloadpostgresql-a7ae1dcf4939cf643c5abe8dd673e4b87a6efd42.tar.gz
postgresql-a7ae1dcf4939cf643c5abe8dd673e4b87a6efd42.zip
pg_upgrade: prevent automatic oid assignment
Prevent automatic oid assignment when in binary upgrade mode. Also throw an error when contrib/pg_upgrade_support functions are called when not in binary upgrade mode. This prevent automatically-assigned oids from conflicting with later pre-assigned oids coming from the old cluster. It also makes sure oids are preserved in call important cases.
Diffstat (limited to 'src/backend/commands/typecmds.c')
-rw-r--r--src/backend/commands/typecmds.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index ec439fabd63..ad364efbcbd 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -1986,9 +1986,14 @@ AssignTypeArrayOid(void)
{
Oid type_array_oid;
- /* Use binary-upgrade override for pg_type.typarray, if supplied. */
- if (IsBinaryUpgrade && OidIsValid(binary_upgrade_next_array_pg_type_oid))
+ /* Use binary-upgrade override for pg_type.typarray? */
+ if (IsBinaryUpgrade)
{
+ if (!OidIsValid(binary_upgrade_next_array_pg_type_oid))
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("pg_type array OID value not set when in binary upgrade mode")));
+
type_array_oid = binary_upgrade_next_array_pg_type_oid;
binary_upgrade_next_array_pg_type_oid = InvalidOid;
}