mirror of
https://github.com/postgres/postgres.git
synced 2025-10-16 17:07:43 +03:00
pg_dump: store unused attribs as NULL instead of '\0'
Commitf831d4accd
changed pg_dump to emit (and pg_restore to understand) NULLs for unused members in ArchiveEntry structs, as a side effect of some code beautification. That broke pg_restore of dumps generated with older pg_dump, however, so it was reverted in19455c9f56
. Since the archiver version number has been bumped in3b925e905d
, we can put it back. Author: Dmitry Dolgov Discussion: https://postgr.es/m/CA+q6zcXx0XHqLsFJLaUU2j5BDiBAHig=YRoBC_YVq7VJGvzBEA@mail.gmail.com
This commit is contained in:
@@ -1087,10 +1087,10 @@ ArchiveEntry(Archive *AHX, CatalogId catalogId, DumpId dumpId,
|
||||
newToc->namespace = opts->namespace ? pg_strdup(opts->namespace) : NULL;
|
||||
newToc->tablespace = opts->tablespace ? pg_strdup(opts->tablespace) : NULL;
|
||||
newToc->tableam = opts->tableam ? pg_strdup(opts->tableam) : NULL;
|
||||
newToc->owner = pg_strdup(opts->owner);
|
||||
newToc->owner = opts->owner ? pg_strdup(opts->owner) : NULL;
|
||||
newToc->desc = pg_strdup(opts->description);
|
||||
newToc->defn = pg_strdup(opts->createStmt);
|
||||
newToc->dropStmt = pg_strdup(opts->dropStmt);
|
||||
newToc->defn = opts->createStmt ? pg_strdup(opts->createStmt) : NULL;
|
||||
newToc->dropStmt = opts->dropStmt ? pg_strdup(opts->dropStmt) : NULL;
|
||||
newToc->copyStmt = opts->copyStmt ? pg_strdup(opts->copyStmt) : NULL;
|
||||
|
||||
if (opts->nDeps > 0)
|
||||
@@ -3621,7 +3621,7 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strlen(te->defn) > 0)
|
||||
if (te->defn && strlen(te->defn) > 0)
|
||||
ahprintf(AH, "%s\n\n", te->defn);
|
||||
}
|
||||
|
||||
@@ -3632,7 +3632,8 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData)
|
||||
* with DROP commands must appear in one list or the other.
|
||||
*/
|
||||
if (!ropt->noOwner && !ropt->use_setsessauth &&
|
||||
strlen(te->owner) > 0 && strlen(te->dropStmt) > 0)
|
||||
te->owner && strlen(te->owner) > 0 &&
|
||||
te->dropStmt && strlen(te->dropStmt) > 0)
|
||||
{
|
||||
if (strcmp(te->desc, "AGGREGATE") == 0 ||
|
||||
strcmp(te->desc, "BLOB") == 0 ||
|
||||
|
Reference in New Issue
Block a user