Re: Building infrastructure for B-Tree deduplication that recognizes when opclass equality is also equivalence
Peter Geoghegan <pg@bowt.ie>
From: Peter Geoghegan <pg@bowt.ie>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
Date: 2019-08-25T21:55:08Z
Lists: pgsql-hackers
On Sun, Aug 25, 2019 at 2:40 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > I was thinking of stashing an "equality is precise" flag in the > > metapage of each nbtree index, since we will only determine this once, > > at CREATE INDEX time. > > Sure. I suppose that we'd add something new to CREATE OPERATOR CLASS to make this work? My instinct is to avoid adding things that are only meaningful for a single AM to interfaces like CREATE OPERATOR CLASS, but the system already has numerous dependencies on B-Tree opclasses that seem comparable to me. There is a single case where nbtree stores a type that differs from the type actually being indexed by the operator class: the "name" case, where the underlying storage type is actually cstring. I'm not sure whether or not this needs to be treated as its own kind of special case. I suppose that we can ignore it completely, because we're not directly concerned with the physical representation used within an index. In fact, a major goal for this new infrastructure is that nbtree gets to fully own the representation (it just needs to know about the high level or logical requirements). -- Peter Geoghegan
Commits
-
Add equalimage B-Tree support functions.
- 612a1ab76724 13.0 landed
-
Make _bt_keep_natts_fast() use datum_image_eq().
- 1f55ebae2722 13.0 landed
-
Teach datum_image_eq() about cstring datums.
- 8c951687f58a 13.0 landed
-
Fix optimization of foreign-key on update actions
- 1ffa59a85cb4 12.0 cited
-
Support all SQL:2011 options for window frame clauses.
- 0a459cec96d3 11.0 cited
-
Create a "sort support" interface API for faster sorting.
- c6e3ac11b60a 9.2.0 cited