diff options
Diffstat (limited to 'src/bin/pg_dump/pg_dump.c')
-rw-r--r-- | src/bin/pg_dump/pg_dump.c | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 14389bd0d37..f9fbaeeb5e8 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -4307,38 +4307,43 @@ getTables(Archive *fout, int *numTables) PQclear(res); + destroyPQExpBuffer(query); + + return tblinfo; +} + +/* + * getOwnedSeqs + * identify owned sequences and mark them as dumpable if owning table is + * + * We used to do this in getTables(), but it's better to do it after the + * index used by findTableByOid() has been set up. + */ +void +getOwnedSeqs(Archive *fout, TableInfo tblinfo[], int numTables) +{ + int i; + /* * Force sequences that are "owned" by table columns to be dumped whenever * their owning table is being dumped. */ - for (i = 0; i < ntups; i++) + for (i = 0; i < numTables; i++) { TableInfo *seqinfo = &tblinfo[i]; - int j; + TableInfo *owning_tab; if (!OidIsValid(seqinfo->owning_tab)) continue; /* not an owned sequence */ if (seqinfo->dobj.dump) continue; /* no need to search */ - - /* can't use findTableByOid yet, unfortunately */ - for (j = 0; j < ntups; j++) + owning_tab = findTableByOid(seqinfo->owning_tab); + if (owning_tab && owning_tab->dobj.dump) { - if (tblinfo[j].dobj.catId.oid == seqinfo->owning_tab) - { - if (tblinfo[j].dobj.dump) - { - seqinfo->interesting = true; - seqinfo->dobj.dump = true; - } - break; - } + seqinfo->interesting = true; + seqinfo->dobj.dump = true; } } - - destroyPQExpBuffer(query); - - return tblinfo; } /* |