explicação de @A.H é preciso para PostgreSQL 9.1 ou anterior . Portanto, é aplicável ao OP, que está usando a versão desatualizada 8.3.
No entanto, o PostgreSQL 9.2 trouxe uma atualização substancial nesta área. As funções PL/pgSQL tornaram-se muito mais inteligentes sobre quando replanejar. Estou citando as notas da versão 9.2 aqui
Minha ênfase em negrito.
Ergo:Uma solução para o OP seria atualizar para o PostgreSQL 9.2+ e tudo deveria funcionar bem automaticamente.