Re: Minmax indexes
Alvaro Herrera <alvherre@2ndquadrant.com>
From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Jaime Casanova <jaime@2ndquadrant.com>
Cc: Thom Brown <thom@linux.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2013-09-24T22:14:06Z
Lists: pgsql-hackers
Attachments
- minmax-4-incr.patch (text/x-diff) patch
Jaime Casanova wrote: > Found another problem with the this steps: > > create table t1 (i int); > create index idx_t1_i on t1 using minmax(i); > insert into t1 select generate_series(1, 2000000); > ERROR: could not read block 1 in file "base/12645/16397_vm": read > only 0 of 8192 bytes Thanks. This was a trivial off-by-one bug; fixed in the attached patch. While studying it, I noticed that I was also failing to notice extension of the fork by another process. I have tried to fix that also in the current patch, but I'm afraid that a fully robust solution for this will involve having a cached fork size in the index's relcache entry -- just like we have smgr_vm_nblocks. In fact, since the revmap fork is currently reusing the VM forknum, I might even be able to use the same variable to keep track of the fork size. But I don't really like this bit of reusing the VM forknum for revmap, so I've refrained from extending that assumption into further code for the time being. There was also a bug that we would try to initialize a revmap page twice during recovery, if two backends thought they needed to extend it; that would cause the data written by the first extender to be lost. This patch applies on top of the two previous incremental patches. I will send a full patch later, including all those fixes and the fix for the opr_sanity regression test. -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Commits
-
Refactor per-page logic common to all redo routines to a new function.
- f8f4227976a2 9.5.0 cited
-
Reduce use of heavyweight locking inside hash AM.
- 76837c1507cb 9.3.0 cited
-
Scan the buffer pool just once, not once per fork, during relation drop.
- ece01aae4792 9.2.0 cited
-
Major patch from Thomas Lockhart <Thomas.G.Lockhart@jpl.nasa.gov>
- 9e2a87b62db8 7.1.1 cited