Først skal du ændre relocatable
til false
i udvidelsens kontrolfil.
Bortset fra det er den anbefaling, du fik, dels fornuftig og dels nonsens.
Du bør definere dine funktioner sådan her:
CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];
Derefter search_path
er rettet til pg_catalog
, pg_temp
og dit udvidelsesskema i funktionskaldets varighed. Det betyder, at al adgang til objekter uden et eksplicit skema kun vil søge i disse skemaer.
Så behøver du ikke bekymre dig om eksplicit at kvalificere alt i funktionen med @[email protected]
, og du kan bruge operatorer uden at skulle bekymre dig, fordi search_path
gælder også for operatører. (Du kan også skemakvalificere operatorer:OPERATOR(schema.+)
, men det er naturligvis smertefuldt og skader læsbarheden.)