Tom Lane wrote: > Bruce Momjian <pgman@candle.pha.pa.us> writes: > > Should pg_dumpall be using the "SET default_tablespace = foo" method as > > well? > > That would mean changing the semantics of CREATE DATABASE; currently it > copies the default tablespace from the template database, rather than > looking at default_tablespace. I'm unsure if that's a good idea or not. > None of the other properties of a database are handled that way.
Interesting distinction. I have added a documentation and code comment patch for this. -- Bruce Momjian http://candle.pha.pa.us EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. +
Index: doc/src/sgml/ref/pg_dumpall.sgml =================================================================== RCS file: /cvsroot/pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v retrieving revision 1.55 diff -c -c -r1.55 pg_dumpall.sgml *** doc/src/sgml/ref/pg_dumpall.sgml 1 Nov 2005 21:09:50 -0000 1.55 --- doc/src/sgml/ref/pg_dumpall.sgml 16 Jun 2006 21:56:58 -0000 *************** *** 377,382 **** --- 377,389 ---- databases. </para> + <para> + <application>pg_dumpall</application> requires all needed + tablespace directories to exist before the restore or + database creation will fail for databases in non-default + locations. + </para> + </refsect1> Index: src/bin/pg_dump/pg_dumpall.c =================================================================== RCS file: /cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v retrieving revision 1.79 diff -c -c -r1.79 pg_dumpall.c *** src/bin/pg_dump/pg_dumpall.c 7 Jun 2006 22:24:45 -0000 1.79 --- src/bin/pg_dump/pg_dumpall.c 16 Jun 2006 21:57:09 -0000 *************** *** 888,894 **** appendPQExpBuffer(buf, " ENCODING = "); appendStringLiteralConn(buf, dbencoding, conn); ! /* Output tablespace if it isn't default */ if (strcmp(dbtablespace, "pg_default") != 0) appendPQExpBuffer(buf, " TABLESPACE = %s", fmtId(dbtablespace)); --- 888,902 ---- appendPQExpBuffer(buf, " ENCODING = "); appendStringLiteralConn(buf, dbencoding, conn); ! /* ! * Output tablespace if it isn't the default. For default, it ! * uses the default from the template database. If tablespace ! * is specified and tablespace creation failed earlier, ! * (e.g. no such directory), the database creation will fail ! * too. One solution would be to use 'SET default_tablespace' ! * like we do in pg_dump for setting non-default database ! * locations. ! */ if (strcmp(dbtablespace, "pg_default") != 0) appendPQExpBuffer(buf, " TABLESPACE = %s", fmtId(dbtablespace));
---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster