Nicola Pero <n.pero@mi.flashnet.it> writes:
> I've been experiencing data corruption/loss in Postgresql 7.4.2.
> I tracked this down to altering tables. After I alter a table, I get data loss
> (fields becoming NULL with no reason!) unless I restart immediately the
> database server.
The problem shown in your example is simply that the UPDATE in the
plpgsql function has cached a plan that applies to the original format
of the table. You don't need to restart the server, but you do need to
start a fresh session to get rid of the obsolete cached plan.
There's a TODO item to cause cached plans to be flushed automatically
when a table changes, but I don't know when it will get done (not for
8.0, for sure).
regards, tom lane