PostgreSQL's pg_basebackup TAP test creates a junction from the short
system temporary directory to the build-tree temporary directory on
Windows.  It then creates $superlongname through the build-tree side.

On my build, that target path was 253 characters.  Perl's mkdir failed
at Windows' default 248-character directory path limit, but the result
was unchecked.  The test then failed later with a misleading
CREATE TABLESPACE "directory does not exist" error.

The attached patch creates the directory through the short side of the
junction and checks the result of mkdir.

I tested current master 38afc3dcb25 with Meson 1.11.2 and MSVC 19.44 on
Windows 11 ARM64:

- Native ARM64: the unpatched isolated test failed; the patched test
  passed all 149 subtests.
- x64 cross-build with needs_exe_wrapper=false: the unpatched test
  failed; the patched test passed all 149 subtests.

The 2023 discussion below addressed a related pg_basebackup long-file
test.  I did not find an existing proposal for this unchecked
long-directory creation.

https://www.postgresql.org/message-id/666ac55b-3400-fb2c-2cea-0281bf36a53c%40dunslane.net

Best,
Harrison

Attachment: 0001-Fix-pg_basebackup-long-path-test-on-Windows.patch
Description: Binary data

Reply via email to