On 2026-06-15 Mo 9:43 AM, Andrew Dunstan wrote:

On 2026-06-12 Fr 6:39 PM, Andrew Dunstan wrote:

On 2026-06-10 We 4:23 PM, Andrew Dunstan wrote:

On 2026-06-03 We 5:23 PM, Andrew Dunstan wrote:

On 2026-06-02 Tu 3:03 PM, Andrew Dunstan wrote:

On 2026-02-18 We 2:41 PM, Andrew Dunstan wrote:

On 2026-02-17 Tu 4:56 PM, Andres Freund wrote:
Hi,

On 2026-02-17 16:31:02 -0500, Andrew Dunstan wrote:
On 2026-02-16 Mo 7:17 PM, Andres Freund wrote:
I briefly tried this out. The overall resource usage of the test is noticeably reduced - and that's on linux with fast fork, so it should be considerably better on windows.  However, the tests take a lot longer than before, I think mostly due to polling for results rather than waiting for them to be ready
using PQsocketPoll() or such.

E.g. bloom/001_wal takes about 15s on HEAD for me, but 138s with the patch. I
think that's just due to the various usleep(100_000);


FWIW, oauth_validator/001_server fails with the patch at the moment.

Try this version. On my machine it's now a few percent faster. I fixed the polling. I also added pipeline support for large sets of commands, to
minimize roundtrips.
Nice!  Will try it out.


Have you tried it on windows already? That's where we pay by far the biggest
price due to all the unnecessary process creations...

It looks like strawberry perl has FFI::Platypus, but not FFI::C.  There is perl/vendor/lib/FFI/Platypus/Lang/C.pm, but that just seems like it's documentation.  There is however FFI::Platypus::Record, which maybe could
suffice?

Do we actually need FFI::C, or can we work around not having it? Looks like
it's just used for notify related stuff.

It looks like mingw doesn't have packages for FFI::Platypus, but it'll
probably be a lot easier to build that than when using msvc.



I replaced the use of FFI::C with FFI::Platypus::Record. That comes for free with FFI::Platypus, so there would be no extra dependency. It means a little extra housekeeping so we don't lose track of the pointer for later use with PQfreemem, but it's not too bad.

I have tried it out with Windows, seemed to work OK although the xid_wraparound tests 2 and 3 timed out.

Latest is attached.




Here is v12. I removed the XS variant in this version, which makes things simpler. We can restore it if necessary.

Patch 1 adds the new framework

Patch 2 adapts Cluster.pm to it, as well as handling some instability at global destruction time that was exacerbated by using FFI::Platypus.

Patch 3 makes improvements in the individual TAP tests using the framework, including removing every one of the calls to background_psql().


I'm going to add this to the CF and will start testing (again) on Windows.




v13 attached now passes all tests on my Windows machine.




rebased, including porting a new use of background_psql.




v15 including a check for FFI::Platypus at setup time, and CI modifications to allow tests to pass.





v16 follows several rounds of review, and tightens up a lot of things, so now errors don't silently disappear, or failing tests hang where previously they would time out. There has also been some code cleanup, removal of magic numbers (you can now check for CONNECTION_OK for example), removal of some dead code.



In view of discussions on https://www.postgresql.org/message-id/cdaaf722-4529-435b-9340-cedf1a3a277f%40dunslane.net I have withdrawn the CF item.


cheers


andrew

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



Reply via email to