Fix pg_dumpall with in-place tablespaces
authorMichael Paquier <michael@paquier.xyz>
Tue, 8 Aug 2023 23:56:05 +0000 (08:56 +0900)
committerMichael Paquier <michael@paquier.xyz>
Tue, 8 Aug 2023 23:56:05 +0000 (08:56 +0900)
commita72d613b4c91462d9405c4e1b05c42d33013c333
tree2566a67fdc24ebbcfdfe08efd90e4e841712eaca
parentf05b1fa1ff5b2133d636a427d00fe85eedad49b3
Fix pg_dumpall with in-place tablespaces

In-place tablespaces would be dumped with the path produced by
pg_tablespace_location(), which is in this case a relative path built as
pg_tblspc/OID, but this would fail to restore as such tablespaces need
to use an empty string as location.  In order to detect if an in-place
tablespace is used, this commit checks if the path returned is relative
and adapts the dump contents in consequence.

Like the other changes related to in-place tablespaces, no backpatch is
done as these are only intended for development purposes.  Rui Zhao has
fixed the code, while the test is from me.

Author: Rui Zhao, Michael Paquier
Discussion: https://postgr.es/m/80c80b4a-b87b-456f-bd46-1ae326601d79.xiyuan.zr@alibaba-inc.com
src/bin/pg_dump/pg_dumpall.c
src/bin/pg_dump/t/002_pg_dump.pl