sql >> Databáze >  >> RDS >> PostgreSQL

Jak zajistit, aby rozšíření nebylo přemístitelné?

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




  1. OPTION (RECOMPILE) je vždy rychlejší; Proč?

  2. Výhody NoSQL databází – Vše, co potřebujete vědět

  3. Vyplňte rozbalovací pole z tabulky mySQL v PHP

  4. Vnořený příkaz select v SQL Server