PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como tornar uma extensão não relocável?


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.)