Обсуждение: Re: [GENERAL] table column vs. out param [1:0]

Поиск
Список
Период
Сортировка

Re: [GENERAL] table column vs. out param [1:0]

От
Kristo Kaiv
Дата:

On 23.08.2007, at 11:55, Albe Laurenz wrote:
CREATE FUNCTION b(status OUT integer, status_text OUT text)
  LANGUAGE plpgsql STABLE STRICT AS
$$DECLARE
   RENAME status TO out_status;
   RENAME status_text TO out_status_text;
BEGIN
   SELECT status, status_text
      FROM a()
      INTO out_status, out_status_text;
   RETURN;
END;$$;

See
PLPGSQL-DECLARATION-RENAMING-VARS

Yours,
Laurenz Albe
Note: RENAME appears to be broken as of PostgreSQL 7.3. Fixing this is of low priority, since ALIAS covers most of the practical uses of RENAME.
Seems to work though. Could somebody please confirm/reject that this has been fixed?

Kristo Kaiv
http://kaiv.wordpress.com (PostgreSQL blog)


Re: [GENERAL] table column vs. out param [1:0]

От
Tom Lane
Дата:
Kristo Kaiv <kristo.kaiv@skype.net> writes:
> From http://www.postgresql.org/docs/current/static/plpgsql- 
> declarations.html#PLPGSQL-DECLARATION-RENAMING-VARS
> Note: RENAME appears to be broken as of PostgreSQL 7.3. Fixing this  
> is of low priority, since ALIAS covers most of the practical uses of  
> RENAME.
> Seems to work though. Could somebody please confirm/reject that this  
> has been fixed?

It "works" only for very small values of "works".  See the links in
the TODO item for it.
        regards, tom lane


Re: [GENERAL] table column vs. out param [1:0]

От
Kristo Kaiv
Дата:

On 27.08.2007, at 18:07, Tom Lane wrote:

Kristo Kaiv <kristo.kaiv@skype.net> writes:
declarations.html#PLPGSQL-DECLARATION-RENAMING-VARS
Note: RENAME appears to be broken as of PostgreSQL 7.3. Fixing this  
is of low priority, since ALIAS covers most of the practical uses of  
RENAME.
Seems to work though. Could somebody please confirm/reject that this  
has been fixed?

It "works" only for very small values of "works".  See the links in
the TODO item for it.

regards, tom lane
Tom, the TODO item says:

Server-Side Languages

  • PL/pgSQL
    • Fix RENAME to work on variables other than OLD/NEW

but it seems to already work. I have tested it on 8.2 and have not noticed any problems.

orderdb_test=# \df+ test
List of functions
-[ RECORD 1 ]-------+--------------------------
Schema              | public
Name                | test
Result data type    | text
Argument data types | i_a text, OUT asi text
Owner               | kristok
Language            | plpgsql
Source code         |
                    : DECLARE
                    : --    o_asi ALIAS FOR $2;
                    :     RENAME asi TO o_asi;
                    : BEGIN
                    :     select 32 into o_asi;
                    :     return;
                    : END;
                    :
Description         |

orderdb_test=# select * from test(123);
asi
-----
32
(1 row)

Kristo Kaiv
http://kaiv.wordpress.com (PostgreSQL blog)