Re: Building infrastructure for B-Tree deduplication that recognizes when opclass equality is also equivalence
Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
From: Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Antonin Houska <ah@cybertec.at>, Peter Geoghegan <pg@bowt.ie>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-12-26T13:26:34Z
Lists: pgsql-hackers
24.12.2019 19:08, Alvaro Herrera wrote: >> @@ -106,6 +106,18 @@ CREATE OPERATOR CLASS <replaceable class="parameter">name</replaceable> [ DEFAUL >> </listitem> >> </varlistentry> >> >> + <varlistentry> >> + <term><literal>NOT BITWISE</literal></term> >> + <listitem> >> + <para> >> + If present, the operator class equality is not the same as equivalence. >> + For example, two numerics can compare equal but have different scales. >> + Most opclasses implement bitwise equal comparison, alternative behaviour >> + must be set explicitly. >> + </para> >> + </listitem> >> + </varlistentry> > Am I the only one bothered by the fact that this patch (and all > downstream discussion) reduces the term "bitwise equality" to simply > "bitwise"? It reads really strange to me, both in the resulting SQL > grammar as well as in struct names, code comments etc. "This operator > class is bitwise." > Thank you for pointing that out. Do you have any suggestions on how to name it better? Should it rather be "CREATE OPERATOR CLASS ... BITWISE EQUAL" ? In the recent version of the patch I also had a question, if it will be useful to do this option enum instead of boolean: > We can make this 'opcisbitwise' parameter enum (or char) instead of > boolean to mark > "always bitwise", "never bitwise" and "maybe bitwise". This decision will also affect the syntax. So I'd rather agree on that before updating syntax. Do you have an opinion on that? -- Anastasia Lubennikova Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
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