Thread: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

From
Tom Lane
Date:
Autoconf's AC_CHECK_DECLS always defines HAVE_DECL_whatever
as 1 or 0, but some of the entries in msvc/Solution.pm show
such symbols as "undef" instead.  Shouldn't we fix it as
per attached?  This is probably only cosmetic at the moment,
but it could bite us someday if someone wrote a complex
conditional using one of these symbols.

These apparently-bogus values date to Peter's 8f4fb4c64,
which created that table; but AFAICS it was just faithfully
emulating the previous confused state of affairs.

            regards, tom lane

diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 294b968dcd..cfda5ac185 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -239,18 +239,18 @@ sub GenerateFiles
         HAVE_CRYPTO_LOCK           => undef,
         HAVE_DECL_FDATASYNC        => 0,
         HAVE_DECL_F_FULLFSYNC      => 0,
-        HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER => undef,
-        HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER    => undef,
+        HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER => 0,
+        HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER    => 0,
         HAVE_DECL_LLVMGETHOSTCPUNAME                => 0,
         HAVE_DECL_LLVMGETHOSTCPUFEATURES            => 0,
         HAVE_DECL_LLVMORCGETSYMBOLADDRESSIN         => 0,
-        HAVE_DECL_POSIX_FADVISE                     => undef,
+        HAVE_DECL_POSIX_FADVISE                     => 0,
         HAVE_DECL_PREADV                            => 0,
         HAVE_DECL_PWRITEV                           => 0,
         HAVE_DECL_RTLD_GLOBAL                       => 0,
         HAVE_DECL_RTLD_NOW                          => 0,
-        HAVE_DECL_STRLCAT                           => undef,
-        HAVE_DECL_STRLCPY                           => undef,
+        HAVE_DECL_STRLCAT                           => 0,
+        HAVE_DECL_STRLCPY                           => 0,
         HAVE_DECL_STRNLEN                           => 1,
         HAVE_DECL_STRTOLL                           => 1,
         HAVE_DECL_STRTOULL                          => 1,

Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

From
Michael Paquier
Date:
On Mon, Jul 12, 2021 at 07:46:32PM -0400, Tom Lane wrote:
> Autoconf's AC_CHECK_DECLS always defines HAVE_DECL_whatever
> as 1 or 0, but some of the entries in msvc/Solution.pm show
> such symbols as "undef" instead.  Shouldn't we fix it as
> per attached?  This is probably only cosmetic at the moment,
> but it could bite us someday if someone wrote a complex
> conditional using one of these symbols.

Hmm.  I have not tested, but agreed that this is inconsistent.  I
would tend to vote for a backpatch to keep some consistency across the
branches as changes in this area could easily lead to rather conflicts
harder to parse.
--
Michael

Attachment

Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

From
Peter Eisentraut
Date:
On 13.07.21 01:46, Tom Lane wrote:
> Autoconf's AC_CHECK_DECLS always defines HAVE_DECL_whatever
> as 1 or 0, but some of the entries in msvc/Solution.pm show
> such symbols as "undef" instead.  Shouldn't we fix it as
> per attached?  This is probably only cosmetic at the moment,
> but it could bite us someday if someone wrote a complex
> conditional using one of these symbols.

Yes, I think that is correct.



Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

From
Tom Lane
Date:
Michael Paquier <michael@paquier.xyz> writes:
> On Mon, Jul 12, 2021 at 07:46:32PM -0400, Tom Lane wrote:
>> Autoconf's AC_CHECK_DECLS always defines HAVE_DECL_whatever
>> as 1 or 0, but some of the entries in msvc/Solution.pm show
>> such symbols as "undef" instead.  Shouldn't we fix it as
>> per attached?  This is probably only cosmetic at the moment,
>> but it could bite us someday if someone wrote a complex
>> conditional using one of these symbols.

> Hmm.  I have not tested, but agreed that this is inconsistent.  I
> would tend to vote for a backpatch to keep some consistency across the
> branches as changes in this area could easily lead to rather conflicts
> harder to parse.

That's easy enough in v13 and up, which have 8f4fb4c64 so that
Solution.pm looks like this.  We could make it consistent in older
branches by manually hacking pg_config.h.win32 ... but I'm wondering
if the smarter plan wouldn't be to back-patch 8f4fb4c64.  Without
that, we're at risk of messing up anytime we back-patch something
that involves a change in the set of configure-defined symbols, which
we do with some regularity.

            regards, tom lane



Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

From
Michael Paquier
Date:
On Tue, Jul 13, 2021 at 12:25:06AM -0400, Tom Lane wrote:
> That's easy enough in v13 and up, which have 8f4fb4c64 so that
> Solution.pm looks like this.  We could make it consistent in older
> branches by manually hacking pg_config.h.win32 ... but I'm wondering
> if the smarter plan wouldn't be to back-patch 8f4fb4c64.  Without
> that, we're at risk of messing up anytime we back-patch something
> that involves a change in the set of configure-defined symbols, which
> we do with some regularity.

I was thinking to just do the easiest move and fix this issue down to
13, not bothering about older branches :p

Looking at the commit, a backpatch is not that complicated and it is
possible to check the generation of pg_config.h on non-MSVC
environments if some objects are missing.  Still, I think that it
would be better to be careful and test this code properly on Windows
with a real build.  It means that..  Err...  Andrew or I should look
at that.  I am not sure that the potential maintenance gain is worth
poking at the stable branches, to be honest.
--
Michael

Attachment

Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

From
Tom Lane
Date:
Michael Paquier <michael@paquier.xyz> writes:
> On Tue, Jul 13, 2021 at 12:25:06AM -0400, Tom Lane wrote:
>> That's easy enough in v13 and up, which have 8f4fb4c64 so that
>> Solution.pm looks like this.  We could make it consistent in older
>> branches by manually hacking pg_config.h.win32 ... but I'm wondering
>> if the smarter plan wouldn't be to back-patch 8f4fb4c64.

> ... I am not sure that the potential maintenance gain is worth
> poking at the stable branches, to be honest.

Fair enough.  I wasn't very eager to do the legwork on that, either,
given that the issue is (so far) only cosmetic.

            regards, tom lane



Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

From
Peter Eisentraut
Date:
On 13.07.21 09:53, Michael Paquier wrote:
> I was thinking to just do the easiest move and fix this issue down to
> 13, not bothering about older branches :p
> 
> Looking at the commit, a backpatch is not that complicated and it is
> possible to check the generation of pg_config.h on non-MSVC
> environments if some objects are missing.  Still, I think that it
> would be better to be careful and test this code properly on Windows
> with a real build.  It means that..  Err...  Andrew or I should look
> at that.  I am not sure that the potential maintenance gain is worth
> poking at the stable branches, to be honest.

We have lived with the previous system for a decade, so I think 
backpatching this would be a bit excessive.