Re: Fully documenting the design of nbtree row comparison scan keys

Victor Yegorov <vyegorov@gmail.com>

From: Victor Yegorov <vyegorov@gmail.com>
To: Peter Geoghegan <pg@bowt.ie>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-10-31T09:06:45Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Document nbtree row comparison design.

  2. Make row compares robust during nbtree array scans.

  3. Fix incorrect handling of NULL index entries in indexed ROW() comparisons.

пт, 31 окт. 2025 г. в 00:35, Peter Geoghegan <pg@bowt.ie>:

> I didn't understand every nuance of row compare inequalities myself
> until quite recently. The rules with NULLs are particularly tricky.
>
> It seems worthwhile to clear things up now in large part due to the
> recent addition of code in places like _bt_advance_array_keys -- code
> that wants to to treat row compare keys as if they were just a simple
> scalar inequality on the row compare's most significant column. That
> general behavior isn't new (e.g., _bt_first has long ignored row
> compare scan key markings when deducing a NOT NULL constraint), but
> it's not easy to see why it's correct.
>

Greetings.

I took a look at the patch. Proposed comments look highly valuable,
especially around NULLs, doesn't look immediately obvious, so
definitely requires a comment.
Looks good to commit.

Wouldn't it be good to add such information also into the user
documentation, say into
https://www.postgresql.org/docs/current/functions-comparisons.html#ROW-WISE-COMPARISON
?

-- 
Victor Yegorov