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 | |
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')
-rw-r--r-- | src/backend/utils/init/miscinit.c | 18 | ||||
-rwxr-xr-x | src/backend/utils/misc/check_guc | 9 | ||||
-rw-r--r-- | src/backend/utils/misc/guc.c | 11 |
3 files changed, 30 insertions, 8 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); } diff --git a/src/backend/utils/misc/check_guc b/src/backend/utils/misc/check_guc index 7930d06f6e6..5b545d5f436 100755 --- a/src/backend/utils/misc/check_guc +++ b/src/backend/utils/misc/check_guc @@ -16,9 +16,12 @@ ## if an option is valid but shows up in only one file (guc.c but not ## postgresql.conf.sample), it should be listed here so that it ## can be ignored -INTENTIONALLY_NOT_INCLUDED="pre_auth_delay lc_messages lc_monetary \ -lc_numeric lc_time seed server_encoding session_authorization \ -transaction_isolation transaction_read_only zero_damaged_pages" +INTENTIONALLY_NOT_INCLUDED="autocommit debug_deadlocks exit_on_error \ +is_superuser lc_collate lc_ctype lc_messages lc_monetary lc_numeric lc_time \ +pre_auth_delay seed server_encoding server_version session_authorization \ +trace_lock_oidmin trace_lock_table trace_locks trace_lwlocks trace_notify \ +trace_userlocks transaction_isolation transaction_read_only \ +zero_damaged_pages" ### What options are listed in postgresql.conf.sample, but don't appear ### in guc.c? diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index f1582b8c5b5..dfdc4f82e7f 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -10,7 +10,7 @@ * Written by Peter Eisentraut <peter_e@gmx.net>. * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.131 2003/06/11 22:13:22 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.132 2003/06/27 19:08:38 tgl Exp $ * *-------------------------------------------------------------------- */ @@ -138,6 +138,7 @@ static char *log_min_error_statement_str; static char *log_min_messages_str; static char *client_min_messages_str; static bool phony_autocommit; +static bool session_auth_is_superuser; static double phony_random_seed; static char *client_encoding_string; static char *datestyle_string; @@ -361,6 +362,13 @@ static struct config_bool true, NULL, NULL }, + /* Not for general use --- used by SET SESSION AUTHORIZATION */ + { + {"is_superuser", PGC_INTERNAL, GUC_REPORT | GUC_NO_SHOW_ALL | GUC_NO_RESET_ALL}, + &session_auth_is_superuser, + false, NULL, NULL + }, + { {"tcpip_socket", PGC_POSTMASTER}, &NetServer, false, NULL, NULL @@ -894,6 +902,7 @@ static struct config_string "SQL_ASCII", NULL, NULL }, + /* Can't be set in postgresql.conf */ { {"server_version", PGC_INTERNAL, GUC_REPORT}, &server_version_string, |