sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo hacer que una extensión no sea reubicable?

Primero, debe cambiar relocatable a false en el archivo de control de la extensión.

Aparte de eso, la recomendación que recibiste es en parte razonable y en parte absurda.

Deberías definir tus funciones así:

CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];

Luego la search_path está fijo en pg_catalog , pg_temp y su esquema de extensión durante la duración de la llamada a la función. Eso significa que todos los accesos a objetos sin un esquema explícito solo buscarán en estos esquemas.

Entonces no tiene que preocuparse por calificar explícitamente todo en la función con @[email protected] , y puedes usar operadores sin tener que preocuparte, porque search_path se aplica a los operadores también. (También puede calificar operadores de esquema:OPERATOR(schema.+) , pero eso obviamente es doloroso y daña la legibilidad).