diff options
author | Bruce Momjian <bruce@momjian.us> | 2014-08-25 22:19:05 -0400 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2014-08-25 22:19:05 -0400 |
commit | a7ae1dcf4939cf643c5abe8dd673e4b87a6efd42 (patch) | |
tree | b71652b71d5609e31bae011db4bb9cc5c28c4048 /src/backend/commands/user.c | |
parent | 73fe87503f23144a27f0bdecc55587deb5aa425f (diff) |
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/user.c')
-rw-r--r-- | src/backend/commands/user.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index d3a2044191b..91b6fa5c17d 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; } |