Re: GiST multirange index scans can fail to return rows

From: Alexander Korotkov <aekorotkov(at)gmail(dot)com>
To: Kirill Reshke <reshkekirill(at)gmail(dot)com>
Cc: Andrey Borodin <x4mmm(at)yandex-team(dot)ru>, Peter Geoghegan <pg(at)bowt(dot)ie>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: GiST multirange index scans can fail to return rows
Date: 2026-08-02 20:11:50
Message-ID: CAPpHfdvXZAJQsSfAjXjEwTRPwBqLFpBx+vV=+SGNkVoG-AXDEw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sun, Aug 2, 2026 at 8:04 PM Kirill Reshke <reshkekirill(at)gmail(dot)com> wrote:
> On Sun, 2 Aug 2026 at 20:30, Alexander Korotkov <aekorotkov(at)gmail(dot)com> wrote:
> > On Sun, Aug 2, 2026 at 9:55 AM Andrey Borodin <x4mmm(at)yandex-team(dot)ru> wrote:
> > >
> > > > On 2 Aug 2026, at 12:03, Peter Geoghegan <pg(at)bowt(dot)ie> wrote:
> > > >
> > > > I think that you forgot to attach the patch with the actual fix?
> > >
> > > Oops. Sorry.
> >
> > Peter, thank you for catching this. Andrey, thank you for the patch.
> > Yes, multirange_gist_consistent() re-uses consistent functions from
> > range opclass. And range_gist_consistent_leaf_multirange() generate
> > false negatives when applied to union range of multirange. I've
> > rechecked, and it appears to be the only case among the predicates.
> >
> > Regarding this contained-by case, I think we can build more precise
> > test function. If we have multiranges q and k, and union() produces
> > union range from multirange.
> >
> > q @> r doesn't mean q @> union(r)
> > But if q @> r then union(q) @> union(r)
> >
>
> Hi!
> I reviewed v3.
>
> multirange_contains_union_range function comment contains typo at 'give'
>
> 'Every multiranges contains an infinite number of empty multiranges,
> even an empty one.' also contain typos

Thank you, fixed.

> Return statement can be :
> return range_cmp_bounds(rangetyp, &lower1, &lower2) <= 0 &&
> range_cmp_bounds(rangetyp, &upper1, &upper2) >= 0;
>
> But I don't insist. Better for my taste.

Corrected as you proposed.

------
Regards,
Alexander Korotkov
Supabase

Attachment Content-Type Size
v4-0001-Fix-GiST-contained-by-scans-of-multiranges.patch application/octet-stream 6.5 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Previous Message Robert Haas 2026-08-02 18:08:28 Re: Bypassing cursors in postgres_fdw to enable parallel plans