

> -----Original Message-----
> From: Jan Wieck [mailto:janwieck@yahoo.com] 
> Sent: 11 February 2002 19:36
> To: jm.poure@freesurf.fr
> Cc: Andrew Sullivan; PostgreSQL general list; 
> pgsql-hackers@postgresql.org
> Subject: Re: [GENERAL] [HACKERS] Feature enhancement request 
> : use of libgda
> 
> 
> Jean-Michel POURE wrote:
> >
> > CREATE OR REPLACE VIEW / TRIGGER and ALTER TABLE DROP 
> COLUMN are real 
> > priorities for us at pgAdmin team 
> (http://pgadmin.postgresql.org). I 
> > don't know PostgreSQL internals, but it should take a few 
> days/weeks 
> > to an experienced hacker to add these features.
> 
> Jean-Michel,
> 
>     I think you underestimate the problem a little.
> 
>     Doing  CREATE OR REPLACE is not that trivial as you appear to
>     think.  The existing PL handlers (for PL/Tcl and PL/pgSQL  at
>     least)   identify   functions  by  their  pg_proc  OID.   The
>     functions body text is parsed only on the first call to  that
>     function during the entire session. So changing the functions
>     prosrc attribute after having called it already wouldn't take
>     effect until the next "session". But changing the OID as well
>     corrupts existing SPI plans in other functions plus rules.
> 
>     Now it might be possible to tell  your  function  handler  to
>     recompile that function at the next call without changing the
>     OID, but how do you tell the function  handlers  in  all  the
>     other  concurrently running backends to do so after finishing
>     their current transaction?

Bearing in mind that I know nearly nothing about internals here :), how
about storing a version number in pg_proc? CREATE OR REPLACE updates that,
and each backend notes it when first parsing the function. Future calls of
the function result in a check of the version, and re-parse if necessary.

I'm sure there's far more to this than I realise... :-)

Regards, Dave

Mon, 11 Feb 2002 20:32:56 -0000
Dave Page <dpage@vale-housing.co.uk>
Re: [HACKERS] Feature enhancement request : use of libg