Добрый день! Может кто-нибудь подсказать, как postgres решает, когда использовать кэшированное значение immutable-функции, а когда нужно вычислять. Параметры вызова всегда одни и те же. Ни разу не удалось наблюдать возврат кэшированного значения, функция всегда вычисляется. Может, настройку какую-то нужно включить? Воспроизводится на простейшей функции, например:
create function check_cache(id uuid) returns int
as 'select 222 from pg_sleep(5);' language sql immutable;
Вызываю с одним и тем же параметром, например:
select check_cache('c9a77d55-d664-415f-bac0-c49701018b07');
select check_cache('c9a77d55-d664-415f-bac0-c49701018b07');
select check_cache('c9a77d55-d664-415f-bac0-c49701018b07');
Результат функции всегда один и тот же, но кэширование не срабатывает, и каждый вызов спит 5 сек.