Re: BUG #13798: Unexpected multiple exection of user defined function with out parameters
От | Tom Lane |
---|---|
Тема | Re: BUG #13798: Unexpected multiple exection of user defined function with out parameters |
Дата | |
Msg-id | 17257.1449601494@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: BUG #13798: Unexpected multiple exection of user defined function with out parameters (Kevin Grittner <kgrittn@gmail.com>) |
Ответы |
Re: BUG #13798: Unexpected multiple exection of user defined
function with out parameters
|
Список | pgsql-bugs |
Kevin Grittner <kgrittn@gmail.com> writes: > On Tue, Dec 8, 2015 at 10:24 AM, David G. Johnston > <david.g.johnston@gmail.com> wrote: >> While you've explained how to see what is happening it doesn't remove >> the POLA violation that has occurred here. > I tend to think of x.* as being something that is resolved at parse > analysis time, before any consideration is given to how to execute; > thus, when x is a function I didn't find it at all astonishing that > it resolved as above. As far as table references go, it's effectively required by the SQL spec that "tab.*" in a SELECT list is expanded to "tab.c1, tab.c2, etc" at parse time. (I draw this conclusion from the parts of the spec that say that tab.*'s meaning in a view referencing tab does not change if tab subsequently gains new columns.) It's definitely annoying that (foo()).* is expanded similarly; but to fix that we'd have to introduce an additional layer of evaluation into SELECT lists, and I think that might create some visible semantic oddities of its own. Between backwards-compatibility worries and the existence of the LATERAL workaround, it's unlikely we'll ever change this. I'm not sure how well this point is documented, though. Might be worth some effort in that direction. regards, tom lane
В списке pgsql-bugs по дате отправления: