| From: | Peter Geoghegan <pg(at)bowt(dot)ie> |
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
| Subject: | pgsql: Unset SK_SEARCHARRAY when inequality arrays degenerate. |
| Date: | 2026-10-14 21:33:14 |
| Message-ID: | E1xH6b4-00000001eAp-3hbd@gemulon.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
Unset SK_SEARCHARRAY when inequality arrays degenerate.
Initial array-specific preprocessing in _bt_preprocess_array_keys
transforms inequality strategy SK_SEARCHARRAY scan keys into simple
scalar scan keys, whose sk_argument contains the array's most
restrictive element. The transformed keys nevertheless retained their
SK_SEARCHARRAY markings. This approach left it up to everybody else to
determine whether any given SK_SEARCHARRAY-marked key was an equality
strategy key (which actually has an array) or an inequality key (which
no longer has one).
Simplify things by teaching preprocessing to unset SK_SEARCHARRAY from
the flags for inequality scan keys, at the point where it already sets
the key's sk_argument to a simple scalar datum. This makes it safe for
code that runs after array preprocessing to assume that any key marked
SK_SEARCHARRAY must be an equality key.
This also fixes a minor inconsistency: _bt_advance_array_keys's precheck
of the least significant key was skipped when that key came from a SAOP
inequality, even though we were willing to apply that optimization given
an inequality that had a scalar argument before preprocessing.
Author: Peter Geoghegan <pg(at)bowt(dot)ie>
Discussion: https://postgr.es/m/CAH2-WznnuUH-fH84d60UHmDo4rO0Mio4_8DGvhxBo1yL0EwPng@mail.gmail.com
Discussion: https://postgr.es/m/CAH2-Wznvj74CAwVydAs_Lh1hR3PGi_aN1s7BiRKE0iJYNdoixQ%40mail.gmail.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/1d45c5da3a0ad22b8e172da352ed25bd70a2253a
Modified Files
--------------
src/backend/access/nbtree/nbtpreprocesskeys.c | 28 ++++++++---------
src/backend/access/nbtree/nbtreadpage.c | 45 +++++++++++++--------------
2 files changed, 36 insertions(+), 37 deletions(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2026-10-14 22:45:48 | pgsql: btree_gin: Fix timestamp-vs-timestamptz comparisons near DST bou |
| Previous Message | Tom Lane | 2026-10-14 20:38:24 | pgsql: Fix self-join elimination to avoid inheritance scans. |