From: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
---|---|
To: | Noah Misch <noah(at)leadboat(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: pgsql: Allow db.schema.table patterns, but complain about random garbag |
Date: | 2022-04-24 17:09:08 |
Message-ID: | 22c77d3c-3f90-2451-1f95-ed0d3e196d81@dunslane.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers 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(at)gmail(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Noah Misch | 2022-04-24 18:19:34 | Re: pgsql: Allow db.schema.table patterns, but complain about random garbag |
Previous Message | Tom Lane | 2022-04-23 16:16:18 | pgsql: Fix incautious CTE matching in rewriteSearchAndCycle(). |
From | Date | Subject | |
---|---|---|---|
Next Message | Noah Misch | 2022-04-24 18:19:34 | Re: pgsql: Allow db.schema.table patterns, but complain about random garbag |
Previous Message | wangw.fnst@fujitsu.com | 2022-04-24 06:16:04 | RE: Data is copied twice when specifying both child and parent table in publication |