Re: pg_tablespace_location() failure with allow_in_place_tablespaces
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: 2022-07-22T05:50:58Z
Lists: pgsql-hackers
On Thu, Mar 31, 2022 at 5:01 PM Michael Paquier <michael@paquier.xyz> wrote: > On Wed, Mar 30, 2022 at 08:23:25PM +1300, Thomas Munro wrote: > > That leads to the attached patches, the first of which I'd want to back-patch. > > Makes sense. > ... > This should also work for plain files, so that looks fine to me. Thanks. Pushed. Also CC'ing Alvaro who expressed an interest in this problem[1]. > > Unfortunately while testing this I realised there is something else > > wrong here: if you take a basebackup using tar format, in-place > > tablespaces are skipped (they should get their own OID.tar file, but > > they don't, also no error). While it wasn't one of my original goals > > for in-place tablespaces to work in every way (and I'm certain some > > external tools would be confused by them), it seems we're pretty close > > so we should probably figure out that piece of the puzzle. It may be > > obvious why but I didn't have time to dig into that today... perhaps > > instead of just skipping the readlink() we should be writing something > > different into the mapfile and then restoring as appropriate... > > Yeah, I saw that in-place tablespaces were part of the main tarball in > base backups as we rely on the existence of a link to decide if the > contents of a path should be separated in a different tarball or not. > This does not strike me as a huge problem in itself, TBH, as the > improvement would be limited to make sure that the base backups could > be correctly restored with multiple tablespaces. And you can get > pretty much the same amount of coverage to make sure that the backup > contents are correct without fully restoring them. Are they in the main tar file, or are they just missing? [1] https://postgr.es/m/20220721111751.x7hod2xgrd76xr5c%40alvherre.pgsql
Commits
-
Remove unnecessary Windows-specific basebackup code.
- 202b56ba91cb 15.0 landed
- 5344723755bd 16.0 landed
-
Fix get_dirent_type() for Windows junction points.
- fee0165fc1cf 14.5 landed
- 6d306ab73168 15.0 landed
- 9d3444dcce4d 16.0 landed
-
doc: Remove mention to in-place tablespaces for pg_tablespace_location()
- 7a7cd84893e0 15.0 landed
-
Fix pg_tablespace_location() with in-place tablespaces
- f6f0db4d6240 15.0 landed
-
Fix pg_basebackup with in-place tablespaces.
- c6f2f01611d4 15.0 landed