postgresql/src/include
Thomas Munro bc5a4dfcf7 Assume that <stdbool.h> conforms to the C standard.
Previously we checked "for <stdbool.h> that conforms to C99" using
autoconf's AC_HEADER_STDBOOL macro.  We've required C99 since PostgreSQL
12, so the test was redundant, and under C23 it was broken: autoconf
2.69's implementation doesn't understand C23's new empty header (the
macros it's looking for went away, replaced by language keywords).
Later autoconf versions fixed that, but let's just remove the
anachronistic test.

HAVE_STDBOOL_H and HAVE__BOOL will no longer be defined, but they
weren't directly tested in core or likely extensions (except in 11, see
below).  PG_USE_STDBOOL (or USE_STDBOOL in 11 and 12) is still defined
when sizeof(bool) is 1, which should be true on all modern systems.
Otherwise we define our own bool type and values of size 1, which would
fail to compile under C23 as revealed by the broken test.  (We'll
probably clean that dead code up in master, but here we want a minimal
back-patchable change.)

This came to our attention when GCC 15 recently started using using C23
by default and failed to compile the replacement code, as reported by
Sam James and build farm animal alligator.

Back-patch to all supported releases, and then two older versions that
also know about <stdbool.h>, per the recently-out-of-support policy[1].
12 requires C99 so it's much like the supported releases, but 11 only
assumes C89 so it now uses AC_CHECK_HEADERS instead of the overly picky
AC_HEADER_STDBOOL.  (I could find no discussion of which historical
systems had <stdbool.h> but failed the conformance test; if they ever
existed, they surely aren't relevant to that policy's goals.)

[1] https://wiki.postgresql.org/wiki/Committing_checklist#Policies

Reported-by: Sam James <sam@gentoo.org>
Reviewed-by: Peter Eisentraut <peter@eisentraut.org> (master version)
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> (approach)
Discussion: https://www.postgresql.org/message-id/flat/87o72eo9iu.fsf%40gentoo.org
2024-11-25 20:54:28 +13:00
..
access Revert pg_wal_replay_wait() stored procedure 2024-11-04 22:47:57 +02:00
archive Add macro for customizing an archiving WARNING message. 2024-03-04 15:41:42 -06:00
backup Align blocks in incremental backups to BLCKSZ 2024-04-05 16:30:01 +02:00
bootstrap Update copyright for 2024 2024-01-03 20:49:05 -05:00
catalog Add two attributes to pg_stat_database for parallel workers activity 2024-11-11 10:40:48 +09:00
commands doc: Add better description for rewrite functions in event triggers 2024-10-29 15:35:01 +09:00
common Unify src/common/'s definitions of MaxAllocSize. 2024-10-28 14:39:01 -04:00
datatype Update copyright for 2024 2024-01-03 20:49:05 -05:00
executor Don't store intermediate hash values in ExprState->resvalue 2024-10-17 14:25:08 +13:00
fe_utils pg_verifybackup: Verify tar-format backups. 2024-09-27 08:40:24 -04:00
foreign Clean up more indent breakage from 6377e12a5. 2024-04-16 13:00:40 -04:00
jit jit: Remove obsolete LLVM version guard. 2024-11-11 12:07:24 +13:00
lib Revert pg_wal_replay_wait() stored procedure 2024-11-04 22:47:57 +02:00
libpq Make the memory layout of Port struct independent of USE_OPENSSL 2024-11-22 17:43:04 +02:00
mb Inline basic UTF-8 functions. 2024-03-20 09:40:57 -07:00
nodes Add pg_constraint rows for not-null constraints 2024-11-08 13:28:48 +01:00
optimizer Teach bitmap path generation about transforming OR-clauses to SAOP's 2024-11-24 01:41:45 +02:00
parser Track more precisely query locations for nested statements 2024-10-24 09:29:54 +09:00
partitioning Revert support for ALTER TABLE ... MERGE/SPLIT PARTITION(S) commands 2024-08-24 18:48:48 +03:00
pch Update copyright for 2024 2024-01-03 20:49:05 -05:00
port Fix sign-compare warnings in pg_iovec.h. 2024-11-08 16:11:08 -06:00
portability Fix datatypes in comments in instr_time.h 2024-08-06 22:15:55 +03:00
postmaster Pass MyPMChildSlot as an explicit argument to child process 2024-11-14 16:12:32 +02:00
regex Avoid assertion due to disconnected NFA sub-graphs in regex parsing. 2024-11-15 18:23:38 -05:00
replication Doc: Clarify the inactive_since field description. 2024-11-25 11:12:32 +05:30
rewrite Support MERGE into updatable views. 2024-02-29 15:56:59 +00:00
snowball Update copyright for 2024 2024-01-03 20:49:05 -05:00
statistics Add functions pg_restore_relation_stats(), pg_restore_attribute_stats(). 2024-10-24 12:08:00 -07:00
storage Assign a child slot to every postmaster child process 2024-11-14 16:12:28 +02:00
tcop Restrict accesses to non-system views and foreign tables during pg_dump. 2024-08-05 06:05:33 -07:00
tsearch Constify fields and parameters in spell.c 2024-08-06 23:04:51 +03:00
utils Add write_to_file to PgStat_KindInfo for pgstats kinds 2024-11-22 10:12:26 +09:00
.gitignore Refactor dlopen() support 2018-09-06 11:33:04 +02:00
c.h Assume that <stdbool.h> conforms to the C standard. 2024-11-25 20:54:28 +13:00
fmgr.h Remove _PG_fini() 2024-08-21 07:24:03 +09:00
funcapi.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
getopt_long.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
Makefile Put genbki.pl output into src/include/catalog/ directly 2024-03-14 07:11:21 +01:00
meson.build meson: Restore implicit warning/debug/optimize flags for extensions 2024-06-07 09:36:26 +02:00
miscadmin.h Replace postmaster.c's own backend type codes with BackendType 2024-11-14 16:06:16 +02:00
pg_config.h.in Assume that <stdbool.h> conforms to the C standard. 2024-11-25 20:54:28 +13:00
pg_config_ext.h.in Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_ext.h.meson meson: Add initial version of meson based build system 2022-09-21 22:37:17 -07:00
pg_config_manual.h Add prefetching support on macOS 2024-08-28 07:28:27 +02:00
pg_getopt.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
pg_trace.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
pgstat.h Add two attributes to pg_stat_database for parallel workers activity 2024-11-11 10:40:48 +09:00
pgtar.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
pgtime.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
port.h More use of getpwuid_r() directly 2024-09-02 09:04:30 +02:00
postgres.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
postgres_ext.h Move RelFileNumber declarations to common/relpath.h. 2022-09-27 12:01:57 -04:00
postgres_fe.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
varatt.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
windowapi.h Update copyright for 2024 2024-01-03 20:49:05 -05:00