drop tablespace failed when location contains .. on win32
wangsh.fnst@fujitsu.com <wangsh.fnst@fujitsu.com>
From: "wangsh.fnst@fujitsu.com" <wangsh.fnst@fujitsu.com>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-09-08T10:16:46Z
Lists: pgsql-hackers
Attachments
- problem.diff (application/octet-stream) patch
Hi, I find a problem related to tablespace on win32(server2019). > postgres=# create tablespace tbs location 'C:\Users\postgres\postgres_install\aa\..\aa'; > CREATE TABLESPACE > postgres=# create table tbl(col int) tablespace tbs; > ERROR: could not stat directory "pg_tblspc/16384/PG_15_202109061/12754": Invalid argument > postgres=# drop tablespace tbs; > WARNING: could not open directory "pg_tblspc/16384/PG_15_202109061": No such file or directory > ERROR: could not stat file "pg_tblspc/16384": Invalid argument I find that canonicalize_path() only remove the trailing '..', in this case, '..' is not removed , and pgsymlink succeed. But, in fact, if I double click the dir (%PGDATA%\pg_tblspac\16387), the error message is shown: > The filename, directory name, or volume label syntax is incorrect. Since the pgsymlink() seems right and I'm not sure I can change the action of canonicalize_path, so I want to add a error check(patch is attached). Any comment ? Regards, Shenhao Wang
Commits
-
Simplify coding around path_contains_parent_reference().
- b426bd48ee3f 15.0 landed
-
Make canonicalize_path() more canonical.
- c10f830c511f 15.0 landed