Re: Detection of nested function calls - Mailing list pgsql-hackers

From ktm@rice.edu
Subject Re: Detection of nested function calls
Date
Msg-id 20131028174500.GX2790@aart.rice.edu
Whole thread Raw
In response to Re: Detection of nested function calls  (Andres Freund <andres@2ndquadrant.com>)
List pgsql-hackers
On Mon, Oct 28, 2013 at 05:48:55PM +0100, Andres Freund wrote:
> On 2013-10-28 12:42:28 -0400, Tom Lane wrote:
> > Robert Haas <robertmhaas@gmail.com> writes:
> > > On Mon, Oct 28, 2013 at 11:12 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> > >> The idea I'm thinking about at the moment is that toast tokens of this
> > >> sort might each contain a function pointer to the required flattening
> > >> function.
> > 
> > > This might be OK, but it bloats the in-memory representation.  For
> > > small data types like numeric that might well be significant.
> > 
> > Meh.  If you don't include a function pointer you will still need the OID
> > of the datatype or the decompression function, so it's not like omitting
> > it is free.
> 
> That's what I thought at first too - but I am not sure it's actually
> true. The reason we need to include the toastrelid in varatt_externals
> (which I guess you are thinking of, like me) is that we need to be able
> to resolve "naked" Datums to their original value without any context.
> But at the locations where we'd need to call the memory
> representation->disk conversion function we should have a TupleDesc with
> type information, so we could lookup the needed information there.
> 
> > In any case, the design target here is for data values that
> > are going to be quite large, so an extra 4 bytes or whatever in the
> > reference object doesn't really seem to me to be something to stress
> > over.
> 
> I'd actually be happy if we can get this to work for numeric as well - I
> have seen several workloads where that's a bottleneck. Not that I am
> sure that the 8bytes for a pointer would be the problem there (in
> contrast to additional typecache lookups).
> 
> Greetings,
> 
> Andres Freund
> 
With the type information available, you could have a single lookup table
per backend with the function pointer so the space would be negligible
amortized over all of the datums of each type.

Regards,
Ken



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Detection of nested function calls
Next
From: Robert Haas
Date:
Subject: Re: RULE regression test fragility?