aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/init/postinit.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/postinit.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/postinit.c')
-rw-r--r--src/backend/utils/init/postinit.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index 222ab6d54ab..858b6e649c7 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.98 2002/02/19 20:11:18 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.99 2002/03/01 22:45:15 petere Exp $
*
*
*-------------------------------------------------------------------------
@@ -35,6 +35,7 @@
#include "storage/sinval.h"
#include "storage/smgr.h"
#include "utils/fmgroids.h"
+#include "utils/guc.h"
#include "utils/portal.h"
#include "utils/relcache.h"
#include "utils/syscache.h"
@@ -70,6 +71,10 @@ static bool ThereIsAtLeastOneUser(void);
*
* This is also a handy place to fetch the database encoding info out
* of pg_database, if we are in MULTIBYTE mode.
+ *
+ * To avoid having to read pg_database more times than necessary
+ * during session startup, this place is also fitting to set up any
+ * database-specific configuration variables.
* --------------------------------
*/
static void
@@ -132,6 +137,25 @@ ReverifyMyDatabase(const char *name)
dbform->encoding);
#endif
+ /*
+ * Set up datbase-specific configuration variables.
+ */
+ if (IsUnderPostmaster)
+ {
+ Datum datum;
+ bool isnull;
+
+ datum = heap_getattr(tup, Anum_pg_database_datconfig,
+ RelationGetDescr(pgdbrel), &isnull);
+ if (!isnull)
+ {
+ ArrayType *a;
+
+ a = (ArrayType *) pg_detoast_datum((struct varlena *)datum);
+ ProcessGUCArray(a, PGC_S_DATABASE);
+ }
+ }
+
heap_endscan(pgdbscan);
heap_close(pgdbrel, AccessShareLock);
}