Re: ROWS FROM(): A Foolish (In)Consistency? - Mailing list pgsql-hackers

From David Fetter
Subject Re: ROWS FROM(): A Foolish (In)Consistency?
Date
Msg-id 20151019180755.GA17257@fetter.org
Whole thread Raw
In response to ROWS FROM(): A Foolish (In)Consistency?  (David Fetter <david@fetter.org>)
Responses Re: ROWS FROM(): A Foolish (In)Consistency?  (Jim Nasby <Jim.Nasby@BlueTreble.com>)
List pgsql-hackers
On Mon, Oct 19, 2015 at 10:24:37AM -0700, David Fetter wrote:
> Folks,
> 
> As I was learning how best to add native weighted statistics, coming
> soon, I noticed that our ROWS FROM() constructor takes only
> set-returning functions, gluing the outputs together side by side
> without a join condition of any kind.  This is a handy capability,
> which I don't find elsewhere in our code, modulo horrible things
> involving WITH ORDINALITY and FULL JOIN.
> 
> Did I miss something?
> 
> If not, would it make sense to allow every set-returning construct
> inside ROWS FROM(), rather than just some of them?

Based on off-list feedback, this proposal is not as clear as I would
have liked.

Here's what we get with SRFs:

SELECT * FROM ROWS FROM (generate_series(1,5,2),generate_series(4,1,-1)) AS t(i,j);i | j 
---+---1 | 43 | 35 | 2  | 1
(4 rows)

Here's a similar construct, but not really, from LATERAL:

SELECT * FROM generate_series(1,5,2) AS s(i) FULL JOIN LATERAL generate_series(4,1,-1) AS t(j) ON s.i=t.j;i | j 
---+---1 | 1  | 23 | 3  | 45 |  
(5 rows)

What I'd like to do is lift the restriction on ROWS FROM(), which
currently requires that the stuff inside the parentheses set-returning
functions, so constructs something like the following would actually work:

SELECT *
FROM
ROWS FROM (   (VALUES (...), ..., (...)),   (SELECT ... ),   (INSERT ... RETURNING ... ),    my_srf()
)
AS t(...)

would actually work.

What say?

Cheers,
David.
-- 
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david.fetter@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate



pgsql-hackers by date:

Previous
From: Robbie Harwood
Date:
Subject: Re: [PATCH v3] GSSAPI encryption support
Next
From: "Joshua D. Drake"
Date:
Subject: Re: pg_restore cancel TODO