mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
Tweak pg_dump to handle default tablespaces correctly --- same logic
as the corrected pg_get_indexdef code.
This commit is contained in:
parent
edb1ba113d
commit
877179245d
@ -12,7 +12,7 @@
|
|||||||
* by PostgreSQL
|
* by PostgreSQL
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.388 2004/10/06 23:31:45 neilc Exp $
|
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.389 2004/10/18 00:20:41 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -108,6 +108,9 @@ static const CatalogId nilCatalogId = {0, 0};
|
|||||||
static NamespaceInfo *g_namespaces;
|
static NamespaceInfo *g_namespaces;
|
||||||
static int g_numNamespaces;
|
static int g_numNamespaces;
|
||||||
|
|
||||||
|
/* need the name of the database's default tablespace */
|
||||||
|
static char *dbDefaultTableSpace;
|
||||||
|
|
||||||
/* flag to turn on/off dollar quoting */
|
/* flag to turn on/off dollar quoting */
|
||||||
static int disable_dollar_quoting = 0;
|
static int disable_dollar_quoting = 0;
|
||||||
|
|
||||||
@ -1249,6 +1252,9 @@ dumpDatabase(Archive *AH)
|
|||||||
encoding = PQgetvalue(res, 0, i_encoding);
|
encoding = PQgetvalue(res, 0, i_encoding);
|
||||||
tablespace = PQgetvalue(res, 0, i_tablespace);
|
tablespace = PQgetvalue(res, 0, i_tablespace);
|
||||||
|
|
||||||
|
/* save dattablespace name for later dump routines */
|
||||||
|
dbDefaultTableSpace = strdup(tablespace);
|
||||||
|
|
||||||
appendPQExpBuffer(creaQry, "CREATE DATABASE %s WITH TEMPLATE = template0",
|
appendPQExpBuffer(creaQry, "CREATE DATABASE %s WITH TEMPLATE = template0",
|
||||||
fmtId(datname));
|
fmtId(datname));
|
||||||
if (strlen(encoding) > 0)
|
if (strlen(encoding) > 0)
|
||||||
@ -1257,7 +1263,8 @@ dumpDatabase(Archive *AH)
|
|||||||
appendStringLiteral(creaQry, encoding, true);
|
appendStringLiteral(creaQry, encoding, true);
|
||||||
}
|
}
|
||||||
if (strlen(tablespace) > 0 && strcmp(tablespace, "pg_default") != 0)
|
if (strlen(tablespace) > 0 && strcmp(tablespace, "pg_default") != 0)
|
||||||
appendPQExpBuffer(creaQry, " TABLESPACE = %s", fmtId(tablespace));
|
appendPQExpBuffer(creaQry, " TABLESPACE = %s",
|
||||||
|
fmtId(tablespace));
|
||||||
appendPQExpBuffer(creaQry, ";\n");
|
appendPQExpBuffer(creaQry, ";\n");
|
||||||
|
|
||||||
appendPQExpBuffer(delQry, "DROP DATABASE %s;\n",
|
appendPQExpBuffer(delQry, "DROP DATABASE %s;\n",
|
||||||
@ -4428,7 +4435,7 @@ dumpNamespace(Archive *fout, NamespaceInfo *nspinfo)
|
|||||||
appendPQExpBuffer(q, "CREATE SCHEMA %s AUTHORIZATION %s",
|
appendPQExpBuffer(q, "CREATE SCHEMA %s AUTHORIZATION %s",
|
||||||
qnspname, fmtId(nspinfo->usename));
|
qnspname, fmtId(nspinfo->usename));
|
||||||
|
|
||||||
/* Add tablespace qualifier, if not default */
|
/* Add tablespace qualifier, if not default for database */
|
||||||
if (strlen(nspinfo->nsptablespace) != 0)
|
if (strlen(nspinfo->nsptablespace) != 0)
|
||||||
appendPQExpBuffer(q, " TABLESPACE %s",
|
appendPQExpBuffer(q, " TABLESPACE %s",
|
||||||
fmtId(nspinfo->nsptablespace));
|
fmtId(nspinfo->nsptablespace));
|
||||||
@ -6652,13 +6659,16 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
|
|||||||
appendPQExpBuffer(q, ")");
|
appendPQExpBuffer(q, ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Output tablespace clause if necessary */
|
/* Output tablespace clause if different from parent schema's */
|
||||||
if (strlen(tbinfo->reltablespace) != 0 &&
|
if (strcmp(tbinfo->reltablespace,
|
||||||
strcmp(tbinfo->reltablespace,
|
|
||||||
tbinfo->dobj.namespace->nsptablespace) != 0)
|
tbinfo->dobj.namespace->nsptablespace) != 0)
|
||||||
{
|
{
|
||||||
appendPQExpBuffer(q, " TABLESPACE %s",
|
if (strlen(tbinfo->reltablespace) != 0)
|
||||||
fmtId(tbinfo->reltablespace));
|
appendPQExpBuffer(q, " TABLESPACE %s",
|
||||||
|
fmtId(tbinfo->reltablespace));
|
||||||
|
else if (strlen(dbDefaultTableSpace) != 0)
|
||||||
|
appendPQExpBuffer(q, " TABLESPACE %s",
|
||||||
|
fmtId(dbDefaultTableSpace));
|
||||||
}
|
}
|
||||||
|
|
||||||
appendPQExpBuffer(q, ";\n");
|
appendPQExpBuffer(q, ";\n");
|
||||||
@ -6947,13 +6957,16 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo)
|
|||||||
|
|
||||||
appendPQExpBuffer(q, ")");
|
appendPQExpBuffer(q, ")");
|
||||||
|
|
||||||
/* Output tablespace clause if necessary */
|
/* Output tablespace clause if different from parent table's */
|
||||||
if (strlen(indxinfo->tablespace) != 0 &&
|
if (strcmp(indxinfo->tablespace,
|
||||||
strcmp(indxinfo->tablespace,
|
|
||||||
indxinfo->indextable->reltablespace) != 0)
|
indxinfo->indextable->reltablespace) != 0)
|
||||||
{
|
{
|
||||||
appendPQExpBuffer(q, " USING INDEX TABLESPACE %s",
|
if (strlen(indxinfo->tablespace) != 0)
|
||||||
fmtId(indxinfo->tablespace));
|
appendPQExpBuffer(q, " USING INDEX TABLESPACE %s",
|
||||||
|
fmtId(indxinfo->tablespace));
|
||||||
|
else if (strlen(dbDefaultTableSpace) != 0)
|
||||||
|
appendPQExpBuffer(q, " USING INDEX TABLESPACE %s",
|
||||||
|
fmtId(dbDefaultTableSpace));
|
||||||
}
|
}
|
||||||
|
|
||||||
appendPQExpBuffer(q, ";\n");
|
appendPQExpBuffer(q, ";\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user