Najpierw musisz zmienić relocatable
na false
w pliku kontrolnym rozszerzenia.
Poza tym otrzymana rekomendacja jest częściowo rozsądna, a częściowo bezsensowna.
Powinieneś zdefiniować swoje funkcje w następujący sposób:
CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];
Następnie search_path
jest naprawione na pg_catalog
, pg_temp
i twój schemat rozszerzenia na czas trwania wywołania funkcji. Oznacza to, że każdy dostęp do obiektów bez wyraźnego schematu będzie przeszukiwał tylko te schematy.
Wtedy nie musisz się martwić o jawną kwalifikację wszystkiego w funkcji za pomocą @[email protected]
i możesz używać operatorów bez obaw, ponieważ search_path
dotyczy również operatorów. (Możesz również zakwalifikować operatory do schematu:OPERATOR(schema.+)
, ale jest to oczywiście bolesne i pogarsza czytelność.)