From: | Michail Nikolaev <michail(dot)nikolaev(at)gmail(dot)com> |
---|---|
To: | Michael Paquier <michael(at)paquier(dot)xyz> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Issues with ON CONFLICT UPDATE and REINDEX CONCURRENTLY |
Date: | 2024-06-14 10:06:13 |
Message-ID: | CANtu0ogx6LAQMTxSdkhKW0yZCKBEnCVipEw=W+jQ4WJci=Ey1g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hello, Michael.
> Isn't the issue that we may select as arbiter indexes stuff that's
!indisvalid?
As far as I can see (1) !indisvalid indexes are filtered out.
But... It looks like this choice is not locked in any way (2), so
index_concurrently_swap or index_concurrently_set_dead can change this
index after the decision is made, even despite WaitForLockersMultiple (3).
In some cases, it may cause a data loss...
But I was unable to reproduce that using some random usleep(), however -
maybe it is a wrong assumption.
[2]:
https://github.com/postgres/postgres/blob/915de706d28c433283e9dc63701e8f978488a2b9/src/backend/optimizer/util/plancat.c#L924-L928
[3]:
https://github.com/postgres/postgres/blob/8aee330af55d8a759b2b73f5a771d9d34a7b887f/src/backend/commands/indexcmds.c#L4153
From | Date | Subject | |
---|---|---|---|
Next Message | Daniel Gustafsson | 2024-06-14 10:12:55 | Re: libpq contention due to gss even when not using gss |
Previous Message | Amit Kapila | 2024-06-14 10:00:17 | Re: Logical Replication of sequences |