From: | Peter Geoghegan <pg(at)heroku(dot)com> |
---|---|
To: | Heikki Linnakangas <hlinnaka(at)iki(dot)fi> |
Cc: | Claudio Freire <klaussfreire(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Tuplesort merge pre-reading |
Date: | 2016-09-28 16:20:23 |
Message-ID: | CAM3SWZTY9hbuao792qmmfs6u3sk7Px=wwtS4azSsO_sF--B3-g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Sep 28, 2016 at 5:11 PM, Peter Geoghegan <pg(at)heroku(dot)com> wrote:
> This is why I never pursued batch memory for non-final merges. Isn't
> that what you're doing here? You're pretty much always setting
> "state->batchUsed = true".
Wait. I guess you feel you have to, since it wouldn't be okay to use
almost no memory per tape on non-final merges.
You're able to throw out so much code here in large part because you
give almost all memory over to logtape.c (e.g., you don't manage each
tape's share of "slots" anymore -- better to give everything to
logtape.c). So, with your patch, you would actually only have one
caller tuple in memory at once per tape for a merge that doesn't use
batch memory (if you made it so that a merge *could* avoid the use of
batch memory, as I suggest).
In summary, under your scheme, the "batchUsed" variable contains a
tautological value, since you cannot sensibly not use batch memory.
(This is even true with !state->tuples callers).
Do I have that right? If so, this seems rather awkward. Hmm.
--
Peter Geoghegan
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2016-09-28 16:26:29 | Re: "Some tests to cover hash_index" |
Previous Message | Peter Geoghegan | 2016-09-28 16:11:52 | Re: Tuplesort merge pre-reading |