Re: BUG #16526: pg_test_fsync in v12 doesn't run in Windows

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Bruce Momjian <bruce@momjian.us>
Cc: jeff.janes@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2020-07-14T03:54:58Z
Lists: pgsql-bugs
On Mon, Jul 13, 2020 at 08:06:25PM -0400, Bruce Momjian wrote:
> Well, pg_test_fsync is testing binary writes, so using TEXT for the
> files might add unwanted overhead, so I think binary is the best
> approach.

Thanks.  Please note that we have switched frontend tools to use our
concurrent-safe flavor of open() and fopen() as of 0ba06e0 (12 and
newer versions), but 40cfe86 has shown that we have been using the
text mode in pg_test_fsync since forever as Windows' open() uses the
text mode by default if we don't specify _fmode with _setmode():
https://docs.microsoft.com/en-us/cpp/c-runtime-library/fmode?view=vs-2019

For this reason, it seems more sensible to me to not backpatch this
change only down to 12, but actually all the way down to 9.5.
--
Michael

Commits

  1. Switch pg_test_fsync to use binary mode on Windows

  2. Allow concurrent-safe open() and fopen() in frontend code for Windows