drop tablespace failed when location contains .. on win32

Поиск
Список
Период
Сортировка
От wangsh.fnst@fujitsu.com
Тема drop tablespace failed when location contains .. on win32
Дата
Msg-id OSBPR01MB4214FA221FFE046F11F2AD74F2D49@OSBPR01MB4214.jpnprd01.prod.outlook.com
обсуждение исходный текст
Ответы Re: drop tablespace failed when location contains .. on win32  (Andrew Dunstan <andrew@dunslane.net>)
Список pgsql-hackers
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



Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Drouvot, Bertrand"
Дата:
Сообщение: Re: Minimal logical decoding on standbys
Следующее
От: Aleksander Alekseev
Дата:
Сообщение: Re: ResourceOwner refactoring