Tom Lane said:
> "John Sidney-Woollett" <johnsw@wardbrook.com> writes:
>> Please can someone explain why Postgres cannot recognize that objects
>> (referenced by pl/pgsql functions) whose OID no longer exists could in
>> fact be found (as new objects) if the function was reparsed and compiled
>> again.
>
> Criticism in the form of a patch would be useful.
I know but I don't have the expertise to do that - I was only trying to
raise the issue... :)
>> Whenever you delete an object, you locate any functions (or other
>> objects)
>> referencing that object's OID, and you mark them as invalid, and any
>> subsequent objects that now refer to the newly invalidated object(s).
>
> Yup, this is on the TODO list, and has been for awhile:
>
> * Flush cached query plans when their underlying catalog data changes
Is the query plan cached for the life of the session, or the life of the
cache/database/postmaster session?
Isn't removing the plan from the cache, and marking objects invalid two
separate although related issues?
>> I don't know, but cannot believe that it would be hard to implement
>> this,
>
> Step right up ...
Believe you me, you don't want my code - it's been quite a few years since
I've done any C programming, a patch I produced might set Postgres back 5
years!!
BTW, I was only highlighting the issue because the missing OID message bit
me in the ass again today, and I didn't realise that it existed as an
outstanding todo item.
I guess that there are other missing features like exception handling and
nested transactions which are more important and need attention more
urgently...
John Sidney-Woollett