On Wed, Jan 17, 2018 at 2:23 PM, Peter Geoghegan <p...@bowt.ie> wrote: > A complicating factor for this fix of mine is that mode_final() seems > to have its own ideas about tuple memory lifetime, over and above what > tuplesort_getdatum() explicitly promises, as can be seen here: > > /* > * Note: we *cannot* clean up the tuplesort object here, because the value > * to be returned is allocated inside its sortcontext. We could use > * datumCopy to copy it out of there, but it doesn't seem worth the > * trouble, since the cleanup callback will clear the tuplesort later. > */
> ISTM that either grouping sets or mode_final() must necessarily be > wrong, because each oversteps, and infers a different contract from > tuplesort tuple fetching routines (different assumptions about memory > contexts are made in each case). Only one can be right, unless it's > okay to have one rule for tuplesort_getdatum() and another for > tuplesort_gettupleslot() (which seems questionable to me). I still > think that grouping sets is right (and that mode_final() is wrong). Do > you? It would be nice to get an opinion on this mode_final() + tuplesort memory lifetime business from you, Tom. Note that you removed the quoted comment within be0ebb65, back in October. -- Peter Geoghegan