aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/init/miscinit.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2002-03-01 22:45:19 +0000
committerPeter Eisentraut <peter_e@gmx.net>2002-03-01 22:45:19 +0000
commit1aac2c852a2ccd817daf2dac99cf450e7822eb20 (patch)
tree905d452d101bd6ef6024d178261556ef7cd73470 /src/backend/utils/init/miscinit.c
parent851f7661154f6de6dd0cfef5fec5aa7cce0a7ae8 (diff)
downloadpostgresql-1aac2c852a2ccd817daf2dac99cf450e7822eb20.tar.gz
postgresql-1aac2c852a2ccd817daf2dac99cf450e7822eb20.zip
User and database-specific session defaults for run-time configuration
variables. New commands ALTER DATABASE ... SET and ALTER USER ... SET.
Diffstat (limited to 'src/backend/utils/init/miscinit.c')
-rw-r--r--src/backend/utils/init/miscinit.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index 9705dda664c..0ccbe753d06 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.82 2002/01/09 19:13:41 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.83 2002/03/01 22:45:15 petere Exp $
*
*-------------------------------------------------------------------------
*/
@@ -31,6 +31,7 @@
#include "libpq/libpq-be.h"
#include "miscadmin.h"
#include "utils/builtins.h"
+#include "utils/guc.h"
#include "utils/lsyscache.h"
#include "utils/syscache.h"
@@ -437,6 +438,8 @@ void
InitializeSessionUserId(const char *username)
{
HeapTuple userTup;
+ Datum datum;
+ bool isnull;
/*
* Don't do scans if we're bootstrapping, none of the system catalogs
@@ -457,6 +460,21 @@ InitializeSessionUserId(const char *username)
AuthenticatedUserIsSuperuser = ((Form_pg_shadow) GETSTRUCT(userTup))->usesuper;
+ /*
+ * Set up user-specific configuration variables. This is a good
+ * place to do it so we don't have to read pg_shadow twice during
+ * session startup.
+ */
+ datum = SysCacheGetAttr(SHADOWNAME, userTup,
+ Anum_pg_shadow_useconfig, &isnull);
+ if (!isnull)
+ {
+ ArrayType *a;
+
+ a = (ArrayType *) pg_detoast_datum((struct varlena *)datum);
+ ProcessGUCArray(a, PGC_S_USER);
+ }
+
ReleaseSysCache(userTup);
}