Re: pgsql: Allow db.schema.table patterns, but complain about random garbag - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: pgsql: Allow db.schema.table patterns, but complain about random garbag
Date
Msg-id 22c77d3c-3f90-2451-1f95-ed0d3e196d81@dunslane.net
Whole thread Raw
In response to Re: pgsql: Allow db.schema.table patterns, but complain about random garbag  (Noah Misch <noah@leadboat.com>)
Responses Re: pgsql: Allow db.schema.table patterns, but complain about random garbag  (Noah Misch <noah@leadboat.com>)
List pgsql-hackers
On 2022-04-22 Fr 22:59, Noah Misch wrote:
> On Sat, Apr 23, 2022 at 09:12:20AM +1200, Thomas Munro wrote:
>> On Sat, Apr 23, 2022 at 8:06 AM Robert Haas <robertmhaas@gmail.com> wrote:
>>> I have to say the fact that IPC::Run does shell-glob expansion of its
>>> arguments on some machines and not others seems ludicrous to me. This
>>> patch may be overtested, but such a radical behavior difference is
>>> completely nuts. How is anyone supposed to write reliable tests for
>>> any feature in the face of such wildly inconsistent behavior?


(I missed seeing the part where I was asked for help earlier on this thread)



> The MinGW gcc crt*.o files do shell-glob expansion on the arguments before
> entering main().  See https://google.com/search?q=mingw+command+line+glob for
> various discussion of that behavior.  I suspect you experienced that, not any
> IPC::Run behavior.  (I haven't tested, though.)  Commit 11e9caf likely had the
> same cause, though the commit message attributed it to the msys shell rather
> than to crt*.o.
>
> Let's disable that MinGW compiler behavior.
> https://willus.com/mingw/_globbing.shtml lists two ways of achieving that.



Yeah. I can definitely confirm that this is the proximate cause of the
issue, and not either IPC::Run or the shell, which is why all my
experiments on this failed. With this patch


diff --git a/src/include/port/win32.h b/src/include/port/win32.h
index c6213c77c3..456c3f31f1 100644
--- a/src/include/port/win32.h
+++ b/src/include/port/win32.h
@@ -77,3 +77,7 @@ struct sockaddr_un
        char            sun_path[108];
 };
 #define HAVE_STRUCT_SOCKADDR_UN 1
+
+#ifndef _MSC_VER
+extern int _CRT_glob = 0; /* 0 turns off globbing; 1 turns it on */
+#endif


fairywren happily passes the tests that Robert has since reverted.


I'm rather tempted to call this CRT behaviour a mis-feature, especially
as a default. I think we should certainly disable it in the development
branch, and consider back-patching it, although it is a slight change in
behaviour, albeit one that we didn't know about much less want or
document. Still, we been building with mingw compilers for about 20
years and haven't hit this before so far as we know, so maybe not.


cheers


andrew

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




pgsql-hackers by date:

Previous
From: "wangw.fnst@fujitsu.com"
Date:
Subject: RE: Data is copied twice when specifying both child and parent table in publication
Next
From: Noah Misch
Date:
Subject: Re: pgsql: Allow db.schema.table patterns, but complain about random garbag