Query fails when SRFs are part of FROM clause (Commit id: 69f4b9c85f)

From: Rushabh Lathia <rushabh(dot)lathia(at)gmail(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Query fails when SRFs are part of FROM clause (Commit id: 69f4b9c85f)
Date: 2017-01-27 12:28:04
Message-ID: CAGPqQf3joLrjmR2FmQzYURb-_TxhW78tXhgYm+C66wXNjWH9ww@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Consider the below test;

CREATE TABLE tab ( a int primary key);

SELECT *
FROM pg_constraint pc,
CAST(CASE WHEN pc.contype IN ('f','u','p') THEN generate_series(1,
array_upper(pc.conkey, 1)) ELSE NULL END AS int) AS position;

Above query is failing with "set-valued function called in context that
cannot
accept a set". But if I remove the CASE from the query then it working just
good.

Like:

SELECT *
FROM pg_constraint pc,
CAST(generate_series(1, array_upper(pc.conkey, 1)) AS int) AS position;

This started failing with 69f4b9c85f168ae006929eec44fc44d569e846b9. It seems
check_srf_call_placement() sets the hasTargetSRFs flag and but when the SRFs
at the rtable ofcourse this flag doesn't get set. It seems like missing
something
their, but I might be completely wrong as not quire aware of this area.

regards,
Rushabh Lathia
www.EnterpriseDB.com

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2017-01-27 12:28:26 Re: Speedup twophase transactions
Previous Message Etsuro Fujita 2017-01-27 12:25:49 Re: Push down more full joins in postgres_fdw