mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Fix pg_upgrade of large object permissions by preserving pg_auth.oid,
which is stored in pg_largeobject_metadata. No backpatch to 9.0 because you can't migrate from 9.0 to 9.0 with the same catversion (because of tablespace conflict), and a pre-9.0 migration to 9.0 has not large object permissions to migrate.
This commit is contained in:
@ -35,6 +35,9 @@
|
||||
#include "utils/syscache.h"
|
||||
#include "utils/tqual.h"
|
||||
|
||||
/* Potentially set by contrib/pg_upgrade_support functions */
|
||||
Oid binary_upgrade_next_pg_authid_oid = InvalidOid;
|
||||
|
||||
|
||||
/* GUC parameter */
|
||||
extern bool Password_encryption;
|
||||
@ -393,6 +396,16 @@ CreateRole(CreateRoleStmt *stmt)
|
||||
|
||||
tuple = heap_form_tuple(pg_authid_dsc, new_record, new_record_nulls);
|
||||
|
||||
/*
|
||||
* pg_largeobject_metadata contains pg_authid.oid's, so we
|
||||
* use the binary-upgrade override, if specified.
|
||||
*/
|
||||
if (OidIsValid(binary_upgrade_next_pg_authid_oid))
|
||||
{
|
||||
HeapTupleSetOid(tuple, binary_upgrade_next_pg_authid_oid);
|
||||
binary_upgrade_next_pg_authid_oid = InvalidOid;
|
||||
}
|
||||
|
||||
/*
|
||||
* Insert new record in the pg_authid table
|
||||
*/
|
||||
|
Reference in New Issue
Block a user