| From: | Joe Conway <mail(at)joeconway(dot)com> | 
|---|---|
| To: | pgsql-patches(at)postgresql(dot)org | 
| Subject: | SRF patch (was Re: [HACKERS] troubleshooting pointers) | 
| Date: | 2002-05-11 01:45:27 | 
| Message-ID: | 3CDC77B7.3000807@joeconway.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers pgsql-patches | 
Tom Lane wrote:
> Um.  I don't like that; it assumes not only that ExecutorEnd is the only
> kind of callback needed, but also that there is at most one function
> per ExprContext that needs a shutdown callback.  Neither of these
> assumptions hold water IMO.
> 
> The design I had in mind was more like this: add to ExprContext a list
> header field pointing to a list of structs along the lines of
> 
> 	struct exprcontext_callback {
> 		struct exprcontext_callback *next;
> 		void (*function) (Datum);
> 		Datum arg;
> 	}
> 
> and then call each specified function with given argument during
> FreeExprContext.  Probably ought to be careful to do that in reverse
> order of registration.  We'd also need to invent a RescanExprContext
> operation to call the callbacks during a Rescan.  The use of Datum
> (and not, say, void *) as PG's standard callback arg type was settled on
> some time ago --- originally for on_proc_exit IIRC --- and seems to have
> worked well enough.
Here's the patch, per my post to HACKERS.
It builds cleanly on my dev box, and passes all regression tests.
Thanks,
Joe
| Attachment | Content-Type | Size | 
|---|---|---|
| srf.2002.05.10.1.patch.gz | application/x-gzip | 23.9 KB | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2002-05-11 02:07:36 | Re: troubleshooting pointers | 
| Previous Message | Joe Conway | 2002-05-11 01:40:57 | Re: troubleshooting pointers | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2002-05-11 02:07:36 | Re: troubleshooting pointers | 
| Previous Message | Joe Conway | 2002-05-11 01:40:57 | Re: troubleshooting pointers |