mirror of
https://github.com/postgres/postgres.git
synced 2025-09-11 00:12:06 +03:00
Dissociate btequalimage() from interval_ops, ending its deduplication.
Under interval_ops, some equal values are distinguishable. One such pair is '24:00:00' and '1 day'. With that being so, btequalimage() breaches the documented contract for the "equalimage" btree support function. This can cause incorrect results from index-only scans. Users should REINDEX any btree indexes having interval-type columns. After updating, pg_amcheck will report an error for almost all such indexes. This fix makes interval_ops simply omit the support function, like numeric_ops does. Back-pack to v13, where btequalimage() first appeared. In back branches, for the benefit of old catalog content, btequalimage() code will return false for type "interval". Going forward, back-branch initdb will include the catalog change. Reviewed by Peter Geoghegan. Discussion: https://postgr.es/m/20231011013317.22.nmisch@google.com
This commit is contained in:
@@ -57,6 +57,6 @@
|
||||
*/
|
||||
|
||||
/* yyyymmddN */
|
||||
#define CATALOG_VERSION_NO 202310131
|
||||
#define CATALOG_VERSION_NO 202310141
|
||||
|
||||
#endif
|
||||
|
@@ -172,8 +172,6 @@
|
||||
{ amprocfamily => 'btree/interval_ops', amproclefttype => 'interval',
|
||||
amprocrighttype => 'interval', amprocnum => '3',
|
||||
amproc => 'in_range(interval,interval,interval,bool,bool)' },
|
||||
{ amprocfamily => 'btree/interval_ops', amproclefttype => 'interval',
|
||||
amprocrighttype => 'interval', amprocnum => '4', amproc => 'btequalimage' },
|
||||
{ amprocfamily => 'btree/macaddr_ops', amproclefttype => 'macaddr',
|
||||
amprocrighttype => 'macaddr', amprocnum => '1', amproc => 'macaddr_cmp' },
|
||||
{ amprocfamily => 'btree/macaddr_ops', amproclefttype => 'macaddr',
|
||||
|
@@ -50,7 +50,7 @@
|
||||
opfmethod => 'btree', opfname => 'integer_ops' },
|
||||
{ oid => '1977',
|
||||
opfmethod => 'hash', opfname => 'integer_ops' },
|
||||
{ oid => '1982',
|
||||
{ oid => '1982', oid_symbol => 'INTERVAL_BTREE_FAM_OID',
|
||||
opfmethod => 'btree', opfname => 'interval_ops' },
|
||||
{ oid => '1983',
|
||||
opfmethod => 'hash', opfname => 'interval_ops' },
|
||||
|
Reference in New Issue
Block a user