Thread: problems with extensions compiling after upgrade to fc42 (and gcc15)

problems with extensions compiling after upgrade to fc42 (and gcc15)

From
Pavel Stehule
Date:
Hi

I found a problem with compilation of plpgsql_check when I upgraded my fedora.

plpgsql_check cannot be compiled (against PostgreSQL 15-). The compilation fails

rc/expr_walk.c:84:66: warning: passing argument 2 of ‘query_tree_walker’ from incompatible pointer type [-Wincompatible-pointer-types]
   84 |                                                                  detect_dependency_walker,
      |                                                                  ^~~~~~~~~~~~~~~~~~~~~~~~
      |                                                                  |
      |                                                                  _Bool (*)(Node *, void *)
In file included from src/expr_walk.c:14:
/usr/local/pgsql/13/include/server/nodes/nodeFuncs.h:137:52: note: expected ‘_Bool (*)(void)’ but argument is of type ‘_Bool (*)(Node *, void *)’
  137 | extern bool query_tree_walker(Query *query, bool (*walker) (),
      |                                             ~~~~~~~^~~~~~~~~~
src/expr_walk.c:43:1: note: ‘detect_dependency_walker’ declared here
   43 | detect_dependency_walker(Node *node, void *context)
      | ^~~~~~~~~~~~~~~~~~~~~~~~

It is strange, so the source code of Postgres is compiled without problems.

The workaround is pushing to Makefiie

override CFLAGS +=  -Wno-error=incompatible-pointer-types

Regards

Pavel

Re: problems with extensions compiling after upgrade to fc42 (and gcc15)

From
Nathan Bossart
Date:
On Wed, Feb 05, 2025 at 09:31:27PM +0100, Pavel Stehule wrote:
> I found a problem with compilation of plpgsql_check when I upgraded my
> fedora.
> 
> plpgsql_check cannot be compiled (against PostgreSQL 15-). The compilation
> fails
> 
> rc/expr_walk.c:84:66: warning: passing argument 2 of `query_tree_walker´
> from incompatible pointer type [-Wincompatible-pointer-types]
>    84 |
>  detect_dependency_walker,
>       |
>  ^~~~~~~~~~~~~~~~~~~~~~~~
>       |                                                                  |
>       |
>  _Bool (*)(Node *, void *)
> In file included from src/expr_walk.c:14:
> /usr/local/pgsql/13/include/server/nodes/nodeFuncs.h:137:52: note: expected
> `_Bool (*)(void)´ but argument is of type `_Bool (*)(Node *, void *)´
>   137 | extern bool query_tree_walker(Query *query, bool (*walker) (),
>       |                                             ~~~~~~~^~~~~~~~~~
> src/expr_walk.c:43:1: note: `detect_dependency_walker´ declared here
>    43 | detect_dependency_walker(Node *node, void *context)
>       | ^~~~~~~~~~~~~~~~~~~~~~~~

IIRC gcc 15 uses C23 by default, and this looks similar to the problem
fixed in commit d2b4b4c.  I think commit 1c27d16 unintentionally fixed this
for v16 and above.

-- 
nathan



Re: problems with extensions compiling after upgrade to fc42 (and gcc15)

From
Peter Eisentraut
Date:
On 05.02.25 21:31, Pavel Stehule wrote:
> I found a problem with compilation of plpgsql_check when I upgraded my 
> fedora.
> 
> plpgsql_check cannot be compiled (against PostgreSQL 15-). The 
> compilation fails
> 
> rc/expr_walk.c:84:66: warning: passing argument 2 of ‘query_tree_walker’ 
> from incompatible pointer type [-Wincompatible-pointer-types]
>     84 |                                                                 
>   detect_dependency_walker,
>        |                                                                 
>   ^~~~~~~~~~~~~~~~~~~~~~~~
>        |                                                                  |
>        |                                                                 
>   _Bool (*)(Node *, void *)
> In file included from src/expr_walk.c:14:
> /usr/local/pgsql/13/include/server/nodes/nodeFuncs.h:137:52: note: 
> expected ‘_Bool (*)(void)’ but argument is of type ‘_Bool (*)(Node *, 
> void *)’
>    137 | extern bool query_tree_walker(Query *query, bool (*walker) (),
>        |                                             ~~~~~~~^~~~~~~~~~
> src/expr_walk.c:43:1: note: ‘detect_dependency_walker’ declared here
>     43 | detect_dependency_walker(Node *node, void *context)
>        | ^~~~~~~~~~~~~~~~~~~~~~~~
> 
> It is strange, so the source code of Postgres is compiled without problems.
> 
> The workaround is pushing to Makefiie
> 
> override CFLAGS +=  -Wno-error=incompatible-pointer-types

This will be fixed in the next minor releases.  See commit f00c401c65a 
for example.




Re: problems with extensions compiling after upgrade to fc42 (and gcc15)

From
Pavel Stehule
Date:


st 5. 2. 2025 v 21:55 odesílatel Peter Eisentraut <peter@eisentraut.org> napsal:
On 05.02.25 21:31, Pavel Stehule wrote:
> I found a problem with compilation of plpgsql_check when I upgraded my
> fedora.
>
> plpgsql_check cannot be compiled (against PostgreSQL 15-). The
> compilation fails
>
> rc/expr_walk.c:84:66: warning: passing argument 2 of ‘query_tree_walker’
> from incompatible pointer type [-Wincompatible-pointer-types]
>     84 |                                                                 
>   detect_dependency_walker,
>        |                                                                 
>   ^~~~~~~~~~~~~~~~~~~~~~~~
>        |                                                                  |
>        |                                                                 
>   _Bool (*)(Node *, void *)
> In file included from src/expr_walk.c:14:
> /usr/local/pgsql/13/include/server/nodes/nodeFuncs.h:137:52: note:
> expected ‘_Bool (*)(void)’ but argument is of type ‘_Bool (*)(Node *,
> void *)’
>    137 | extern bool query_tree_walker(Query *query, bool (*walker) (),
>        |                                             ~~~~~~~^~~~~~~~~~
> src/expr_walk.c:43:1: note: ‘detect_dependency_walker’ declared here
>     43 | detect_dependency_walker(Node *node, void *context)
>        | ^~~~~~~~~~~~~~~~~~~~~~~~
>
> It is strange, so the source code of Postgres is compiled without problems.
>
> The workaround is pushing to Makefiie
>
> override CFLAGS +=  -Wno-error=incompatible-pointer-types

This will be fixed in the next minor releases.  See commit f00c401c65a
for example.


ok, thank you for info

Regards

Pavel