Re: very frustrating feature-bug - Mailing list pgsql-sql

From Jasen Betts
Subject Re: very frustrating feature-bug
Date
Msg-id hlghmo$3g2$2@reversiblemaps.ath.cx
Whole thread Raw
In response to very frustrating feature-bug  (silly sad <sad@bankir.ru>)
Responses Re: very frustrating feature-bug
List pgsql-sql
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;
 



pgsql-sql by date:

Previous
From: silly sad
Date:
Subject: very frustrating feature-bug
Next
From: silly sad
Date:
Subject: Re: very frustrating feature-bug