Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling)
От | David G. Johnston |
---|---|
Тема | Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) |
Дата | |
Msg-id | CAKFQuwY+G97xii4F_2ZxSFxN0CTYDWeXFp3BiB_Cb7aGgmSFdw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling)
|
Список | pgsql-hackers |
I wrote:
> I'll try to write something about the SRF-in-CASE issue too. Seeing
> whether we can document that adequately seems like an important part
> of making the decision about whether we need to block it.
Here's what I came up with:
This behavior also means that set-returning functions will be evaluated
even when it might appear that they should be skipped because of a
conditional-evaluation construct, such as CASE or COALESCE. For example,
consider
SELECT x, CASE WHEN x > 0 THEN generate_series(1, 5) ELSE 0 END FROM tab;
It might seem that this should produce five repetitions of input rows
that have x > 0, and a single repetition of those that do not; but
actually it will produce five repetitions of every input row.
So is this too ugly to live, or shall we put up with it?
Disallowing such an unlikely, and un-intuitive, corner-case strikes my sensibilities.
I'd rather fail now and allow for the possibility of future implementation of the "it might seem that..." behavior.
David J.
В списке pgsql-hackers по дате отправления: