Nejprve musíte změnit relocatable
na false
v řídicím souboru rozšíření.
Kromě toho je doporučení, které jste dostali, částečně rozumné a částečně nesmyslné.
Své funkce byste měli definovat takto:
CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];
Poté search_path
je opraveno na pg_catalog
, pg_temp
a vaše schéma rozšíření po dobu trvání volání funkce. To znamená, že veškerý přístup k objektům bez explicitního schématu bude hledat pouze v těchto schématech.
Pak se nemusíte starat o to, abyste vše ve funkci výslovně kvalifikovali pomocí @[email protected]
a operátory můžete používat bez obav, protože search_path
platí i pro operátory. (Můžete také kvalifikovat operátory podle schématu:OPERATOR(schema.+)
, ale to je samozřejmě bolestivé a poškozuje to čitelnost.)