Fix WITHOUT OVERLAPS PKs used for functional grouping - Mailing list pgsql-hackers

From Paul A Jungwirth
Subject Fix WITHOUT OVERLAPS PKs used for functional grouping
Date
Msg-id CA+renyWoOf6dM_+e6Zath+0i5Lr+uzn1hz7DAuSaV_A5Tz6XhA@mail.gmail.com
Whole thread
Responses Re:Fix WITHOUT OVERLAPS PKs used for functional grouping
Re: Fix WITHOUT OVERLAPS PKs used for functional grouping
List pgsql-hackers
Hi Hackers,

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.

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?
Is there a deeper fix, where GiST doesn't use the text opclass for
citext columns?

[0] https://www.postgresql.org/message-id/e5nb5jbus2oa3pffmlo7pdvdckmchd54tqld4k3n6huyg5xxqn%407rounyvufjx6

Yours,

-- 
Paul              ~{:-)
pj@illuminatedcomputing.com

Attachment

pgsql-hackers by date:

Previous
From: solai v
Date:
Subject: Re: Asynchronous MergeAppend
Next
From: shihao zhong
Date:
Subject: [PG19] Three bugs with a CHECK constraint that only the child enforces