pgsql: Improve pg_upgrade's report about failure to match up old and ne

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Improve pg_upgrade's report about failure to match up old and ne
Date: 2016-05-06 18:45:32
Message-ID: E1aykkm-00015g-CL@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Improve pg_upgrade's report about failure to match up old and new tables.

Ordinarily, pg_upgrade shouldn't have any difficulty in matching up all
the relations it sees in the old and new databases. If it does, however,
it just goes belly-up with a pretty unhelpful error message. That seemed
fine as long as we expected the case never to occur in the wild, but
Alvaro reported that it had been seen in a database whose pg_largeobject
table had somehow acquired a TOAST table. That doesn't quite seem like
a case that pg_upgrade actually needs to handle, but it would be good if
the report were more diagnosable. Hence, extend the logic to print out
as much information as we can about the mismatch(es) before we quit.

In passing, improve the readability of get_rel_infos()'s data collection
query, which had suffered seriously from lets-not-bother-to-update-comments
syndrome, and generally was unnecessarily disrespectful to readers.

It could be argued that this is a bug fix, but given that we have so few
reports, I don't feel a need to back-patch; at least not before this has
baked awhile in HEAD.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/73b9952e8278b9c9a6f5f8e2df196fea5abb61f0

Modified Files
--------------
src/bin/pg_upgrade/info.c | 372 +++++++++++++++++++++++++---------------
src/bin/pg_upgrade/pg_upgrade.h | 13 +-
2 files changed, 244 insertions(+), 141 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Stephen Frost 2016-05-06 18:52:29 Re: pgsql: Add TAP tests for pg_dump
Previous Message Robert Haas 2016-05-06 18:40:43 pgsql: Use mul_size when multiplying by the number of parallel workers.