mirror of
https://github.com/postgres/postgres.git
synced 2025-06-11 20:28:21 +03:00
Pass session_authorization to the client and make psql update its prompt
accordingly.
This commit is contained in:
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.134 2003/09/01 23:04:49 petere Exp $
|
$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.135 2003/09/03 22:05:01 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="libpq">
|
<chapter id="libpq">
|
||||||
@ -857,7 +857,8 @@ is not known.
|
|||||||
Parameters reported as of the current release include
|
Parameters reported as of the current release include
|
||||||
<literal>server_version</> (cannot change after startup);
|
<literal>server_version</> (cannot change after startup);
|
||||||
<literal>client_encoding</>,
|
<literal>client_encoding</>,
|
||||||
<literal>is_superuser</>, and
|
<literal>is_superuser</>,
|
||||||
|
<literal>session_authorization</literal>, and
|
||||||
<literal>DateStyle</>.
|
<literal>DateStyle</>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/protocol.sgml,v 1.42 2003/09/01 23:04:49 petere Exp $ -->
|
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/protocol.sgml,v 1.43 2003/09/03 22:05:07 petere Exp $ -->
|
||||||
|
|
||||||
<chapter id="protocol">
|
<chapter id="protocol">
|
||||||
<title>Frontend/Backend Protocol</title>
|
<title>Frontend/Backend Protocol</title>
|
||||||
@ -1006,7 +1006,8 @@
|
|||||||
<literal>server_version</> (a pseudo-parameter that cannot change after
|
<literal>server_version</> (a pseudo-parameter that cannot change after
|
||||||
startup);
|
startup);
|
||||||
<literal>client_encoding</>,
|
<literal>client_encoding</>,
|
||||||
<literal>is_superuser</>, and
|
<literal>is_superuser</>,
|
||||||
|
<literal>session_authorization</literal>, and
|
||||||
<literal>DateStyle</>.
|
<literal>DateStyle</>.
|
||||||
This set might change in the future, or even become configurable.
|
This set might change in the future, or even become configurable.
|
||||||
Accordingly, a frontend should simply ignore ParameterStatus for
|
Accordingly, a frontend should simply ignore ParameterStatus for
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.95 2003/08/31 17:32:24 petere Exp $
|
$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.96 2003/09/03 22:05:08 petere Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -2214,8 +2214,14 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\'
|
|||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><literal>%n</literal></term>
|
<term><literal>%n</literal></term>
|
||||||
<listitem><para>The user name you are connected as (not your local system
|
<listitem>
|
||||||
user name).</para></listitem>
|
<para>
|
||||||
|
The database session user name. (The expansion of this
|
||||||
|
value might change during a database session as the result
|
||||||
|
of the command <command>SET SESSION
|
||||||
|
AUTHORIZATION</command>.)
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
@ -2231,8 +2237,15 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\'
|
|||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><literal>%#</literal></term>
|
<term><literal>%#</literal></term>
|
||||||
<listitem><para>If the current user is a database superuser, then a
|
<listitem>
|
||||||
<literal>#</literal>, otherwise a <literal>></literal>.</para></listitem>
|
<para>
|
||||||
|
If the session user is a database superuser, then a
|
||||||
|
<literal>#</literal>, otherwise a <literal>></literal>.
|
||||||
|
(The expansion of this value might change during a database
|
||||||
|
session as the result of the command <command>SET SESSION
|
||||||
|
AUTHORIZATION</command>.)
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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,
|
{"session_authorization", PGC_USERSET, UNGROUPED,
|
||||||
gettext_noop("Current session userid"),
|
gettext_noop("Current session userid"),
|
||||||
NULL,
|
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,
|
&session_authorization_string,
|
||||||
NULL, assign_session_authorization, show_session_authorization
|
NULL, assign_session_authorization, show_session_authorization
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
|
* 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 "postgres_fe.h"
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
@ -724,3 +724,26 @@ is_superuser(void)
|
|||||||
|
|
||||||
return false;
|
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);
|
||||||
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
|
* 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
|
#ifndef COMMON_H
|
||||||
#define 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 SendQuery(const char *query);
|
||||||
|
|
||||||
extern bool is_superuser(void);
|
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.
|
/* 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
|
* one written as 0x0c (hexadecimal) or 015 (octal); advance *buf to the last
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
|
* 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 "postgres_fe.h"
|
||||||
#include "prompt.h"
|
#include "prompt.h"
|
||||||
@ -160,7 +160,7 @@ get_prompt(promptStatus_t status)
|
|||||||
/* DB server user name */
|
/* DB server user name */
|
||||||
case 'n':
|
case 'n':
|
||||||
if (pset.db)
|
if (pset.db)
|
||||||
strncpy(buf, PQuser(pset.db), MAX_PROMPT_SIZE);
|
strncpy(buf, session_username(), MAX_PROMPT_SIZE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '0':
|
case '0':
|
||||||
|
Reference in New Issue
Block a user