Re: pg_basebackup check vs Windows file path limits

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Daniel Gustafsson <daniel@yesql.se>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2023-11-15T17:15:32Z
Lists: pgsql-hackers
On 2023-11-15 We 06:34, Alvaro Herrera wrote:
> On 2023-Nov-13, Andrew Dunstan wrote:
>
>>> size?
>>>
>>> https://learn.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol
>> Hmm, here's what that page says - I can't see it saying what you're
>> suggesting here - am I missing something?:
> I don't think so.  I think I just confused myself.  Reading the docs it
> appears that other Windows APIs work as I described, but not this one.
>
> Anyway, after looking at it a bit more, I realized that this code uses
> MAX_PATH as basis for its buffer's length limit -- and apparently on
> Windows that's only 260, much shorter than MAXPGPATH (1024) which our
> own code uses to limit the buffers given to readlink().  So maybe fixing
> this is just a matter of doing s/MAX_PATH/MAXPGPATH/ in dirmod.c.



I'll test it.


cheers


andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com




Commits

  1. Skip pg_baseback long filename test if path too long on Windows