| From: | Andres Freund <andres(at)anarazel(dot)de> |
|---|---|
| To: | Yilin Zhang <jiezhilove(at)126(dot)com> |
| Cc: | Paul A Jungwirth <pj(at)illuminatedcomputing(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Peter Eisentraut <peter(at)eisentraut(dot)org> |
| Subject: | Re: Fix WITHOUT OVERLAPS PKs used for functional grouping |
| Date: | 2026-10-09 12:22:30 |
| Message-ID: | nwsx2isaffevptmws7anxv2xsc66rlmarom6a2bvc6jug3hsqh@mtwkrt5r3psf |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi,
On 2026-10-09 18:33:39 +0800, Yilin Zhang wrote:
> At 2026-10-09 12:30:24, "Paul A Jungwirth" <pj(at)illuminatedcomputing(dot)com> wrote:
> >Andres reported that a WITHOUT OVERLAPS primary key is wrongly
> >considered valid for functional grouping.[0] The problem is that the
> >GiST equals operator may not behave the same as the default btree
> >operator, which is what GROUP BY uses. This patch disables functional
> >grouping for WITHOUT OVERLAPS PKs.
> >
> >It would be nice to still prove functional grouping if the GiST
> >equality operator has the same proc as the btree equality operator.
> >I'd be happy to update this submission if people think that is an
> >acceptable backpatch. Otherwise I'll submit it separately for v20.
Given the set of issues here and the fact that all of this is relatively new,
I think going for simpler for now is the right thign.
> >Incidentally, maybe there is another issue?: The only concrete
> >built-in opclass I could find to reproduce the problem was citext. The
> >btree opclass compares insensitively, but there is no citext opclass
> >in btree_gist, so we use the text opclass instead (by binary
> >coercion). Isn't that a problem in general (regardless of WITHOUT
> >OVERLAPS)? It only breaks GROUP BY with a primary key, but it still
> >seems weird to get case-sensitive comparisons on a citext column.
> >Should I send another patch (against v20) adding citext to btree_gist?
I don't think you can just trivially do that, given that they're two different
extensions. We don't want to install citext every time btree_gist is
installed.
> >Is there a deeper fix, where GiST doesn't use the text opclass for
> >citext columns?
> Thanks for your patch.
>
> While reviewing this patch, I found that some SQL queries which used to
> return results now throw errors after applying the patch.
That's what Paul's message above explains: "This patch disables functional
grouping for WITHOUT OVERLAPS PKs.". No?
Greetings,
Andres Freund
| From | Date | Subject | |
|---|---|---|---|
| Next Message | shihao zhong | 2026-10-09 12:25:03 | Re: [PG19] Three bugs with a CHECK constraint that only the child enforces |
| Previous Message | Andres Freund | 2026-10-09 12:10:55 | Re: Fix WITHOUT OVERLAPS PKs used for functional grouping |