Primeiro, você deve alterar
relocatable
para false
no arquivo de controle da extensão. Fora isso, a recomendação que você recebeu é parcialmente razoável e parcialmente absurda.
Você deve definir suas funções assim:
CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];
Em seguida, o
search_path
é fixado em pg_catalog
, pg_temp
e seu esquema de extensão durante a chamada da função. Isso significa que todo acesso a objetos sem um esquema explícito só pesquisará nesses esquemas. Então você não precisa se preocupar em qualificar explicitamente tudo na função com
@[email protected]
, e você pode usar operadores sem se preocupar, porque search_path
aplica-se também aos operadores. (Você também pode qualificar operadores de esquema:OPERATOR(schema.+)
, mas isso é obviamente doloroso e prejudica a legibilidade.)