Re: BUG #17318: ERROR: AddressSanitizer: SEGV on unknown address in optimizer

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: 253540651(at)qq(dot)com
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>
Subject: Re: BUG #17318: ERROR: AddressSanitizer: SEGV on unknown address in optimizer
Date: 2021-12-06 14:56:40
Message-ID: 3048015.1638802600@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

PG Bug reporting form <noreply(at)postgresql(dot)org> writes:
> WITH RECURSIVE x ( x ) AS ( SELECT 1 UNION ALL SELECT x FROM LATERAL ( (
> SELECT * FROM ( ( SELECT 4 AS x ) UNION ALL ( SELECT 5 AS x ) ) AS x WHERE x
> BETWEEN 1 AND 2 AND x < ( SELECT 3 GROUP BY DISTINCT ROLLUP ( x , x ) ,
> ROLLUP ( x , x ) ) ) UNION ALL ( SELECT ( SELECT x LIMIT 1 ) FROM x OFFSET 0
> LIMIT 5 ) ) AS x GROUP BY ROLLUP ( ( x , x , x ) , ( ( SELECT TRIM (
> TRAILING ' ' FROM SUBSTRING ( VERSION ( ) FROM '^[^0-9]*' ) ) WHERE ( x IS
> NOT NULL ) ) , x ) ) ) CYCLE x SET BOOLEAN USING VALUES SELECT FROM x GROUP
> BY DISTINCT CUBE ( x , x , x ) ;

I simplified this to

WITH RECURSIVE x ( x ) AS
( SELECT 1
UNION ALL
SELECT x FROM
(
SELECT 4 AS x
UNION ALL
SELECT x FROM x
) AS x
)
CYCLE x SET b USING v
SELECT * FROM x
;

and now I'm not sure whether to consider this an optimizer bug
or failure to detect an unsupported case. Our SELECT ref page
says

Both the SEARCH and the CYCLE clause are only valid for recursive WITH
queries. The with_query must be a UNION (or UNION ALL) of two SELECT
(or equivalent) commands (no nested UNIONs).

This WITH query sure looks like nested UNIONs to me, so either
that restriction is stated incorrectly, or it's being enforced
inadequately. If the former, we have an optimizer problem.

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2021-12-06 15:07:41 BUG #17323: test_config_settings during postgres initialization does not read the parameter huge_pages
Previous Message Sandeep Thakkar 2021-12-06 09:37:24 Re: BUG #17312: MacOS User Account Postgres not deleting.