diff --git a/contrib/pg_upgrade/info.c b/contrib/pg_upgrade/info.c index 301f6bb9b8f2fe0538ef9eb31ed195324e2eb9fb..4360d39d3347d8b2ca99781672e20e017b6c8483 100644 --- a/contrib/pg_upgrade/info.c +++ b/contrib/pg_upgrade/info.c @@ -132,7 +132,13 @@ create_rel_filename_map(const char *old_data, const char *new_data, new_cluster.tablespace_suffix, new_db->db_oid); } + /* + * old_relfilenode might differ from pg_class.oid (and hence + * new_relfilenode) because of CLUSTER, REINDEX, or VACUUM FULL. + */ map->old_relfilenode = old_rel->relfilenode; + + /* new_relfilenode will match old and new pg_class.oid */ map->new_relfilenode = new_rel->relfilenode; /* used only for logging and error reporing, old/new are identical */ diff --git a/contrib/pg_upgrade/pg_upgrade.c b/contrib/pg_upgrade/pg_upgrade.c index 9a5ef0fd205f01f7fb684d9f9ec8b36fc64df6e1..42da3ea0df70da29ccbbd0832875ecb80eab329b 100644 --- a/contrib/pg_upgrade/pg_upgrade.c +++ b/contrib/pg_upgrade/pg_upgrade.c @@ -19,7 +19,9 @@ * in a cluster, but they can diverge due to CLUSTER, REINDEX, or VACUUM * FULL. The new cluster will have matching pg_class.oid and * pg_class.relfilenode values and be based on the old oid value. This can - * cause the old and new pg_class.relfilenode values to differ. + * cause the old and new pg_class.relfilenode values to differ. In summary, + * old and new pg_class.oid and new pg_class.relfilenode will have the + * same value, and old pg_class.relfilenode might differ. * * We control all assignments of pg_type.oid because these oids are stored * in user composite type values.