Първо, трябва да промените relocatable до false в контролния файл на разширението.
Освен това препоръката, която получихте, е отчасти разумна и отчасти глупост.
Трябва да дефинирате функциите си по следния начин:
CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @example@sqldat.com;
След това search_path е фиксиран към pg_catalog , pg_temp и вашата схема на разширението за продължителността на извикването на функцията. Това означава, че целият достъп до обекти без изрична схема ще търси само в тези схеми.
Тогава не е нужно да се притеснявате за изричното квалифициране на всичко във функцията с @example@sqldat.com , и можете да използвате оператори, без да се притеснявате, защото search_path важи и за операторите. (Можете също така да квалифицирате по схема оператори:OPERATOR(schema.+) , но това очевидно е болезнено и вреди на четливостта.)