diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2003-09-03 22:05:09 +0000 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2003-09-03 22:05:09 +0000 |
commit | 29a20145fd2d1859eb3ec1788240244d0b50f68f (patch) | |
tree | 6b83ccf2e9b2c6104c3ebb9f4a4b78581d9c827b /src | |
parent | 4e85f760e6b1cccfb82be8078257ade01435573e (diff) | |
download | postgresql-29a20145fd2d1859eb3ec1788240244d0b50f68f.tar.gz postgresql-29a20145fd2d1859eb3ec1788240244d0b50f68f.zip |
Pass session_authorization to the client and make psql update its prompt
accordingly.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/misc/guc.c | 4 | ||||
-rw-r--r-- | src/bin/psql/common.c | 25 | ||||
-rw-r--r-- | src/bin/psql/common.h | 3 | ||||
-rw-r--r-- | src/bin/psql/prompt.c | 4 |
4 files changed, 30 insertions, 6 deletions
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index fbf7cc5bff8..f7571151175 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.153 2003/09/01 23:04:49 petere Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.154 2003/09/03 22:05:08 petere Exp $ * *-------------------------------------------------------------------- */ @@ -1501,7 +1501,7 @@ static struct config_string ConfigureNamesString[] = {"session_authorization", PGC_USERSET, UNGROUPED, gettext_noop("Current session userid"), NULL, - GUC_NO_SHOW_ALL | GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE + GUC_REPORT | GUC_NO_SHOW_ALL | GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE }, &session_authorization_string, NULL, assign_session_authorization, show_session_authorization diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index cead3c65904..70551a2a3d5 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2003, PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.72 2003/08/14 18:48:35 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.73 2003/09/03 22:05:08 petere Exp $ */ #include "postgres_fe.h" #include "common.h" @@ -724,3 +724,26 @@ is_superuser(void) return false; } + + +/* + * Return the session user of the current connection. + * + * Note: this will correctly detect the session user only with a + * protocol-3.0 or newer backend; otherwise it will return the + * connection user. + */ +const char * +session_username(void) +{ + const char *val; + + if (!pset.db) + return NULL; + + val = PQparameterStatus(pset.db, "session_authorization"); + if (val) + return val; + else + return PQuser(pset.db); +} diff --git a/src/bin/psql/common.h b/src/bin/psql/common.h index 08ec84acdf2..f5719bb2584 100644 --- a/src/bin/psql/common.h +++ b/src/bin/psql/common.h @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2003, PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/common.h,v 1.28 2003/08/08 04:52:21 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/common.h,v 1.29 2003/09/03 22:05:09 petere Exp $ */ #ifndef COMMON_H #define COMMON_H @@ -37,6 +37,7 @@ extern PGresult *PSQLexec(const char *query, bool start_xact); extern bool SendQuery(const char *query); extern bool is_superuser(void); +extern const char *session_username(void); /* Parse a numeric character code from the string pointed at by *buf, e.g. * one written as 0x0c (hexadecimal) or 015 (octal); advance *buf to the last diff --git a/src/bin/psql/prompt.c b/src/bin/psql/prompt.c index 4e9eb36c800..fbc0f44381f 100644 --- a/src/bin/psql/prompt.c +++ b/src/bin/psql/prompt.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2003, PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/prompt.c,v 1.28 2003/08/04 23:59:40 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/prompt.c,v 1.29 2003/09/03 22:05:09 petere Exp $ */ #include "postgres_fe.h" #include "prompt.h" @@ -160,7 +160,7 @@ get_prompt(promptStatus_t status) /* DB server user name */ case 'n': if (pset.db) - strncpy(buf, PQuser(pset.db), MAX_PROMPT_SIZE); + strncpy(buf, session_username(), MAX_PROMPT_SIZE); break; case '0': |