Re: BUG #15669: Error with unnest in PG 11 (ERROR: 0A000)

Julien Rouhaud <rjuju123@gmail.com>

From: Julien Rouhaud <rjuju123@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: thibaut.madelaine@dalibo.com, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2019-03-05T16:34:21Z
Lists: pgsql-bugs

Attachments

On Tue, Mar 5, 2019 at 4:39 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> PG Bug reporting form <noreply@postgresql.org> writes:
> > In PostgreSQL 10.7 and before, it is possible to run the following query:
>
> > thibaut=# WITH test AS ( SELECT array[1,2] AS intarr )
> >                  SELECT unnest(intarr) AS lot_id FROM test WHERE false;
>
> > In version 11.2, the same query fails:
> > ERROR:  0A000: set-valued function called in context that cannot accept a set
>
> Hmm, that's definitely a bug.  It looks like we're forgetting to make
> a ProjectSet plan node for the unnest() if we realize that the query
> is a no-op; but I'm not sure why 10.x doesn't have the same issue.
> Digging ...

It seems to be due to 11cf92f6e2e which bypass adjust_paths_for_srfs()
in case of dummy rel.  I'm not familiar with that this code, but
attached patch seems to fix the issue without breaking regression
tests.

Commits

  1. Fix handling of targetlist SRFs when scan/join relation is known empty.