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 = @example@sqldat.com;
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í @example@sqldat.com 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.)