From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | Daniel Gustafsson <daniel(at)yesql(dot)se>, Michael Paquier <michael(dot)paquier(at)gmail(dot)com> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Andrew Dunstan <andrew(at)dunslane(dot)net> |
Subject: | Re: ssl tests fail on windows / slurp_file() offset doesn't work on win |
Date: | 2021-10-03 17:30:38 |
Message-ID: | 20211003173038.64mmhgxctfqn7wl6@alap3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On 2021-10-03 10:18:31 -0700, Andres Freund wrote:
> As you can see in the test output, every mismatch prints the whole file,
> despite only intending to show the tail. Which appears to be because the
> windows portion of 3c5b0685b921 doesn't actually work. The reason for that in
> turn is that afaict the setFilePointer doesn't change the file position in a
> way that affects perl.
>
> Consequently, if I force the !win32 path, the tests pass.
>
> At first I assumed the cause of this is that while the setFilePointer() modifies the
> state of the underlying handle, it doesn't actually let perl know about
> that. Due to buffering etc perl likely has its own bookeeping about the
> position in the file. There's some pretty clear hints in
> https://perldoc.perl.org/functions/seek
>
> But the problem turns out to be that it's bogus to pass $fh to
> setFilePointer(). That's a perl handle, not an win32 handle. Fixing that seems
> to make the tests pass.
It does (I only let it run to the ssl test, then pushed a newer revision):
https://cirrus-ci.com/task/5345293928497152?logs=ssl#L5
> Why did 3c5b0685b921 choose to use setFilePointer() in the first place? At
> this point it's a perl filehandle, so we should just use perl seek?
>
>
> Leaving the concrete breakage aside, I'm somewhat unhappy that there's not a
> single comment explaining why TestLib.pm is trying to use native windows
> APIs.
>
> Isn't the code as-is also "leaking" an open IO::Handle? There's a
> CloseHandle($fHandle), but nothing is done to $fh. But perhaps there's some
> perl magic cleaning things up? Even if so, loks like just closing $fh will
> close the handle as well...
I think something roughly like the attached might be a good idea. Runs locally
on linux, and hopefully still on windows
https://cirrus-ci.com/build/4857291573821440
Greetings,
Andres Freund
Attachment | Content-Type | Size |
---|---|---|
0001-WIP-Fix-TestLib-slurp_file-with-offset-on-windows.patch | text/x-diff | 1.8 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Stefan Keller | 2021-10-03 17:37:40 | Re: [HACKERS] GSoC 2017: Foreign Key Arrays |
Previous Message | Tom Lane | 2021-10-03 17:22:48 | Re: BUG #16040: PL/PGSQL RETURN QUERY statement never uses a parallel plan |