At Tue, 23 Apr 2019 17:44:18 +0900 (Tokyo Standard Time), Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> wrote in
<20190423.174418.262292011.horiguchi.kyotaro@lab.ntt.co.jp>
> At Tue, 23 Apr 2019 16:08:18 +0900, Michael Paquier <michael@paquier.xyz> wrote in
<20190423070818.GM2712@paquier.xyz>
> > On Mon, Apr 22, 2019 at 11:00:03PM -0700, Andres Freund wrote:
> > > FWIW, I think the right fix for this is to simply drop the requirement
> > > that tablespace paths need to be absolute. It's not buying us anything,
> > > it's just making things more complicated. We should just do a simple
> > > check against the tablespace being inside PGDATA, and leave it at
> > > that. Yes, that can be tricked, but so can the current system.
> >
> > convert_and_check_filename() checks after that already, mostly. For
> > TAP tests I am not sure that this would help much though as all the
> > nodes of a given test use the same root path for their data folders,
> > so you cannot just use "../hoge/" as location. We already generate a
> > warning when a tablespace is in a data folder, as this causes issues
> > with recursion lookups of base backups. What do you mean in this
> > case? Forbidding the behavior?
>
> Isn't it good enough just warning when we see pg_tblspc twice
> while scanning? The check is not perfect for an "abosolute path"
> that continas '/./' above pgdata directory.
I don't get basebackup recurse. How can I do that? basebackup
rejects non-empty direcoty as a tablespace directory. I'm not
sure about pg_upgrade but it's not a problem as far as we keep
waning on that kind of tablespace directory.
So I propose this:
- Allow relative path as a tablespace direcotry in exchange for
issueing WARNING.
=# CREATE TABLESPACE ts1 LOCATION '../../hoge';
"WARNING: tablespace location should be in absolute path"
- For abosolute paths, we keep warning as before. Of course we
don't bother '.' and '..'.
=# CREATE TABLESPACE ts1 LOCATION '/home/.../data';
"WARNING: tablespace location should not be in the data directory"
> For TAP tests, we can point generated temporary directory by
> "../../<tmpdirsname>".
regards.
--
Kyotaro Horiguchi
NTT Open Source Software Center