Re: BRIN indexes - TRAP: BadArgument
Alvaro Herrera <alvherre@2ndquadrant.com>
From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Greg Stark <stark@mit.edu>
Cc: Heikki Linnakangas <hlinnakangas@vmware.com>,
Michael Paquier <michael.paquier@gmail.com>,
David Rowley <dgrowleyml@gmail.com>, Jeff Janes <jeff.janes@gmail.com>,
Robert Haas <robertmhaas@gmail.com>, Erik Rijkers <er@xs4all.nl>,
Emanuel Calvo <3manuek@esdebian.org>, Simon Riggs <simon@2ndquadrant.com>,
Nicolas Barbier <nicolas.barbier@gmail.com>,
Claudio Freire <klaussfreire@gmail.com>, Josh Berkus <josh@agliodbs.com>,
Andres Freund <andres@2ndquadrant.com>,
Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2014-11-11T02:14:02Z
Lists: pgsql-hackers
Greg Stark wrote: > There's another API question I have. To implement Consistent I need to > call the hash function which in the case of functions like hashtext > could be fairly expensive and I even need to generate multiple hash > values(though currently I'm slicing them all from the integer hash > value so that's not too bad) and then test each of those bits. It > would be natural to call hashtext once at the start of the scan and > possibly build a bitmap and compare all of them in a single & > operation. But afaict there's no way to hook the beginning of the scan > and opaque is not associated with the specific scan so I don't think I > can cache the hash value of the scan key there safely. Is there a good > way to do it with the current API? I'm not sure why you say opaque is not associated with the specific scan. Are you thinking we could reuse opaque for a future scan? I think we could consider that opaque *is* the place to cache things such as the hashed value of the qual constants or whatever. > On a side note I'm curious about something, I was stepping through the > my code in gdb and discovered that a single row insert appeared to > construct a new summary then union it into the existing summary > instead of just calling AddValue on the existing summary. Is that > intentional? What led to that? That's to test the Union procedure; if you look at the code, it's just used in assert-enabled builds. Now that I think about it, perhaps this can turn out to be problematic for your bloom filter opclass. I considered the idea of allowing the opclass to disable this testing procedure, but it isn't done (yet.) -- Á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