Teach pg_upgrade to handle in-place tablespaces.
Nathan Bossart <nathan@postgresql.org>
Teach pg_upgrade to handle in-place tablespaces. Presently, pg_upgrade assumes that all non-default tablespaces don't move to different directories during upgrade. Unfortunately, this isn't true for in-place tablespaces, which move to the new cluster's pg_tblspc directory. This commit teaches pg_upgrade to handle in-place tablespaces by retrieving the tablespace directories for both the old and new clusters. In turn, we can relax the prohibition on non-default tablespaces for same-version upgrades, i.e., if all non-default tablespaces are in-place, pg_upgrade may proceed. This change is primarily intended to enable additional pg_upgrade testing with non-default tablespaces, as is done in 006_transfer_modes.pl. Reviewed-by: Corey Huinker <corey.huinker@gmail.com> Reviewed-by: Michael Paquier <michael@paquier.xyz> Discussion: https://postgr.es/m/aA_uBLYMUs5D66Nb%40nathan
Files
| Path | Change | +/− |
|---|---|---|
| src/bin/pg_upgrade/check.c | modified | +10 −10 |
| src/bin/pg_upgrade/info.c | modified | +34 −4 |
| src/bin/pg_upgrade/parallel.c | modified | +7 −4 |
| src/bin/pg_upgrade/pg_upgrade.h | modified | +4 −4 |
| src/bin/pg_upgrade/relfilenumber.c | modified | +26 −31 |
| src/bin/pg_upgrade/t/006_transfer_modes.pl | modified | +31 −4 |
| src/bin/pg_upgrade/tablespace.c | modified | +52 −13 |
Discussion
- teach pg_upgrade to handle in-place tablespaces 10 messages · 2025-04-28 → 2025-07-30