Per prima cosa, devi cambiare relocatable
a false
nel file di controllo dell'estensione.
A parte questo, la raccomandazione che hai ricevuto è in parte ragionevole e in parte priva di senso.
Dovresti definire le tue funzioni in questo modo:
CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];
Quindi il search_path
è fisso su pg_catalog
, pg_temp
e il tuo schema di estensione per la durata della chiamata alla funzione. Ciò significa che tutti gli accessi agli oggetti senza uno schema esplicito cercheranno solo in questi schemi.
Quindi non devi preoccuparti di qualificare esplicitamente tutto nella funzione con @[email protected]
e puoi usare gli operatori senza preoccuparti, perché search_path
vale anche per gli operatori. (Puoi anche qualificare lo schema agli operatori:OPERATOR(schema.+)
, ma è ovviamente doloroso e danneggia la leggibilità.)