diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 54d4ab8139c17802b627b903b5d234ca9131e8a7..854b68e00d24a094c4542564d5cfa58ddb51e2b7 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.88 2000/06/28 03:31:09 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.89 2000/07/03 20:48:27 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -347,10 +347,8 @@ BootstrapMain(int argc, char *argv[])
 	 */
 	if (IsUnderPostmaster || xloginit)
 	{
-		snprintf(XLogDir, MAXPGPATH, "%s%cpg_xlog",
-				 DataDir, SEP_CHAR);
-		snprintf(ControlFilePath, MAXPGPATH, "%s%cpg_control",
-				 DataDir, SEP_CHAR);
+		snprintf(XLogDir, MAXPGPATH, "%s/pg_xlog", DataDir);
+		snprintf(ControlFilePath, MAXPGPATH, "%s/global/pg_control", DataDir);
 	}
 
 	if (IsUnderPostmaster && xloginit)
diff --git a/src/backend/catalog/catalog.c b/src/backend/catalog/catalog.c
index 4a5b1d9df2a96fadb9ef466b24ead3a65d140bc0..dd9c774e2caa0f053d50648a1d38786c894282f4 100644
--- a/src/backend/catalog/catalog.c
+++ b/src/backend/catalog/catalog.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/catalog/catalog.c,v 1.32 2000/04/12 17:14:55 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/catalog/catalog.c,v 1.33 2000/07/03 20:48:28 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -37,11 +37,11 @@ relpath(const char *relname)
 
 	if (IsSharedSystemRelationName(relname))
 	{
-		/* Shared system relations live in DataDir */
-		size_t		bufsize = strlen(DataDir) + sizeof(NameData) + 2;
+		/* Shared system relations live in {datadir}/global */
+		size_t		bufsize = strlen(DataDir) + 8 + sizeof(NameData) + 1;
 
 		path = (char *) palloc(bufsize);
-		snprintf(path, bufsize, "%s%c%s", DataDir, SEP_CHAR, relname);
+		snprintf(path, bufsize, "%s/global/%s", DataDir, relname);
 		return path;
 	}
 
@@ -71,9 +71,9 @@ relpath_blind(const char *dbname, const char *relname,
 
 	if (dbid == (Oid) 0)
 	{
-		/* Shared system relations live in DataDir */
-		path = (char *) palloc(strlen(DataDir) + sizeof(NameData) + 2);
-		sprintf(path, "%s%c%s", DataDir, SEP_CHAR, relname);
+		/* Shared system relations live in {datadir}/global */
+		path = (char *) palloc(strlen(DataDir) + 8 + sizeof(NameData) + 1);
+		sprintf(path, "%s/global/%s", DataDir, relname);
 	}
 	else if (dbid == MyDatabaseId)
 	{
diff --git a/src/backend/libpq/crypt.c b/src/backend/libpq/crypt.c
index ec53de3e708ec12df7692b4806f9f7d9bf0be7d0..38b8e0ed383cf1122d5454e5ce9bbba5d5127242 100644
--- a/src/backend/libpq/crypt.c
+++ b/src/backend/libpq/crypt.c
@@ -9,7 +9,7 @@
  * Dec 17, 1997 - Todd A. Brandys
  *	Orignal Version Completed.
  *
- * $Id: crypt.c,v 1.25 2000/06/09 01:11:06 tgl Exp $
+ * $Id: crypt.c,v 1.26 2000/07/03 20:48:30 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -38,9 +38,9 @@ crypt_getpwdfilename()
 	static char *pfnam = NULL;
 	int			bufsize;
 
-	bufsize = strlen(DataDir) + strlen(CRYPT_PWD_FILE) + 2;
+	bufsize = strlen(DataDir) + 8 + strlen(CRYPT_PWD_FILE) + 1;
 	pfnam = (char *) palloc(bufsize);
-	snprintf(pfnam, bufsize, "%s/%s", DataDir, CRYPT_PWD_FILE);
+	snprintf(pfnam, bufsize, "%s/global/%s", DataDir, CRYPT_PWD_FILE);
 
 	return pfnam;
 }
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index ddd7f07bc28c37debd469bc88b624adbc108f263..b034442eaff6f5b21a1e09ccb957b7a8eb852c4b 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.164 2000/07/03 20:46:00 petere Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.165 2000/07/03 20:48:37 petere Exp $
  *
  * NOTES
  *	  this is the "main" module of the postgres backend and
@@ -1294,10 +1294,8 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
 		on_proc_exit(UnlinkPidFile, NULL);
 
 		BaseInit();
-		snprintf(XLogDir, MAXPGPATH, "%s%cpg_xlog",
-				 DataDir, SEP_CHAR);
-		snprintf(ControlFilePath, MAXPGPATH, "%s%cpg_control",
-				 DataDir, SEP_CHAR);
+		snprintf(XLogDir, MAXPGPATH, "%s/pg_xlog", DataDir);
+		snprintf(ControlFilePath, MAXPGPATH, "%s/global/pg_control", DataDir);
 		StartupXLOG();
 	}
 
@@ -1406,7 +1404,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
 	if (!IsUnderPostmaster)
 	{
 		puts("\nPOSTGRES backend interactive interface ");
-		puts("$Revision: 1.164 $ $Date: 2000/07/03 20:46:00 $\n");
+		puts("$Revision: 1.165 $ $Date: 2000/07/03 20:48:37 $\n");
 	}
 
 	/*
diff --git a/src/backend/utils/misc/database.c b/src/backend/utils/misc/database.c
index a66c6a719e4435d0ac93bdd65cb5d29d2747bda7..4be24e164f183d38681325fa211710889194019a 100644
--- a/src/backend/utils/misc/database.c
+++ b/src/backend/utils/misc/database.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/misc/Attic/database.c,v 1.38 2000/06/02 15:57:34 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/misc/Attic/database.c,v 1.39 2000/07/03 20:48:42 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -143,8 +143,8 @@ GetRawDatabaseInfo(const char *name, Oid *db_id, char *path)
 	char	   *dbfname;
 	Form_pg_database tup_db;
 
-	dbfname = (char *) palloc(strlen(DataDir) + strlen(DatabaseRelationName) + 2);
-	sprintf(dbfname, "%s%c%s", DataDir, SEP_CHAR, DatabaseRelationName);
+	dbfname = (char *) palloc(strlen(DataDir) + 8 + strlen(DatabaseRelationName) + 2);
+	sprintf(dbfname, "%s/global/%s", DataDir, DatabaseRelationName);
 
 	if ((dbfd = open(dbfname, O_RDONLY | PG_BINARY, 0)) < 0)
 		elog(FATAL, "cannot open %s: %s", dbfname, strerror(errno));
diff --git a/src/bin/initdb/initdb.sh b/src/bin/initdb/initdb.sh
index 25f55ef08389cef6afe000e79fe9ebfe13d058de..d8e8751bf0dae939fdfbee5bbdceab9c79cdc95f 100644
--- a/src/bin/initdb/initdb.sh
+++ b/src/bin/initdb/initdb.sh
@@ -26,7 +26,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.98 2000/07/02 15:21:00 petere Exp $
+#    $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.99 2000/07/03 20:48:46 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -406,21 +406,26 @@ then
 else
     if [ ! -d "$PGDATA" ]
 	then
-        echo "Creating database system directory $PGDATA"
+        echo "Creating directory $PGDATA"
         mkdir "$PGDATA" || exit_nicely
     else
-        echo "Fixing permissions on pre-existing data directory $PGDATA"
+        echo "Fixing permissions on existing directory $PGDATA"
 	chmod go-rwx "$PGDATA" || exit_nicely
     fi
 
     if [ ! -d "$PGDATA"/base ]
 	then
-        echo "Creating database system directory $PGDATA/base"
+        echo "Creating directory $PGDATA/base"
         mkdir "$PGDATA"/base || exit_nicely
     fi
+    if [ ! -d "$PGDATA"/global ]
+    then
+        echo "Creating directory $PGDATA/global"
+        mkdir "$PGDATA"/global || exit_nicely
+    fi
     if [ ! -d "$PGDATA"/pg_xlog ]
     then
-        echo "Creating database XLOG directory $PGDATA/pg_xlog"
+        echo "Creating directory $PGDATA/pg_xlog"
         mkdir "$PGDATA"/pg_xlog || exit_nicely
     fi
 fi
@@ -458,7 +463,7 @@ echo $short_version > "$PGDATA"/base/template1/PG_VERSION || exit_nicely
 
 if [ "$template_only" -eq 0 ]
 then
-    echo "Creating global relations in $PGDATA/base"
+    echo "Creating global relations in $PGDATA/global"
     [ "$debug" -ne 0 ] && echo "Running: $PGPATH/postgres $BACKENDARGS template1"
 
     cat "$GLOBAL" \