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

Laurenz Albe <laurenz.albe@cybertec.at>

From: Laurenz Albe <laurenz.albe@cybertec.at>
To: Kirill Reshke <reshkekirill@gmail.com>
Cc: n.bartek3762@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2025-10-29T13:52:38Z
Lists: pgsql-bugs

Attachments

On Wed, 2025-10-29 at 17:43 +0500, Kirill Reshke wrote:
> On Wed, 29 Oct 2025 at 16:31, Laurenz Albe <laurenz.albe@cybertec.at> wrote:
> > 
> > 
> > I think I see what you mean:
> > 
> >   CREATE TABLE temp (
> >      id bigint NOT NULL,
> >      valid tstzrange NOT NULL,
> >      CONSTRAINT temp_pkey PRIMARY KEY (id, valid WITHOUT OVERLAPS)
> >   );
> > 
> >   SELECT pg_get_indexdef('temp_pkey'::regclass);
> > 
> >                              pg_get_indexdef
> >   ----------------------------------------------------------------------
> >    CREATE UNIQUE INDEX temp_pkey ON laurenz.temp USING gist (id, valid)
> > 
> > That CREATE INDEX statement won't work.
> > 
> > Yours,
> > Laurenz Albe
> > 
> > 
> 
> Yep, this is probably a valid rewording of the first email. Is it a
> problem that is worth fixing?

I personally think so, although the fact that this occurs in the regression tests
might mean that it is intentional.

Anyway, here is a patch that fixes the problem for me.  I am not happy with it,
because it hard-codes that CREATE UNIQUE INDEX only works with B-tree indexes,
but I don't have a better idea.

Yours,
Laurenz Albe