Re: BUG #19098: Can't create unique gist index, where pg_indexes says that WITHOUT OVERLAPS does exacly that

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Laurenz Albe <laurenz.albe@cybertec.at>
Cc: n.bartek3762@gmail.com, pgsql-bugs@lists.postgresql.org, "Paul A. Jungwirth" <pj@illuminatedcomputing.com>, Peter Eisentraut <peter@eisentraut.org>
Date: 2025-10-29T15:30:13Z
Lists: pgsql-bugs
I wrote:
> I have not looked at the WITHOUT OVERLAPS patch, but if the mechanism
> underlying that is just to set pg_index.indisunique, then it seems
> like a reasonable answer here is to allow this syntax.

On second thought, not really, because it'd preclude ever supporting
"normal" unique indexes with GiST.  Really the only thing I can
think of that isn't a complete violation of pg_get_indexdef's contract
to produce a correct representation of the index is for it to emit
an ALTER TABLE ADD CONSTRAINT command to represent these indexes.

Which seems like kind of a mess, not only because it will likely
require a deal of extra code in ruleutils, but because it will likely
break calling applications that aren't expecting such syntax.

I wonder how hard it would be to extend CREATE INDEX so that it
could produce a non-phony representation of such indexes, with the
&&-semantics columns clearly distinguished from the =-semantics ones.
Is including an opclass name sufficient, or is there some additional
secret sauce for the temporal columns?

fc0438b4e could perhaps have spent a bit longer in the oven.

			regards, tom lane