pg_tablespace_location() failure with allow_in_place_tablespaces - Mailing list pgsql-hackers

From Michael Paquier
Subject pg_tablespace_location() failure with allow_in_place_tablespaces
Date
Msg-id YiG1RleON1WBcLnX@paquier.xyz
Whole thread Raw
Responses Re: pg_tablespace_location() failure with allow_in_place_tablespaces  (Kyotaro Horiguchi <horikyota.ntt@gmail.com>)
Re: pg_tablespace_location() failure with allow_in_place_tablespaces  (Michael Paquier <michael@paquier.xyz>)
List pgsql-hackers
Hi all,

While playing with tablespaces and recovery in a TAP test, I have
noticed that retrieving the location of a tablespace created with
allow_in_place_tablespaces enabled fails in pg_tablespace_location(),
because readlink() sees a directory in this case.

The use may be limited to any automated testing and
allow_in_place_tablespaces is a developer GUC, still it seems to me
that there is an argument to allow the case rather than tweak any
tests to hardcode a path with the tablespace OID.  And any other code
paths are able to handle such tablespaces, be they in recovery or in
tablespace create/drop.

A junction point is a directory on WIN32 as far as I recall, but
pgreadlink() is here to ensure that we get the correct path on
a source found as pgwin32_is_junction(), so we can rely on that.  This
stuff has led me to the attached.

Thoughts?
--
Michael

Attachment

pgsql-hackers by date:

Previous
From: Kyotaro Horiguchi
Date:
Subject: Re: standby recovery fails (tablespace related) (tentative patch and discussion)
Next
From: Masahiko Sawada
Date:
Subject: Re: Optionally automatically disable logical replication subscriptions on error