Re: ri_LockPKTuple misleading message

amit <amitlangote09@gmail.com>

From: Amit Langote <amitlangote09@gmail.com>
To: jian he <jian.universality@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2026-04-25T11:31:07Z
Lists: pgsql-hackers
On Sat, Apr 25, 2026 at 19:53 jian he <jian.universality@gmail.com> wrote:

> Hi.
>
>
> https://git.postgresql.org/cgit/postgresql.git/commit/?id=2da86c1ef9b5446e0e22c0b6a5846293e58d98e3
> + case TM_Deleted:
> + if (IsolationUsesXactSnapshot())
> + ereport(ERROR,
> + (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
> + errmsg("could not serialize access due to concurrent update")));
>
> errmsg should be
> errmsg("could not serialize access due to concurrent delete")));
> ?
>
> ExecLockRows also has the same situation.


I guess the existing wording may have been using "concurrent update" in the
broader sense of "concurrent modification" of the tuple, so I'm not sure
that it's just an oversight.

That said, "concurrent delete" is more precise for the TM_Deleted case, so
I'll change it in the code I committed. As for ExecLockRows(), I'll
leave that alone unless others think we should change that too.

- Amit

>

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Use "concurrent delete" in serialization error for TM_Deleted cases

  2. Add fast path for foreign key constraint checks