pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: David Rowley <drowley@postgresql.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Fix selectivity estimation integer overflow in contrib/intarray
Date: Sun, 04 Jan 2026 07:33:07 +0000
Message-ID: <E1vcIbq-004OOE-07@gemulon.postgresql.org> (raw)

Fix selectivity estimation integer overflow in contrib/intarray

This fixes a poorly written integer comparison function which was
performing subtraction in an attempt to return a negative value when
a < b and a positive value when a > b, and 0 when the values were equal.
Unfortunately that didn't always work correctly due to two's complement
having the INT_MIN 1 further from zero than INT_MAX.  This could result
in an overflow and cause the comparison function to return an incorrect
result, which would result in the binary search failing to find the
value being searched for.

This could cause poor selectivity estimates when the statistics stored
the value of INT_MAX (2147483647) and the value being searched for was
large enough to result in the binary search doing a comparison with that
INT_MAX value.

Author: Chao Li <li.evan.chao@gmail.com>
Reviewed-by: David Rowley <dgrowleyml@gmail.com>
Discussion: https://postgr.es/m/CAEoWx2ng1Ot5LoKbVU-Dh---dFTUZWJRH8wv2chBu29fnNDMaQ@mail.gmail.com
Backpatch-through: 14

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/4f49e4b55e709e9aa758312da5b84bbbb674f30a

Modified Files
--------------
contrib/intarray/_int_selfuncs.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)



view thread (6+ messages)  latest in thread

Message-ID: <E1vcIbq-004OOE-07@gemulon.postgresql.org>
Permalink:  ../E1vcIbq-004OOE-07@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1vcIbq-004OOE-07@gemulon.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: drowley@postgresql.org, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: Fix selectivity estimation integer overflow in contrib/intarray
  In-Reply-To: <E1vcIbq-004OOE-07@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox