@A.H's forklaring er nøjagtig for PostgreSQL 9.1 eller ældre . Så det er anvendeligt for OP, som bruger den forældede version 8.3.
Dog PostgreSQL 9.2 bragte en væsentlig opdatering på dette område. PL/pgSQL-funktioner er blevet meget klogere på, hvornår de skal omplanlægges. Jeg citerer udgivelsesbemærkningerne for 9.2 her
Fed fremhævelse mine.
Ergo:Én løsning til OP ville være at opgradere til PostgreSQL 9.2+ og alt skulle bare fungere fint automatisk.