diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-06-27 19:08:38 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-06-27 19:08:38 +0000 |
commit | ea886339b8406674ebceb456e5ef1b4fc7c170b4 (patch) | |
tree | 951e5d1e2ac625fb41a9aad8eee27192d8770844 /src/backend/utils/init/miscinit.c | |
parent | 3e0bdfadc354fe3710a5ea1281b6c813c8ffee33 (diff) | |
download | postgresql-ea886339b8406674ebceb456e5ef1b4fc7c170b4.tar.gz postgresql-ea886339b8406674ebceb456e5ef1b4fc7c170b4.zip |
Add is_superuser parameter reporting, soon to be used by psql.
Diffstat (limited to 'src/backend/utils/init/miscinit.c')
-rw-r--r-- | src/backend/utils/init/miscinit.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index c3dc38f387d..4d65f619be4 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.103 2003/06/27 14:45:30 petere Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.104 2003/06/27 19:08:37 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -553,9 +553,12 @@ InitializeSessionUserId(const char *username) SetSessionUserId(usesysid); /* sets CurrentUserId too */ - /* Record username as a config option too */ + /* Record username and superuser status as GUC settings too */ SetConfigOption("session_authorization", username, PGC_BACKEND, PGC_S_OVERRIDE); + SetConfigOption("is_superuser", + AuthenticatedUserIsSuperuser ? "on" : "off", + PGC_INTERNAL, PGC_S_OVERRIDE); /* * Set up user-specific configuration variables. This is a good place @@ -594,10 +597,13 @@ InitializeSessionUserIdStandalone(void) /* * Change session auth ID while running * - * Only a superuser may set auth ID to something other than himself. + * Only a superuser may set auth ID to something other than himself. Note + * that in case of multiple SETs in a single session, the original userid's + * superuserness is what matters. But we set the GUC variable is_superuser + * to indicate whether the *current* session userid is a superuser. */ void -SetSessionAuthorization(AclId userid) +SetSessionAuthorization(AclId userid, bool is_superuser) { /* Must have authenticated already, else can't make permission check */ AssertState(AclIdIsValid(AuthenticatedUserId)); @@ -608,6 +614,10 @@ SetSessionAuthorization(AclId userid) SetSessionUserId(userid); SetUserId(userid); + + SetConfigOption("is_superuser", + is_superuser ? "on" : "off", + PGC_INTERNAL, PGC_S_OVERRIDE); } |