Re: Minmax indexes

Thom Brown <thom@linux.com>

From: Thom Brown <thom@linux.com>
To: Jaime Casanova <jaime@2ndquadrant.com>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2013-09-17T08:30:12Z
Lists: pgsql-hackers
On 17 September 2013 07:20, Jaime Casanova <jaime@2ndquadrant.com> wrote:

> On Mon, Sep 16, 2013 at 3:47 AM, Thom Brown <thom@linux.com> wrote:
> > On 15 September 2013 01:14, Alvaro Herrera <alvherre@2ndquadrant.com>
> wrote:
> >>
> >> Hi,
> >>
> >> Here's a reviewable version of what I've dubbed Minmax indexes.
> >>
> > Thanks for the patch, but I seem to have immediately hit a snag:
> >
> > pgbench=# CREATE INDEX minmaxtest ON pgbench_accounts USING minmax (aid);
> > PANIC:  invalid xlog record length 0
> >
>
> fwiw, this seems to be triggered by ANALYZE.
> At least i can trigger it by executing ANALYZE on the table (attached
> is a stacktrace of a backend exhibiting the failure)
>
> Another thing is this messages i got when compiling:
> """
> mmxlog.c: In function ‘minmax_xlog_revmap_set’:
> mmxlog.c:161:14: warning: unused variable ‘blkno’ [-Wunused-variable]
> bufpage.c: In function ‘PageIndexDeleteNoCompact’:
> bufpage.c:1066:18: warning: ‘lastused’ may be used uninitialized in
> this function [-Wmaybe-uninitialized]
> """
>

I'm able to run ANALYSE manually without it dying:

pgbench=# analyse pgbench_accounts;
ANALYZE
pgbench=# analyse pgbench_accounts;
ANALYZE
pgbench=# create index minmaxtest on pgbench_accounts using minmax (aid);
PANIC:  invalid xlog record length 0

-- 
Thom

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>