implicit declaration of datumIsEqual in parse_coerce.c

Started by Tomas Vondraalmost 6 years ago5 messages
#1Tomas Vondra
tomas.vondra@2ndquadrant.com

Hi,

Not sure what changed, but I'm seeing this failure:

parse_coerce.c: In function ‘coerce_type’:
parse_coerce.c:345:9: warning: implicit declaration of function ‘datumIsEqual’ [-Wimplicit-function-declaration]
345 | if (!datumIsEqual(newcon->constvalue, val2, false, newcon->constlen))
| ^~~~~~~~~~~~

Not sure if this because of compiler version (I'm on gcc 9.2.1) or
something else - I don't see any obvious changes to relevant parts of
the code, but I haven't dug too much.

Simply including 'utils/datum.h' resolves the issue.

regards

--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tomas Vondra (#1)
Re: implicit declaration of datumIsEqual in parse_coerce.c

Tomas Vondra <tomas.vondra@2ndquadrant.com> writes:

Not sure what changed, but I'm seeing this failure:

parse_coerce.c: In function ‘coerce_type’:
parse_coerce.c:345:9: warning: implicit declaration of function ‘datumIsEqual’ [-Wimplicit-function-declaration]
345 | if (!datumIsEqual(newcon->constvalue, val2, false, newcon->constlen))
| ^~~~~~~~~~~~

That's inside "#ifdef RANDOMIZE_ALLOCATED_MEMORY", which probably
explains why most of us aren't seeing it. My guess is somebody
removed an #include without realizing that this chunk of code
needed it.

regards, tom lane

#3Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#2)
Re: implicit declaration of datumIsEqual in parse_coerce.c

On Tue, Apr 07, 2020 at 05:16:58PM -0400, Tom Lane wrote:

That's inside "#ifdef RANDOMIZE_ALLOCATED_MEMORY", which probably
explains why most of us aren't seeing it. My guess is somebody
removed an #include without realizing that this chunk of code
needed it.

[cough]

commit: 4dbcb3f844eca4a401ce06aa2781bd9a9be433e9
author: Tom Lane <tgl@sss.pgh.pa.us>
date: Sat, 14 Mar 2020 14:42:22 -0400
Restructure polymorphic-type resolution in funcapi.c.
[...]
@@ -26,7 +25,6 @@
#include "parser/parse_relation.h"
#include "parser/parse_type.h"
#include "utils/builtins.h"
-#include "utils/datum.h"
#include "utils/lsyscache.h"
--
Michael

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Paquier (#3)
Re: implicit declaration of datumIsEqual in parse_coerce.c

Michael Paquier <michael@paquier.xyz> writes:

On Tue, Apr 07, 2020 at 05:16:58PM -0400, Tom Lane wrote:

That's inside "#ifdef RANDOMIZE_ALLOCATED_MEMORY", which probably
explains why most of us aren't seeing it. My guess is somebody
removed an #include without realizing that this chunk of code
needed it.

[cough]

Bleagh. Either of you want to put it back? (Maybe with a comment
this time, like "needed for datumIsEqual()".)

Curiously, there are no buildfarm warnings about this, even though we have
at least one member running with RANDOMIZE_ALLOCATED_MEMORY. Wonder why?

regards, tom lane

#5Noah Misch
noah@leadboat.com
In reply to: Tom Lane (#4)
Re: implicit declaration of datumIsEqual in parse_coerce.c

On Tue, Apr 07, 2020 at 10:39:30PM -0400, Tom Lane wrote:

On Tue, Apr 07, 2020 at 05:16:58PM -0400, Tom Lane wrote:

That's inside "#ifdef RANDOMIZE_ALLOCATED_MEMORY", which probably
explains why most of us aren't seeing it. My guess is somebody
removed an #include without realizing that this chunk of code
needed it.

Curiously, there are no buildfarm warnings about this, even though we have
at least one member running with RANDOMIZE_ALLOCATED_MEMORY. Wonder why?

The RANDOMIZE_ALLOCATED_MEMORY buildfarm members use xlc, which disables this
warning by default. (Given flag -qinfo=pro, it would warn.)