aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2018-08-22 14:21:49 +0900
committerMichael Paquier <michael@paquier.xyz>2018-08-22 14:21:49 +0900
commitb965f2617184032687037547204e1db1c1e1a56c (patch)
tree0f405d5b9c063209cac803c7b7731fe6d9e5f504 /src
parent98abc738027e866f89b0ecf6f6a30b16e000e804 (diff)
downloadpostgresql-b965f2617184032687037547204e1db1c1e1a56c.tar.gz
postgresql-b965f2617184032687037547204e1db1c1e1a56c.zip
Do not dump identity sequences with excluded parent table
This commit prevents a crash of pg_dump caused by the exclusion of a table which has identity columns, as the table would be correctly excluded but not its identity sequence. In order to fix that, identity sequences are excluded if the parent table is defined as such. Knowing about such sequences has no meaning without their parent table anyway. Reported-by: Andy Abelisto Author: David Rowley Reviewed-by: Peter Eisentraut, Michael Paquier Discussion: https://postgr.es/m/153479393218.1316.8472285660264976457@wrigleys.postgresql.org Backpatch-through: 10
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_dump/pg_dump.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index d5f1269f93d..89056207b97 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -6636,8 +6636,20 @@ getOwnedSeqs(Archive *fout, TableInfo tblinfo[], int numTables)
seqinfo->owning_tab, seqinfo->dobj.catId.oid);
/*
- * We need to dump the components that are being dumped for the table
- * and any components which the sequence is explicitly marked with.
+ * Only dump identity sequences if we're going to dump the table that
+ * it belongs to.
+ */
+ if (owning_tab->dobj.dump == DUMP_COMPONENT_NONE &&
+ seqinfo->is_identity_sequence)
+ {
+ seqinfo->dobj.dump = DUMP_COMPONENT_NONE;
+ continue;
+ }
+
+ /*
+ * Otherwise we need to dump the components that are being dumped for
+ * the table and any components which the sequence is explicitly
+ * marked with.
*
* We can't simply use the set of components which are being dumped
* for the table as the table might be in an extension (and only the