O plano de consulta para consultas ad hoc não em cache, apenas para instruções preparadas . E as funções PL/pgSQL lidam com todas as instruções SQL como instruções preparadas internamente. (Com a notável exceção do SQL dinâmico com
EXECUTE
.) Cada um para o escopo da sessão atual, não além. Portanto, funções PL/pgSQL (não funções SQL!) podem ajudar na execução repetida de consultas sofisticadas na mesma sessão. Assim como declarações preparadas.
O software cliente pode estar usando instruções preparadas por padrão. Ou o protocolo de "consulta estendida" , com o mesmo efeito.
Relacionado:
A resposta relacionada que começou o encadeamento no pgsql-general você está se referindo a:
Considere também o capítulo Planejar cache para PL/pgSQL no manual.