Re: Nested CASE-WHEN scoping

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Nested CASE-WHEN scoping
Дата
Msg-id 25826.1308257790@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Nested CASE-WHEN scoping  (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>)
Ответы Re: Nested CASE-WHEN scoping  (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>)
Список pgsql-hackers
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
> The complicated part is to ensure that levelsup is always set correctly. 
> At parse time, levelsup is always set to 0, as the syntax doesn't allow 
> referencing upper levels directly. When an SQL function is inlined, any 
> ExpressionParams in the expressions that are substituted for Params need 
> to have their levelsup adjusted, so that it still refers to the right 
> value if there's CASE expressions in the inlined function. Also, when an 
> ExpressionParam is replaced with a Const, the levelsup fields of any 
> other ExpressionParams within the CaseExpr referring to higher levels 
> need to have their levelsup decremented to account for the fact that the 
> CaseExpr doesn't push the expression parameter anymore.

I believe this is an unworkably complex, and almost certainly buggy
Rube Goldberg device.  Even if it manages to work today, it's going to
be impossible to maintain those levelsup values correctly during
any sort of expression rearrangement or optimization.

Please take another look at just assigning a PARAM_EXEC parameter per
Case expression.
        regards, tom lane


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: gcc 4.6 -Wunused-but-set-variable
Следующее
От: Tom Lane
Дата:
Сообщение: Re: PATCH: CreateComments: use explicit indexing for ``values''