Pg17 Crash in Planning (Arrays + Casting + UDF)
Paul Ramsey <pramsey@cleverelephant.ca>
From: Paul Ramsey <pramsey@cleverelephant.ca>
To: Pgsql Hackers <pgsql-hackers@postgresql.org>
Cc: Regina Obe <lr@pcorp.us>,
Fredrik Widlert <fredrik.widlert@digpro.se>
Date: 2024-10-09T18:52:25Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Avoid crash in estimate_array_length with null root pointer.
- a3c4a91f1e28 17.1 landed
- 5a4416192d22 18.0 landed
-
Teach estimate_array_length() to use statistics where available.
- 9391f71523b6 17.0 cited
Hackers,
This extremely odd case [2] came in via a report using a lot of PostGIS functions, but it can be reconfigured into a pure-PostgreSQL crasher [1].
CREATE TABLE n (i integer);
CREATE OR REPLACE FUNCTION add(integer)
RETURNS integer
AS 'SELECT 2 * $1 + 4 * $1'
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
SELECT add(array_length(array_agg(i)::numeric[],1)::integer) FROM n;
The stack trace shows it doesn’t get past planning, and in fact it doesn’t care if the table has data in it or not.
ATB,
P
[1] https://trac.osgeo.org/postgis/ticket/5793#comment:8
[2] https://lists.osgeo.org/pipermail/postgis-devel/2024-October/030428.html