From a7ae1dcf4939cf643c5abe8dd673e4b87a6efd42 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Mon, 25 Aug 2014 22:19:05 -0400 Subject: 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. --- src/backend/commands/user.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/backend/commands/user.c') diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index d3a2044191..91b6fa5c17 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -379,10 +379,15 @@ CreateRole(CreateRoleStmt *stmt) /* * pg_largeobject_metadata contains pg_authid.oid's, so we use the - * binary-upgrade override, if specified. + * binary-upgrade override. */ - if (IsBinaryUpgrade && OidIsValid(binary_upgrade_next_pg_authid_oid)) + if (IsBinaryUpgrade) { + if (!OidIsValid(binary_upgrade_next_pg_authid_oid)) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("pg_authid OID value not set when in binary upgrade mode"))); + HeapTupleSetOid(tuple, binary_upgrade_next_pg_authid_oid); binary_upgrade_next_pg_authid_oid = InvalidOid; } -- cgit v1.2.1