Re: Minmax indexes

Erik Rijkers <er@xs4all.nl>

From: "Erik Rijkers" <er@xs4all.nl>
To: "Alvaro Herrera" <alvherre@2ndquadrant.com>
Cc: "Pg Hackers" <pgsql-hackers@postgresql.org>
Date: 2013-11-11T09:35:15Z
Lists: pgsql-hackers

Attachments

On Mon, November 11, 2013 09:53, Erik Rijkers wrote:
> On Fri, November 8, 2013 21:11, Alvaro Herrera wrote:
>>
>> Here's a version 7 of the patch, which fixes these bugs and adds
>> opclasses for a bunch more types (timestamp, timestamptz, date, time,
>> timetz), courtesy of Martín Marqués.  It's also been rebased to apply
>> cleanly on top of today's master branch.
>>
>> I have also added a selectivity function, but I'm not positive that it's
>> very useful yet.
>>
>> [minmax-7.patch]
>
> The earlier errors are indeed fixed; now, I've been trying with the attached test case but I'm unable to find a query that
> improves with minmax index use.  (it gets used sometimes but speedup is negligable).
>

Another issue (I think):

Attached is a program (and output as a .txt file) that gives the following (repeatable) error:

$ ./casanova_test.sh
\timing on
                drop table if exists t1;
Time: 333.159 ms
                create table t1 (i int);
Time: 155.827 ms
                create index t1_i_idx on t1 using minmax(i);
Time: 204.031 ms
                insert into t1 select generate_series(1, 25000000);
Time: 126312.302 ms
        analyze t1;
ERROR:  could not truncate file base/21324/26339_vm to 41 blocks: it's only 1 blocks now
Time: 472.504 ms
[...]


Thanks,

Erik Rijkers

Commits

  1. Refactor per-page logic common to all redo routines to a new function.

  2. Reduce use of heavyweight locking inside hash AM.

  3. Scan the buffer pool just once, not once per fork, during relation drop.

  4. Major patch from Thomas Lockhart <Thomas.G.Lockhart@jpl.nasa.gov>