Re: btree_gist: Fix NaN handling in float4 and float8 opclasses

From: Ewan Young <kdbase(dot)hack(at)gmail(dot)com>
To: Tender Wang <tndrwang(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: btree_gist: Fix NaN handling in float4 and float8 opclasses
Date: 2026-06-17 10:36:17
Message-ID: CAON2xHMrsUkWw6=ZfxA73dp1iBhr1r0aj=C0BwuE8dtE2DqsTQ@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Thanks Tender -- you're right, this is the same issue as #19501
(Man Zeng, 2026-05-29), which I missed before posting. Apologies for
the duplicate; let's consolidate on that thread.

On Wed, Jun 17, 2026 at 5:56 PM Tender Wang <tndrwang(at)gmail(dot)com> wrote:
>
> Ewan Young <kdbase(dot)hack(at)gmail(dot)com> 于2026年6月17日周三 16:40写道:
> >
> > Hi,
> >
> > A GiST index on a float4/float8 column (via btree_gist) can silently
> > omit rows containing NaN, returning different results from a sequential
> > scan:
> >
> > CREATE EXTENSION btree_gist;
> > CREATE TABLE t (a float8);
> > INSERT INTO t SELECT 1 FROM generate_series(1, 1000);
> > INSERT INTO t SELECT 'NaN' FROM generate_series(1, 1000);
> > CREATE INDEX ON t USING gist (a);
> >
> > SET enable_seqscan = on;
> > SELECT count(*) FROM t WHERE a = 'NaN'; -- 1000
> > SET enable_seqscan = off;
> > SELECT count(*) FROM t WHERE a = 'NaN'; -- 0 (wrong)
> >
>
> It seems the issue you reported is the same as [1].
> Please double-check.
>
> [1] https://www.postgresql.org/message-id/19501-3bff3bbc97f1e7c9%40postgresql.org
>
>
> --
> Thanks,
> Tender Wang

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Ilia Evdokimov 2026-06-17 10:48:15 Re: Show estimated number of groups for IncrementalSort in EXPLAIN
Previous Message Etsuro Fujita 2026-06-17 10:23:07 Re: use of SPI by postgresImportForeignStatistics