Bruce Momjian wrote:
Heikki, I found something odd in your patch. You had an extra parentheses at the end of the line in the orginal and new version of the patch (attached). I removed it before applying, but I just wanted to confirm this was OK.
Looking at the CVS history, it looks like Tom changed that piece of code recently in this commit:
revision 1.110 date: 2007-01-30 22:05:12 +0000; author: tgl; state: Exp; lines: +88 -21; Repair oversights in the mechanism used to store compiled plpgsql functions. The original coding failed (tried to access deallocated memory) if there were two active call sites (fn_extra pointers) for the same function and the function definition was updated. Also, if an update of a recursive function was detected upon nested entry to the function, the existing compiled version was summarily deallocated, resulting in crash upon return to the outer instance. Problem observed while studying a bug report from Sergiy Vyshnevetskiy. Bug does not exist before 8.1 since older versions just leaked the memory of obsoleted compiled functions, rather than trying to reclaim it.
Note that the condition in the if-clause is now the other way round, and the delete_function call is now in the else-branch. Did you get that right in your commit?
-- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings