From: | Michael Paquier <michael(at)paquier(dot)xyz> |
---|---|
To: | Shruthi Gowda <gowdashru(at)gmail(dot)com> |
Cc: | PostgreSQL Development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: 'ERROR: attempted to update invisible tuple' from 'ALTER INDEX ... ATTACH PARTITION' on parent index |
Date: | 2023-07-12 00:38:41 |
Message-ID: | ZK32EQXxqC4CBFCW@paquier.xyz |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Jul 11, 2023 at 10:52:16PM +0530, Shruthi Gowda wrote:
> While testing some use cases, I encountered 'ERROR: attempted to update
> invisible tuple' when a partitioned index is attached to a parent index
> which is also a replica identity index.
> Below is the reproducible test case. The issue is seen only when the
> commands are executed inside a transaction.
Thanks for the report, reproduced here.
> The 'ALTER INDEX pk_foo ATTACH PARTITION foo_2023_id_ts_ix' returns
> "*ERROR: attempted to update invisible tuple"*
While working recently on what has led to cfc43ae and fc55c7f, I
really got the feeling that there could be some command sequences that
lacked some CCIs (or CommandCounterIncrement calls) to make sure that
the catalog updates are visible in any follow-up steps in the same
transaction.
> The 'indisreplident' is false, the ctid field value is old and it does
> not reflect the ctid changes made by 'ALTER TABLE ONLY foo REPLICA
> IDENTITY USING INDEX pk_foo'.
Your report is telling that we are missing a CCI somewhere in this
sequence. I would have thought that relation_mark_replica_identity()
is the correct place when the pg_index entry is dirtied, but that does
not seem correct. Hmm.
--
Michael
From | Date | Subject | |
---|---|---|---|
Next Message | Jeff Davis | 2023-07-12 00:43:14 | Re: MERGE ... RETURNING |
Previous Message | Andres Freund | 2023-07-12 00:36:47 | Re: Support to define custom wait events for extensions |