Re: To create or not to create that index

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: Stefan Knecht <knecht(dot)stefan(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: To create or not to create that index
Date: 2023-08-18 03:41:17
Message-ID: CAKFQuwbtRgufOWG1jUuG+DJqiVs1=3g6e0Kk2shZ8xqzQaaY4A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Thu, Aug 17, 2023 at 8:37 PM Stefan Knecht <knecht(dot)stefan(at)gmail(dot)com>
wrote:

> Hello
>
> Why does this happen?
>
> profile_aggregates=> create index concurrently foo_idx on agg (status,
> foots, created_ts);
>
>
> ^CCancel request sent
> ERROR: canceling statement due to user request
> profile_aggregates=>
> profile_aggregates=> create index concurrently foo_idx on agg (status,
> foots, created_ts);
> ERROR: relation " foo_idx" already exists
>
> Are these operations not atomic ?
>
>
No, being atomic would interfere with doing things concurrently. Per the
docs:

In a concurrent index build, the index is actually entered as an “invalid”
index into the system catalogs in one transaction, then two table scans
occur in two more transactions.
...
If a problem arises while scanning the table, such as a deadlock or a
uniqueness violation in a unique index, the CREATE INDEX command will fail
but leave behind an “invalid” index.

"Problem" includes you forcibly killing it while it is running.

https://www.postgresql.org/docs/current/sql-createindex.html

David J.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Stefan Knecht 2023-08-18 03:42:54 Re: To create or not to create that index
Previous Message Stefan Knecht 2023-08-18 03:37:03 To create or not to create that index