Check criticalSharedRelcachesBuilt in GetSharedSecurityLabel().
An extension may want to call GetSecurityLabel() on a shared object
before the shared relcaches are fully initialized. For instance, a
ClientAuthentication_hook might want to retrieve the security label on
a role.
Discussion:
Backpatch-through: 9.6
@@ -169,8 +169,8 @@ GetSharedSecurityLabel(const ObjectAddress *object, const char *provider)
pg_shseclabel = table_open(SharedSecLabelRelationId, AccessShareLock);
- scan = systable_beginscan(pg_shseclabel, SharedSecLabelObjectIndexId, true,
- NULL, 3, keys);
+ scan = systable_beginscan(pg_shseclabel, SharedSecLabelObjectIndexId,
+ criticalSharedRelcachesBuilt, NULL, 3, keys);
tuple = systable_getnext(scan);
if (HeapTupleIsValid(tuple))
