Re: pg_rewind fails on Windows where tablespaces are used

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Michael Paquier <michael@paquier.xyz>, Alexandra Wang <alexandra.wang.oss@gmail.com>, Chris Travers <chris.travers@stormatics.tech>, Farooq Rashed <farooq.rashed@desc.gov.ae>, pgsql-bugs@lists.postgresql.org
Date: 2025-01-14T21:12:37Z
Lists: pgsql-bugs

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix readlink() for non-PostgreSQL junction points on Windows.

  2. Fix stat() for recursive junction points on Windows.

  3. Fix pg_rewind with in-place tablespaces when source is remote

  4. Make unlink() work for junction points on Windows.

  5. Use in-place tablespaces in regression test.

On 2025-01-08 We 10:38 PM, Thomas Munro wrote:
> On Thu, Jan 9, 2025 at 3:45 AM Andrew Dunstan <andrew@dunslane.net> wrote:
>> Those patches didn't actually include any tests. I guess the best test
>> would be to create a chain of several junction points and then run
>> initdb on the leaf of the chain?
> Yeah I think the three interesting cases were initdb when run under
> junctions like these:
>
> 1.  Volume GUID format: mklink /J foo \\?\Volume{12341234-1234...},
> expected to break without patch
> 2.  Chain: mklink /J C:\\aaa1 C:\\aaa2, mkdir /J C:\\aaa2 c:\\aaa3,
> expected to break without patch
> 3.  Chain of length > 8, expected to fail with ELOOP once the patch is applied.
>
> (Syntax may be off, I just googled it but don't have Windows to try).
>
> The way to get decent tests for this stuff and all the rest of the
> wrappers would probably be to develop this test suite further:
>
> https://www.postgresql.org/message-id/flat/CA%2BhUKG%2BajSQ_8eu2AogTncOnZ5me2D-Cn66iN_-wZnRjLN%2Bicg%40mail.gmail.com



I can confirm that these two patches apply cleanly to releases 13 .. 15, 
that builds are also clean, and that tests 1..3 above pass/fail as 
expected. Tested on a WS2019 instance.


cheers


andrew

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