From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | Michael Banck <mbanck(at)gmx(dot)net> |
Cc: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andrew Dunstan <andrew(at)dunslane(dot)net>, Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Cleaning up historical portability baggage |
Date: | 2025-06-09 14:25:23 |
Message-ID: | n5hjl2cvnfr3oitguk5qmyep3ffb6ii5pfzcyezg4mjfb3ocqp@lt7iej77xiqw |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On 2025-06-09 15:25:22 +0200, Michael Banck wrote:
> Hi Thomas,
>
> On Thu, Aug 11, 2022 at 10:02:29PM +1200, Thomas Munro wrote:
> > Remove configure probe for sys/uio.h.
>
> Removing the configure probe is fine, but the patch also changes
> behavior in the sense that IOV_MAX is now considered defined everywhere
> but on Windows. However, in the good-old GNU "we have no arbitrary
> limits" fashion, this breaks on GNU Hurd:
>
> |gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshado
> |w=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -g -O2 -DFRONTEND -I. -I../../src/common -
> |I../../src/include -D_GNU_SOURCE -I/usr/include/libxml2 -DVAL_CC="\"gcc\"" -DVAL_CPPFLAGS="\"-D_GNU_SOURCE -I/usr/include/libxml2\"" -DVAL_CFLAGS="\"-Wall -Wmissing-prototypes -Wpoin
> |ter-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 -O2\"" -DVAL_CFLAGS_SL="\"-fPIC\"" -DVAL_LDFLAGS="\"-Wl,--as-needed -Wl,-rpa
> |th,'/home/demo/build-farm-19.1/buildroot/REL_16_STABLE/inst/lib',--enable-new-dtags\"" -DVAL_LDFLAGS_EX="\"\"" -DVAL_LDFLAGS_SL="\"\"" -DVAL_LIBS="\"-lpgcommon -lpgport -lxslt -lxml2 -
> |lssl -lcrypto -lgssapi_krb5 -lz -lreadline -lpthread -lm \"" -c -o file_utils.o file_utils.c
> |In file included from ../../src/include/postgres_fe.h:25,
> | from file_utils.c:19:
> |file_utils.c: In function 'pg_pwritev_with_retry':
> |../../src/include/port/pg_iovec.h:36:24: error: 'IOV_MAX' undeclared (first use in this function); did you mean 'INT_MAX'?
> | 36 | #define PG_IOV_MAX Min(IOV_MAX, 32)
> | | ^~~~~~~
> |../../src/include/c.h:988:35: note: in definition of macro 'Min'
> | 988 | #define Min(x, y) ((x) < (y) ? (x) : (y))
> | | ^
> |file_utils.c:474:31: note: in expansion of macro 'PG_IOV_MAX'
> | 474 | struct iovec iov_copy[PG_IOV_MAX];
> | | ^~~~~~~~~~
> |../../src/include/port/pg_iovec.h:36:24: note: each undeclared identifier is reported only once for each function it appears in
>
> |$ grep IOV_MAX /usr/include/i386-gnu/bits/uio_lim.h
> |#undef __IOV_MAX
>
> Postgres built fine up and until v15 on the Hurd, so this is a build
> regression, and the fact that we define #PG_IOV_MAX to at most 32
> anyway suggest we could just #definde IOV_MAX to 16 if undefined as on
> Windows.
I think our policy basically is that if it doesn't exist on the BF, it's
unsupported. Also note that Hurd is not listed as a supported OS:
https://www.postgresql.org/docs/devel/supported-platforms.html
We can't design for OS that we don't know it's used with postgres and/or how
that OS works / what it supports.
So I reject the premise that this is a regression.
If you want to argue that we should add support for Hurd, you can do that, but
that's obviously a different discussion.
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Treat | 2025-06-09 14:32:11 | Re: doc pg_constraint.convalidated column description need update |
Previous Message | Dilip Kumar | 2025-06-09 13:45:57 | Re: Add new wait event to XactLockTableWait |