aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2015-02-11 22:22:26 -0500
committerBruce Momjian <bruce@momjian.us>2015-02-11 22:22:26 -0500
commitdc01efa5ccdd9804b0c97d4d9b651ba9360ebb11 (patch)
tree708088f44cab4c48a3e966ada27b8d3c87830a18
parent056764b10248bff702d9d7b8b97690668eaf1c93 (diff)
downloadpostgresql-dc01efa5ccdd9804b0c97d4d9b651ba9360ebb11.tar.gz
postgresql-dc01efa5ccdd9804b0c97d4d9b651ba9360ebb11.zip
pg_upgrade: improve checksum mismatch error message
Patch by Greg Sabino Mullane, slight adjustments by me
-rw-r--r--contrib/pg_upgrade/controldata.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/contrib/pg_upgrade/controldata.c b/contrib/pg_upgrade/controldata.c
index a02a8ecaa23..0e70b6f80b4 100644
--- a/contrib/pg_upgrade/controldata.c
+++ b/contrib/pg_upgrade/controldata.c
@@ -572,10 +572,14 @@ check_control_data(ControlData *oldctrl,
* We might eventually allow upgrades from checksum to no-checksum
* clusters.
*/
- if (oldctrl->data_checksum_version != newctrl->data_checksum_version)
- {
- pg_fatal("old and new pg_controldata checksum versions are invalid or do not match\n");
- }
+ if (oldctrl->data_checksum_version == 0 &&
+ newctrl->data_checksum_version != 0)
+ pg_fatal("old cluster does not use data checksums but the new one does\n");
+ else if (oldctrl->data_checksum_version != 0 &&
+ newctrl->data_checksum_version == 0)
+ pg_fatal("old cluster uses data checksums but the new one does not\n");
+ else if (oldctrl->data_checksum_version != newctrl->data_checksum_version)
+ pg_fatal("old and new cluster pg_controldata checksum versions do not match\n");
}