From: | Peter Geoghegan <pg(at)bowt(dot)ie> |
---|---|
To: | Peter Geoghegan <pg(at)heroku(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Robert Haas <robertmhaas(at)gmail(dot)com>, hlinnaka <hlinnaka(at)iki(dot)fi>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: tuplesort_gettuple_common() and *should_free argument |
Date: | 2017-03-14 01:14:07 |
Message-ID: | CAH2-Wzn-EFddFairDVtJSopb4N5YwKO69E8F=iOW5V9for3srg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Jan 25, 2017 at 3:11 PM, Peter Geoghegan <pg(at)heroku(dot)com> wrote:
> On Wed, Jan 25, 2017 at 3:11 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> Please. You might want to hit the existing ones with a separate patch,
>> but it doesn't much matter; I'd be just as happy with a patch that did
>> both things.
>
> Got it.
Attached is a patch that does both things at once. The internal
function tuplesort_gettuple_common() still mentions repeated fetches,
since that context matters to its internal callers. The various
external-facing functions have a simpler, stricter contract, as
discussed.
I didn't end up adding a line like "copy=FALSE is recommended only
when the next tuplesort manipulation will be another
tuplesort_gettupleslot fetch into the same slot", which you suggested.
When the tuplesort state machine is in any state following
"performing" a sort, there are very few remaining sane manipulations.
Just things like skipping or seeking around for tuples, and actually
ending the tuplesort and releasing resources.
--
Peter Geoghegan
Attachment | Content-Type | Size |
---|---|---|
0001-Avoid-copying-within-tuplesort_gettupleslot.patch | text/x-patch | 8.4 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Munro | 2017-03-14 01:16:51 | Updating the "tool sets" documentation for modern FreeBSD |
Previous Message | Andres Freund | 2017-03-14 01:11:04 | Re: WIP: Faster Expression Processing v4 |