Re: [HACKERS] Small improvement to compactify_tuples

Юрий Соколов <funny.falcon@gmail.com>

From: Юрий Соколов <funny.falcon@gmail.com>
To: Michael Paquier <michael.paquier@gmail.com>
Cc: Peter Geoghegan <pg@bowt.ie>, Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>, Claudio Freire <klaussfreire@gmail.com>, Robert Haas <robertmhaas@gmail.com>, Sokolov Yura <funny.falcon@postgrespro.ru>, Alvaro Herrera <alvherre@2ndquadrant.com>, Heikki Linnakangas <hlinnaka@iki.fi>, PostgreSQL-Dev <pgsql-hackers@postgresql.org>
Date: 2017-12-03T20:32:32Z
Lists: pgsql-hackers

Attachments

hi,

On Wed, Nov 29, 2017 at 8:00 AM, Peter Geoghegan <pg@bowt.ie> wrote:
> On Tue, Nov 28, 2017 at 2:41 PM, Andres Freund <andres@anarazel.de> wrote:
>> Maybe it's a stupid question. But would we still want to have this after
>> the change? These should be just specializations of the template version
>> imo.

"generic" version operates on bytes, and it will be a bit hard to combine
it with
templated version. Not impossible, but it will look ugly.

> I also wonder why regression test output has changed. Wasn't this
> supposed to be a mechanical change in how the templating is
> implemented? Why would the behavior of the algorithm change, even if
> the change is only a change in the output order among equal elements?

I did some change to algorithm then. But I reverted changes, and now no need
in test fixes.

> Also, is that one last raw CHECK_FOR_INTERRUPTS() in the template
> definition supposed to be there?

There was error. Fixed.

In attach fixed qsort_template version.
And version for compactify_tuples with bucket_sort and templated qsort.

With regards,
Sokolov Yura.

Commits

  1. Avoid looping through line pointers twice in PageRepairFragmentation().

  2. Reduce pinning and buffer content locking for btree scans.

  3. Speed up in-memory tuplesorting.