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  (Michael Lang <mike.lang1010@gmail.com>)
Список 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 по дате отправления:

Предыдущее
От: Michael Lang
Дата:
Сообщение: Re: BUG #13799: Unexpected multiple exection of user defined function with out parameters
Следующее
От: Peter Geoghegan
Дата:
Сообщение: Re: Incorrect UPDATE trigger invocation in the UPDATE clause of an UPSERT statement.