PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann man eine Erweiterung nicht verschiebbar machen?

Zuerst müssen Sie relocatable ändern auf false in der Steuerdatei der Erweiterung.

Abgesehen davon ist die Empfehlung, die Sie erhalten haben, teilweise vernünftig und teilweise Unsinn.

Sie sollten Ihre Funktionen wie folgt definieren:

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

Dann der search_path ist fest auf pg_catalog eingestellt , pg_temp und Ihr Erweiterungsschema für die Dauer des Funktionsaufrufs. Das bedeutet, dass alle Zugriffe auf Objekte ohne explizites Schema nur in diesen Schemas suchen.

Dann müssen Sie sich nicht darum kümmern, alles in der Funktion explizit mit @[email protected] zu qualifizieren , und Sie können Operatoren verwenden, ohne sich Sorgen machen zu müssen, da search_path gilt auch für Betreiber. (Sie können Operatoren auch schemaqualifizieren:OPERATOR(schema.+) , aber das ist offensichtlich schmerzhaft und beeinträchtigt die Lesbarkeit.)