Greg Stark <[EMAIL PROTECTED]> writes: > Tom Lane <[EMAIL PROTECTED]> writes: >> I'd be inclined to put the intelligence into heap_form_tuple and thereby >> avoid getting the TOAST code involved unless there are wide fields to >> deal with.
> And have heap_deform_tuple / heap_getattr palloc and memcpy the the datum on > the way out? Or wait until detoast time and then do it? No, heap_deform_tuple / heap_getattr are not responsible for palloc'ing anything, only for computing appropriate pointers into the tuple. Existing functions that use PG_DETOAST_DATUM would incur a palloc to produce a 4-byte-header version of a short-header datum. We could then work on modifying one function at a time to use some alternative macro that doesn't force a useless palloc, but the system wouldn't be broken meanwhile; and only the high-traffic functions would be worth fixing at all. The point I'm trying to get across here is to do things one small step at a time; if you insist on a "big bang" patch then it'll never get done. You might want to go back and review the CVS history for some other big changes like TOAST and the version-1 function-call protocol to see our previous uses of this approach. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match