Re: plan invalidation vs stored procedures - Mailing list pgsql-hackers

From Marko Kreen
Subject Re: plan invalidation vs stored procedures
Date
Msg-id e51f66da0808061142t69bbb281jf10e1dde14a18e0f@mail.gmail.com
Whole thread Raw
In response to Re: plan invalidation vs stored procedures  ("Merlin Moncure" <mmoncure@gmail.com>)
Responses Re: plan invalidation vs stored procedures  (Dimitri Fontaine <dfontaine@hi-media.com>)
List pgsql-hackers
On 8/6/08, Merlin Moncure <mmoncure@gmail.com> wrote:
> On Wed, Aug 6, 2008 at 2:28 PM, Marko Kreen <markokr@gmail.com> wrote:
>  > On 8/6/08, Merlin Moncure <mmoncure@gmail.com> wrote:
>  >> On Wed, Aug 6, 2008 at 2:20 AM, Marko Kreen <markokr@gmail.com> wrote:
>  >>  > But the main problem is that if the DROP/CREATE happens, the failure
>  >>  > mode is very nasty - you get permanent error on existing backends.
>  >>  > (Main case I'm talking about is functions calling other functions.)
>  >>  >
>  >>  > Some sorta recovery mode would be nice to have, it does not even
>  >>  > need function perfectly.  Giving error once and then recover would
>  >>  > be better than requiring manual action from admin.
>  >>
>  >> sure -- this a known issue --,  but the point is that there are not
>  >>  that many reasons why you have to drop/create a function if you are
>  >>  careful.  hiding function prototypes is actually pretty powerful
>  >>  although you have to deal with creating the extra types.
>  >
>  > Um.  If you are talking about about returning type defined by CREATE TYPE
>  > then you are wrong as changing type requires DROP+CREATE for both type
>  > and function.
>
> you missed the point...if your return type is a composite type that is
>  backed by the table (CREATE TABLE, not CREATE TYPE), then you can
>  'alter' the type by altering the table.  This can be done without full
>  drop recreate of the function.

Yes, although I suspect it works by accident and can lead to crash
with creative use. (eg. plpgsql 'record' cache, any PL's rettype cache
are not invalidated when doing the ALTER TABLE)

But you missed my point: if you don't have functions backed by table,
the DROP+CREATE results in inappropriate behaviour that can be avoided.

-- 
marko


pgsql-hackers by date:

Previous
From: "Asko Oja"
Date:
Subject: Re: plan invalidation vs stored procedures
Next
From: Tom Lane
Date:
Subject: Re: Status of DISTINCT-by-hashing work