Wednesday, May 6, 2015, Gunnar "Nick" Bluth <gunnar.bl...@pro-open.de>
wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> CREATE OR REPLACE FUNCTION
> public.get_current_tac(userid bigint, sessionid uuid, locale character
> varying, OUT current_tac json)
>  RETURNS json
>  LANGUAGE sql
>  IMMUTABLE STRICT SECURITY DEFINER
> AS $function$
> SELECT json_agg(selected) FROM (
>   SELECT * FROM (
>     SELECT *, 1 AS locale_specific FROM terms_and_conditions WHERE
> locale = $3 ORDER BY version DESC LIMIT 1
>   ) specific
> UNION
>   SELECT * FROM (
>     SELECT *, 0 AS locale_specific FROM terms_and_conditions WHERE
> locale = 'default' ORDER BY version DESC LIMIT 1
>   ) unspecific
> ORDER BY locale_specific DESC
> LIMIT 1
> ) selected;
> $function$
>
>
Also, I don't know why you would need "security definer" but defining the
functions as being "immutable" is a flat out lie.  Combined with your
misuse of "strict" I would suggest you read up on function creation and
usage in the documentation.

It also looks odd to define the OUT parameter along with "RETURNS json" -
unless it is giving you some kind of output column name benefit that I
cannot remember at the moment.

David J.

Reply via email to