Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

Started by Tom Laneover 4 years ago7 messages
#1Tom Lane
tgl@sss.pgh.pa.us
1 attachment(s)

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

Attachments:

fix-bogus-HAVE_DECL-values.patchtext/x-diff; charset=us-ascii; name=fix-bogus-HAVE_DECL-values.patchDownload
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,
#2Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#1)
Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

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

#3Peter Eisentraut
peter.eisentraut@enterprisedb.com
In reply to: Tom Lane (#1)
Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

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.

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Paquier (#2)
Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

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

#5Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#4)
Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

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

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Paquier (#5)
Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

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

#7Peter Eisentraut
peter.eisentraut@enterprisedb.com
In reply to: Michael Paquier (#5)
Re: Bogus HAVE_DECL_FOO entries in msvc/Solution.pm

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.