Tenho uma função PostgreSQL:
CREATE OR REPLACE FUNCTION test()
RETURNS some_table
LANGUAGE sql STABLE STRICT SECURITY DEFINER
AS $function$
SELECT * FROM some_table ;
$function$;
Funciona muito bem e retorna registros some_table
como esperado. No entanto, se eu escrever exatamente a mesma consulta, exceto que adiciono um argumento opcional:
CREATE OR REPLACE FUNCTION test(arg VARCHAR DEFAULT NULL)
A função retorna um único resultado de:
null | null | null | null | null | null
Alguém pode explicar o porquê? Pelo que entendi, um argumento não usado ( especialmente um com um DEFAULT
) não deveria nem ter impacto na função ou em sua consulta.
De acordo com a documentação :
Observe que o
strict
parâmetro para funções sem argumentos não tem efeito.