Re: PL/pgSQL RENAME functionality in TODOs

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: PL/pgSQL RENAME functionality in TODOs
Дата
Msg-id 8906.1170289705@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: PL/pgSQL RENAME functionality in TODOs  (imad <immaad@gmail.com>)
Ответы Re: PL/pgSQL RENAME functionality in TODOs  (imad <immaad@gmail.com>)
Список pgsql-hackers
imad <immaad@gmail.com> writes:
> OK, so renaming does not work in the same block.
> You can rename a vairable in a nested block and thats why it works for OLD/NEW.

> BTW, what is the purpose behind it? Declaring a variable in a block
> and quickly renaming it does not make sense to me.

I agree it's pretty useless; but if we're gonna forbid it then we should
throw a more sensible error than "syntax error".

Actually, it seems to me that it works in the nested-block case only for
rather small values of "work":

regression=# create function foo() returns int as $$
regression$# declare
regression$# x int := 1;
regression$# begin
regression$#  x := 2;
regression$#  declare
regression$#   rename x to y;
regression$#  begin
regression$#    y := 3;
regression$#  end;
regression$#  return x;
regression$# end$$ language plpgsql;
CREATE FUNCTION
regression=# select foo();
ERROR:  column "x" does not exist
LINE 1: SELECT  x               ^
QUERY:  SELECT  x
CONTEXT:  PL/pgSQL function "foo" line 10 at return
regression=#

Surely the variable's name should be x again after we're out of the
nested block?
        regards, tom lane


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

Предыдущее
От: elein
Дата:
Сообщение: Re: [GENERAL] 8.2.1 Compiling Error
Следующее
От: "Florian G. Pflug"
Дата:
Сообщение: Re: [GENERAL] 8.2.1 Compiling Error