Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling)
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: pgsql-hackers@postgresql.org
Date: 2016-09-12T16:25:34Z
Lists: pgsql-hackers
Andres Freund <andres@anarazel.de> writes: > On 2016-09-12 11:29:37 -0400, Tom Lane wrote: >> I'm on board with disallowing SRFs in UPDATE, because it produces >> underdetermined and unspecified results; but the other restriction >> seems 100% arbitrary. There is no semantic difference between >> SELECT a, b FROM ... ORDER BY srf(); >> and >> SELECT a, b, srf() FROM ... ORDER BY 3; >> except that in the first case the ordering column doesn't get returned to >> the client. I do not see why that's so awful that we should make it fail >> after twenty years of allowing it. > I do think it's awful that an ORDER BY / GROUP BY changes the number of > rows processed. This should never have been allowed. Meh. That's just an opinion, and it's a bit late to be making such changes. I think the general consensus of the previous discussion was that we would preserve existing tSRF behavior as far as it was reasonably practical to do so, with the exception that there's wide agreement that the least-common-multiple rule for number of rows emitted is bad. I do not think you're going to get anywhere near that level of agreement that a SRF appearing only in ORDER BY is bad. regards, tom lane
Commits
-
Remove obsoleted code relating to targetlist SRF evaluation.
- ea15e18677fc 10.0 landed
-
Doc: improve documentation of new SRF-in-tlist behavior.
- f13a1277aa2d 10.0 landed
-
Move targetlist SRF handling from expression evaluation to new executor node.
- 69f4b9c85f16 10.0 landed
-
Don't split up SRFs when choosing to postpone SELECT output expressions.
- d543170f2fdd 9.6.0 cited