Re: 17f446784d54da827f74c2acc0fa772a41b92354 breaks orafce build

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Japin Li <japinli(at)hotmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
Subject: Re: 17f446784d54da827f74c2acc0fa772a41b92354 breaks orafce build
Date: 2025-12-26 18:12:46
Message-ID: CAFj8pRBVQBRkKCLzWnORzdnvWPWo=pADctuzb7WOsJ4i0XH2-A@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi

pá 26. 12. 2025 v 13:40 odesílatel Japin Li <japinli(at)hotmail(dot)com> napsal:

> On Fri, 26 Dec 2025 at 12:16, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
> wrote:
> > pá 26. 12. 2025 v 11:50 odesílatel Japin Li <japinli(at)hotmail(dot)com>
> napsal:
> >
> > On Fri, 26 Dec 2025 at 09:12, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
> wrote:
> > > Hi
> > >
> > > I tried to build Orafce against the master without success. After
> some searching I found so patch
> > >
> > > commit 17f446784d54da827f74c2acc0fa772a41b92354 -- fail
> > > Author: Peter Eisentraut <peter(at)eisentraut(dot)org>
> > > Date: Mon Dec 15 11:43:11 2025
> > >
> > > Refactor static_assert() support.
> > >
> > > does it.
> > >
> > > It fails with strange errors
> > >
> > > /usr/local/pgsql/master/include/server/storage/lwlock.h:64:18: error:
> expected parameter declarator
> > > 64 | StaticAssertDecl(sizeof(LWLock) <= LWLOCK_PADDED_SIZE,
> > > | ^
> > > /usr/local/pgsql/master/include/server/storage/lwlock.h:64:18: error:
> expected ')'
> > > /usr/local/pgsql/master/include/server/storage/lwlock.h:64:1: note:
> to match this '('
> > > 64 | StaticAssertDecl(sizeof(LWLock) <= LWLOCK_PADDED_SIZE,
> > > | ^
> > > /usr/local/pgsql/master/include/server/c.h:941:15: note: expanded
> from macro 'StaticAssertDecl'
> > > 941 | static_assert(condition, errmessage)
> > > | ^
> > > In file included from orafce.c:2:
> > > /usr/local/pgsql/master/include/server/storage/lwlock.h:64:1: error:
> type specifier missing, defaults to 'int'; ISO
> > C99
> > > and later do not support implicit int [-Wimplicit-int]
> > > 64 | StaticAssertDecl(sizeof(LWLock) <= LWLOCK_PADDED_SIZE,
> > > | ^
> > > | int
> > > /usr/local/pgsql/master/include/server/c.h:941:2: note: expanded from
> macro 'StaticAssertDecl'
> > > 941 | static_assert(condition, errmessage)
> > > | ^
> > > In file included from orafce.c:4:
> > > In file included from
> /usr/local/pgsql/master/include/server/utils/guc.h:17:
> > > In file included from
> /usr/local/pgsql/master/include/server/utils/array.h:64:
> > > /usr/local/pgsql/master/include/server/fmgr.h:508:18: error: expected
> parameter declarator
> > > 508 | StaticAssertDecl(sizeof(FMGR_ABI_EXTRA) <=
> sizeof(((Pg_abi_values *) 0)->abi_extra),
> > > | ^
> > > /usr/local/pgsql/master/include/server/fmgr.h:508:18: error: expected
> ')'
> > > /usr/local/pgsql/master/include/server/fmgr.h:508:1: note: to match
> this '('
> > > 508 | StaticAssertDecl(sizeof(FMGR_ABI_EXTRA) <=
> sizeof(((Pg_abi_values *) 0)->abi_extra),
> > > | ^
> > > /usr/local/pgsql/master/include/server/c.h:941:15: note: expanded
> from macro 'StaticAssertDecl'
> > > 941 | static_assert(condition, errmessage)
> > > | ^
> > > In file included from orafce.c:4:
> > > In file included from
> /usr/local/pgsql/master/include/server/utils/guc.h:17:
> > > In file included from
> /usr/local/pgsql/master/include/server/utils/array.h:64:
> > > /usr/local/pgsql/master/include/server/fmgr.h:508:1: error: type
> specifier missing, defaults to 'int'; ISO C99 and
> > later
> > > do not support implicit int [-Wimplicit-int]
> > > 508 | StaticAssertDecl(sizeof(FMGR_ABI_EXTRA) <=
> sizeof(((Pg_abi_values *) 0)->abi_extra),
> > > | ^
> > > | int
> > > /usr/local/pgsql/master/include/server/c.h:941:2: note: expanded from
> macro 'StaticAssertDecl'
> > > 941 | static_assert(condition, errmessage)
> > > | ^
> > > 6 errors generated.
> > > make: ***
> [/usr/local/pgsql/master/lib/pgxs/src/makefiles/../../src/Makefile.global:1101:
> orafce.bc] Chyba 1
> > > /usr/lib64/ccache/clang -Wno-ignored-attributes -fno-strict-aliasing
> -fwrapv -fexcess-precision=standard -
> > > Wno-unused-command-line-argument -Wno-compound-token-split-by-macro
> -Wno-format-truncation -O2 -I. -I./ -
> > > I/usr/local/pgsql/master/include/server
> -I/usr/local/pgsql/master/include/internal -D_GNU_SOURCE -
> > I/usr/include/libxml2 -
> > > DWITH_GZFILEOP -flto=thin -emit-llvm -c -o orafce.bc orafce.c
> > > In file included from orafce.c:2:
> > > /usr/local/pgsql/master/include/server/storage/lwlock.h:64:18: error:
> expected parameter declarator
> > > 64 | StaticAssertDecl(sizeof(LWLock) <= LWLOCK_PADDED_SIZE,
> > > | ^
> > > /usr/local/pgsql/master/include/server/storage/lwlock.h:64:18: error:
> expected ')'
> > > /usr/local/pgsql/master/include/server/storage/lwlock.h:64:1: note:
> to match this '('
> > > 64 | StaticAssertDecl(sizeof(LWLock) <= LWLOCK_PADDED_SIZE,
> > > | ^
> > > /usr/local/pgsql/master/include/server/c.h:941:15: note: expanded
> from macro 'StaticAssertDecl'
> > > 941 | static_assert(condition, errmessage)
> > > | ^
> > > In file included from orafce.c:2:
> > > /usr/local/pgsql/master/include/server/storage/lwlock.h:64:1: error:
> type specifier missing, defaults to 'int'; ISO
> > C99
> > > and later do not support implicit int [-Wimplicit-int]
> > > 64 | StaticAssertDecl(sizeof(LWLock) <= LWLOCK_PADDED_SIZE,
> > > | ^
> > > | int
> > > /usr/local/pgsql/master/include/server/c.h:941:2: note: expanded from
> macro 'StaticAssertDecl'
> > > 941 | static_assert(condition, errmessage)
> > > | ^
> > > In file included from orafce.c:4:
> > > In file included from
> /usr/local/pgsql/master/include/server/utils/guc.h:17:
> > > In file included from
> /usr/local/pgsql/master/include/server/utils/array.h:64:
> > > /usr/local/pgsql/master/include/server/fmgr.h:508:18: error: expected
> parameter declarator
> > > 508 | StaticAssertDecl(sizeof(FMGR_ABI_EXTRA) <=
> sizeof(((Pg_abi_values *) 0)->abi_extra),
> > > | ^
> > > /usr/local/pgsql/master/include/server/fmgr.h:508:18: error: expected
> ')'
> > > /usr/local/pgsql/master/include/server/fmgr.h:508:1: note: to match
> this '('
> > > 508 | StaticAssertDecl(sizeof(FMGR_ABI_EXTRA) <=
> sizeof(((Pg_abi_values *) 0)->abi_extra),
> > > | ^
> > > /usr/local/pgsql/master/include/server/c.h:941:15: note: expanded
> from macro 'StaticAssertDecl'
> > > 941 | static_assert(condition, errmessage)
> > > | ^
> > > In file included from orafce.c:4:
> > > In file included from
> /usr/local/pgsql/master/include/server/utils/guc.h:17:
> > > In file included from
> /usr/local/pgsql/master/include/server/utils/array.h:64:
> > > /usr/local/pgsql/master/include/server/fmgr.h:508:1: error: type
> specifier missing, defaults to 'int'; ISO C99 and
> > later
> > > do not support implicit int [-Wimplicit-int]
> > > 508 | StaticAssertDecl(sizeof(FMGR_ABI_EXTRA) <=
> sizeof(((Pg_abi_values *) 0)->abi_extra),
> > > | ^
> > > | int
> > > /usr/local/pgsql/master/include/server/c.h:941:2: note: expanded from
> macro 'StaticAssertDecl'
> > > 941 | static_assert(condition, errmessage)
> > > | ^
> > > 6 errors generated.
> > > make: ***
> [/usr/local/pgsql/master/lib/pgxs/src/makefiles/../../src/Makefile.global:1101:
> orafce.bc] Chyba 1
> > >
> > > pavel(at)nemesis:~/src/postgresql/src$ gcc --version
> > > gcc (GCC) 15.2.1 20251211 (Red Hat 15.2.1-5)
> > > Copyright (C) 2025 Free Software Foundation, Inc.
> > > This is free software; see the source for copying conditions. There
> is NO
> > > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
> PURPOSE.
> > >
> >
> > Hi,
> >
> > I can reproduce the issue on Ubuntu 24.04 with GCC 13.3.0.
> >
> > What is interesting is that the compiler cannot find the static_assert
> macro.
> >
> > $ gcc -Wall -Wmissing-prototypes -Wpointer-arith
> -Wdeclaration-after-statement -Werror=vla -Wendif-labels -
> > Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type
> -Wshadow=compatible-local -Wformat-security -
> > fno-strict-aliasing -fwrapv -fexcess-precision=standard
> -Wno-format-truncation -Wno-stringop-truncation -g -O0 -
> > Wmissing-prototypes -Wincompatible-pointer-types -fsanitize=bounds
> -fPIC -fvisibility=hidden -I. -I./ -
> > I/home/japin/Codes/pg/main/build/pg/include/postgresql/server -
> > I/home/japin/Codes/pg/main/build/pg/include/postgresql/internal -O0
> -D_GNU_SOURCE -I/usr/include/libxml2 -dM -E
> > regexp.c | grep -e __USE_ISOC -e STDC_VERSION -e static_assert
> > #define __USE_ISOC11 1
> > #define __USE_ISOC95 1
> > #define __USE_ISOC99 1
> > #define StaticAssertStmt(condition,errmessage) do {
> static_assert(condition, errmessage); } while(0)
> > #define StaticAssertExpr(condition,errmessage) ((void) ({
> static_assert(condition, errmessage); true; }))
> > #define __STDC_VERSION__ 201710L
> > #define StaticAssertDecl(condition,errmessage) static_assert(condition,
> errmessage)
> >
> > However, the following mini-code can find the static_assert macro.
> >
> > $ cat <<EOF | gcc -Wall -Wmissing-prototypes -Wpointer-arith
> -Wdeclaration-after-statement -Werror=vla -Wendif-labels
> > -Wmissing-format-attribute -Wimplicit-fallthrough=3
> -Wcast-function-type -Wshadow=compatible-local -Wformat-security -
> > fno-strict-aliasing -fwrapv -fexcess-precision=standard
> -Wno-format-truncation -Wno-stringop-truncation -g -O0 -
> > Wmissing-prototypes -Wincompatible-pointer-types -fsanitize=bounds
> -fPIC -fvisibility=hidden -O0 -D_GNU_SOURCE -dM -E
> > - | grep -e __USE_ISOC -e STDC_VERSION -e static_assert
> > #include <stdio.h>
> > #include <assert.h>
> > int main(void) { return 0; }
> > EOF
> >
> > it is maybe some pgxs issue - meson build is ok
>
> If think I've found the problem:
>
> There's an assert.h file in the orafce directory, which causes <c.h> to
> include this local version instead of the system's assert.h header.
>
> After renaming the assert.h file in the orafce directory to assert1.h, the
> problem was resolved and everything worked correctly.
>

yes, it was there.

fixed
https://github.com/orafce/orafce/commit/512039ac0ba3ec3d0e7749bf7e9b76dd557edf07

Thank you very much for this idea. It really helps.

Best regards

Pavel

> diff --git a/assert.c b/assert.c
> index 30f53ad..2e3385c 100644
> --- a/assert.c
> +++ b/assert.c
> @@ -1,6 +1,6 @@
> #include "postgres.h"
> #include "funcapi.h"
> -#include "assert.h"
> +#include "assert1.h"
> #include "miscadmin.h"
> #include "utils/acl.h"
> #include "utils/builtins.h"
> diff --git a/assert.h b/assert.h
> deleted file mode 100644
> index 45c2fc7..0000000
> --- a/assert.h
> +++ /dev/null
> @@ -1,9 +0,0 @@
> -#ifndef __ASSERT__
> -#define __ASSERT__
> -
> -#define ERRCODE_ORA_PACKAGES_INVALID_SCHEMA_NAME
> MAKE_SQLSTATE('4','4','0','0','1')
> -#define ERRCODE_ORA_PACKAGES_INVALID_OBJECT_NAME
> MAKE_SQLSTATE('4','4','0','0','2')
> -#define ERRCODE_ORA_PACKAGES_ISNOT_SIMPLE_SQL_NAME
> MAKE_SQLSTATE('4','4','0','0','3')
> -#define ERRCODE_ORA_PACKAGES_ISNOT_QUALIFIED_SQL_NAME
> MAKE_SQLSTATE('4','4','0','0','4')
> -
> -#endif
>
>
> --
> Regards,
> Japin Li
> ChengDu WenWu Information Technology Co., Ltd.
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Jeff Davis 2025-12-26 19:32:30 Re: NLS: use gettext() to translate system error messages
Previous Message Jaime Casanova 2025-12-26 17:49:33 could sent_lsn be lower than write/flush/replay_lsn?