De uitleg van @A.H is nauwkeurig voor PostgreSQL 9.1 of ouder . Het is dus van toepassing op de OP, die de verouderde versie 8.3 gebruikt.
Echter, PostgreSQL 9.2 bracht een substantiële update op dit gebied. PL/pgSQL-functies zijn een stuk slimmer geworden over wanneer ze opnieuw moeten plannen. Ik citeer de release-opmerkingen voor 9.2 hier
Vetgedrukte nadruk van mij.
Ergo:Een oplossing voor de OP zou zijn om te upgraden naar PostgreSQL 9.2+ en alles zou gewoon automatisch goed moeten werken.