Обсуждение: very frustrating feature-bug

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

very frustrating feature-bug

От
silly sad
Дата:
acc=>

CREATE OR REPLACE FUNCTION add_user (TEXT, TEXT, TEXT, TEXT)
RETURNS usr AS $$  INSERT INTO usr (login,pass,name,email) VALUES ($1,$2,$3,$4)  RETURNING usr.*;
$$ LANGUAGE sql SECURITY DEFINER;

acc=>

ERROR:  return type mismatch in function declared to return usr
DETAIL:  Function's final statement must be a SELECT.
CONTEXT:  SQL function "add_user"

SURPRISE :-) SURPRISE :-)


Re: very frustrating feature-bug

От
Jasen Betts
Дата:
On 2010-02-17, silly sad <sad@bankir.ru> wrote:
>
> acc=>
>
> CREATE OR REPLACE FUNCTION add_user (TEXT, TEXT, TEXT, TEXT)
> RETURNS usr AS $$
>    INSERT INTO usr (login,pass,name,email) VALUES ($1,$2,$3,$4)
>    RETURNING usr.*;
> $$ LANGUAGE sql SECURITY DEFINER;
>
> acc=>
>
> ERROR:  return type mismatch in function declared to return usr
> DETAIL:  Function's final statement must be a SELECT.
> CONTEXT:  SQL function "add_user"
>
> SURPRISE :-) SURPRISE :-)

SQL functions are inlined when invoked, and so must be valid subselects.

rewrite it in plpgsql.
CREATE OR REPLACE FUNCTION add_user (TEXT, TEXT, TEXT, TEXT)RETURNS usr AS $$DECLARE  retval usr;BEGIN   INSERT INTO
usr(login,pass,name,email) VALUES ($1,$2,$3,$4)   RETURNING usr.* INTO retval;   RETURN retval;END;$$ LANGUAGE PLPGSQL
SECURITYDEFINER;
 



Re: very frustrating feature-bug

От
silly sad
Дата:
On 02/17/10 13:51, Jasen Betts wrote:
> On 2010-02-17, silly sad<sad@bankir.ru>  wrote:
>>
>> acc=>
>>
>> CREATE OR REPLACE FUNCTION add_user (TEXT, TEXT, TEXT, TEXT)
>> RETURNS usr AS $$
>>     INSERT INTO usr (login,pass,name,email) VALUES ($1,$2,$3,$4)
>>     RETURNING usr.*;
>> $$ LANGUAGE sql SECURITY DEFINER;
>>
>> acc=>
>>
>> ERROR:  return type mismatch in function declared to return usr
>> DETAIL:  Function's final statement must be a SELECT.
>> CONTEXT:  SQL function "add_user"
>>
>> SURPRISE :-) SURPRISE :-)
>
> SQL functions are inlined when invoked, and so must be valid subselects.
>
> rewrite it in plpgsql.

thanx for advice.

may i ask? when this feature will be fixed?
(now i am using 8.3.9)



Re: very frustrating feature-bug

От
Pavel Stehule
Дата:
2010/2/17 silly sad <sad@bankir.ru>:
> On 02/17/10 13:51, Jasen Betts wrote:
>>
>> On 2010-02-17, silly sad<sad@bankir.ru>  wrote:
>>>
>>> acc=>
>>>
>>> CREATE OR REPLACE FUNCTION add_user (TEXT, TEXT, TEXT, TEXT)
>>> RETURNS usr AS $$
>>>    INSERT INTO usr (login,pass,name,email) VALUES ($1,$2,$3,$4)
>>>    RETURNING usr.*;
>>> $$ LANGUAGE sql SECURITY DEFINER;
>>>
>>> acc=>
>>>
>>> ERROR:  return type mismatch in function declared to return usr
>>> DETAIL:  Function's final statement must be a SELECT.
>>> CONTEXT:  SQL function "add_user"
>>>
>>> SURPRISE :-) SURPRISE :-)
>>
>> SQL functions are inlined when invoked, and so must be valid subselects.
>>
>> rewrite it in plpgsql.
>
> thanx for advice.
>
> may i ask? when this feature will be fixed?
> (now i am using 8.3.9)
>

please, report it as bug to pgsql-bugs

Regards
Pavel Stehule

>
> --
> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-sql
>


Re: very frustrating feature-bug

От
Tom Lane
Дата:
silly sad <sad@bankir.ru> writes:
> may i ask? when this feature will be fixed?
> (now i am using 8.3.9)

The example works fine for me in 8.4.
        regards, tom lane


Re: very frustrating feature-bug

От
Achilleas Mantzios
Дата:
Στις Wednesday 17 February 2010 17:27:11 ο/η Tom Lane έγραψε:
> silly sad <sad@bankir.ru> writes:
> > may i ask? when this feature will be fixed?
> > (now i am using 8.3.9)
>
> The example works fine for me in 8.4.

Same for me,
postgres@smadevnew:~>
postgres@smadevnew:~> psql
psql (8.4.1)
Type "help" for help.

dynacom=# CREATE OR REPLACE FUNCTION add_user (TEXT, TEXT, TEXT, TEXT)
dynacom-# RETURNS usr AS $$
dynacom$#    INSERT INTO usr (login,pass,name,email) VALUES ($1,$2,$3,$4)
dynacom$#    RETURNING usr.*;
dynacom$# $$ LANGUAGE sql SECURITY DEFINER;
CREATE FUNCTION
dynacom=#
dynacom=#


>
>             regards, tom lane
>



--
Achilleas Mantzios