diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2002-03-01 22:45:19 +0000 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2002-03-01 22:45:19 +0000 |
commit | 1aac2c852a2ccd817daf2dac99cf450e7822eb20 (patch) | |
tree | 905d452d101bd6ef6024d178261556ef7cd73470 /src/backend/utils/init/miscinit.c | |
parent | 851f7661154f6de6dd0cfef5fec5aa7cce0a7ae8 (diff) | |
download | postgresql-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.c | 20 |
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); } |