diff options
author | Robert Haas <rhaas@postgresql.org> | 2015-02-02 16:23:59 -0500 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2015-02-02 16:23:59 -0500 |
commit | 5d2f957f3f9dcd88384780876f535b423151f9bf (patch) | |
tree | a857f045f8bc849ef6cb3aca570e7252e74a324b /src/backend/utils/init/miscinit.c | |
parent | 2488eff889f83d7d6411be9a6172ff69df3f0085 (diff) | |
download | postgresql-5d2f957f3f9dcd88384780876f535b423151f9bf.tar.gz postgresql-5d2f957f3f9dcd88384780876f535b423151f9bf.zip |
Add new function BackgroundWorkerInitializeConnectionByOid.
Sometimes it's useful for a background worker to be able to initialize
its database connection by OID rather than by name, so provide a way
to do that.
Diffstat (limited to 'src/backend/utils/init/miscinit.c')
-rw-r--r-- | src/backend/utils/init/miscinit.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index 4646e0938e9..1dc31535fd6 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -453,11 +453,10 @@ has_rolreplication(Oid roleid) * Initialize user identity during normal backend startup */ void -InitializeSessionUserId(const char *rolename) +InitializeSessionUserId(const char *rolename, Oid roleid) { HeapTuple roleTup; Form_pg_authid rform; - Oid roleid; /* * Don't do scans if we're bootstrapping, none of the system catalogs @@ -468,7 +467,10 @@ InitializeSessionUserId(const char *rolename) /* call only once */ AssertState(!OidIsValid(AuthenticatedUserId)); - roleTup = SearchSysCache1(AUTHNAME, PointerGetDatum(rolename)); + if (rolename != NULL) + roleTup = SearchSysCache1(AUTHNAME, PointerGetDatum(rolename)); + else + roleTup = SearchSysCache1(AUTHOID, ObjectIdGetDatum(roleid)); if (!HeapTupleIsValid(roleTup)) ereport(FATAL, (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION), |