Re: Windows pg_basebackup unable to create >2GB pg_wal.tar tarballs ("could not close file: Invalid argument" when creating pg_wal.tar of size ~ 2^31 bytes) - Mailing list pgsql-hackers
From
Andrew Dunstan
Subject
Re: Windows pg_basebackup unable to create >2GB pg_wal.tar tarballs ("could not close file: Invalid argument" when creating pg_wal.tar of size ~ 2^31 bytes)
1. _chsize_s does in fact seem to work in an msvcrt.dll build. Thanks to Andres for testing that for me on Windows with a standalone 2 line program on ucrt and msvcrt runtimes.
2. MinGW always has _chsize_s, but it does more or less what I had been proposing already if it can't find the function by the Windows thing like dlsym, so there's no point in writing another thing like that. The test was with a 3G file though so it was the real function.
3. After a long time trying various ways to make it tidy and getting incomprehensible results I eventually realised that precompiled headers were causing strange results on MinGW/Meson builds (on CI), due to fighting over macros with this guy:
I found it easiest to completely stop it from getting in our way completely, with the attached. Thoughts, anyone?
Davinder, Jakub, are you in a position repro the issue and make versions of the patch for the 13, 15 and master branches on top of that?
Yes, Thomas, the issue is reproducible.
After applying your patch and replacing off_t with pgoff_t, the problem has been resolved. I have attached the patches for the 13, 15, and master. These patches include only the changes related to pgoff_t, intended for use with the v3-0001 patch--