pgsql: Unset SK_SEARCHARRAY when inequality arrays degenerate.

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(-)

Browse pgsql-committers by date

  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.