Först måste du ändra relocatable
till false
i tilläggets kontrollfil.
I övrigt är rekommendationen du fick dels rimlig och dels nonsens.
Du bör definiera dina funktioner så här:
CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];
Sedan search_path
är fixerad till pg_catalog
, pg_temp
och ditt tilläggsschema under funktionsanropets varaktighet. Det betyder att all åtkomst till objekt utan ett explicit schema endast kommer att söka i dessa scheman.
Då behöver du inte oroa dig för att uttryckligen kvalificera allt i funktionen med @[email protected]
, och du kan använda operatorer utan att behöva oroa dig, eftersom search_path
gäller även operatörer. (Du kan också schemakvalificera operatorer:OPERATOR(schema.+)
, men det är uppenbarligen smärtsamt och skadar läsbarheten.)