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