pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tom Lane <tgl@sss.pgh.pa.us>
To: 253540651@qq.com
Cc: pgsql-bugs@lists.postgresql.org, Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Subject: Re: BUG #17318: ERROR: AddressSanitizer: SEGV on unknown address in optimizer
Date: Mon, 06 Dec 2021 09:56:40 -0500
Message-ID: <3048015.1638802600@sss.pgh.pa.us> (raw)
In-Reply-To: <17318-2eb65a3a611d2368@postgresql.org>
References: <17318-2eb65a3a611d2368@postgresql.org>

PG Bug reporting form <noreply@postgresql.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





view thread (4+ messages)  latest in thread

Message-ID: <3048015.1638802600@sss.pgh.pa.us>
Permalink:  ../3048015.1638802600@sss.pgh.pa.us/
Also on:    postgresql.org/message-id/3048015.1638802600@sss.pgh.pa.us

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-bugs@postgresql.org
  Cc: tgl@sss.pgh.pa.us, 253540651@qq.com, peter.eisentraut@enterprisedb.com
  Subject: Re: BUG #17318: ERROR: AddressSanitizer: SEGV on unknown address in optimizer
  In-Reply-To: <3048015.1638802600@sss.pgh.pa.us>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox