aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2021-05-04 14:03:54 +0200
committerPeter Eisentraut <peter@eisentraut.org>2021-05-04 14:18:33 +0200
commitbdaa0d2d726911e31b19ed3a02ecb33dfc6d3673 (patch)
tree10491070a3fa16e83f20e0756f7e98d3c3843c54
parent13ff139a238480cd3221c51c269d5ccdd429594f (diff)
downloadpostgresql-bdaa0d2d726911e31b19ed3a02ecb33dfc6d3673.tar.gz
postgresql-bdaa0d2d726911e31b19ed3a02ecb33dfc6d3673.zip
pg_dump: Fix dump of generated columns in partitions
The previous fix for dumping of inherited generated columns (0bf83648a52df96f7c8677edbbdf141bfa0cf32b) must not be applied to partitions, since, unlike normal inherited tables, they are always dumped separately and reattached. Reported-by: Santosh Udupi <email@hitha.net> Discussion: https://www.postgresql.org/message-id/flat/CACLRvHZ4a-%2BSM_159%2BtcrHdEqxFrG%3DW4gwTRnwf7Oj0UNj5R2A%40mail.gmail.com
-rw-r--r--src/bin/pg_dump/common.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/bin/pg_dump/common.c b/src/bin/pg_dump/common.c
index fd34138b27c..d1778fc84f1 100644
--- a/src/bin/pg_dump/common.c
+++ b/src/bin/pg_dump/common.c
@@ -446,9 +446,11 @@ flagInhIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
* - Detect child columns that have a generation expression when their parents
* also have one. Generation expressions are always inherited, so there is
* no need to set them again in child tables, and there is no syntax for it
- * either. (Exception: In binary upgrade mode we dump them because
- * inherited tables are recreated standalone first and then reattached to
- * the parent.)
+ * either. Exceptions: If it's a partition or we are in binary upgrade
+ * mode, we dump them because in those cases inherited tables are recreated
+ * standalone first and then reattached to the parent. (See also the logic
+ * in dumpTableSchema().) In that situation, the generation expressions
+ * must match the parent, enforced by ALTER TABLE.
*
* modifies tblinfo
*/
@@ -551,7 +553,7 @@ flagInhAttrs(DumpOptions *dopt, TableInfo *tblinfo, int numTables)
}
/* Remove generation expression from child */
- if (foundGenerated && !dopt->binary_upgrade)
+ if (foundGenerated && !tbinfo->ispartition && !dopt->binary_upgrade)
tbinfo->attrdefs[j] = NULL;
}
}