pg_prepared_xacts returns transactions that are foreign to the caller

Vladimir Sitnikov <sitnikov.vladimir@gmail.com>

From: Vladimir Sitnikov <sitnikov.vladimir@gmail.com>
To: Pgsql Hackers <pgsql-hackers@postgresql.org>
Date: 2024-11-20T07:48:22Z
Lists: pgsql-hackers
Hi,

"select * from pg_prepared_xacts" might produce transactions created by a
different user, so the caller won't be able to issue "commit prepared".

I think there should be a view that returns only the transactions that the
caller can commit or rollback.
Is it something that can be implemented at the backend?

Currently, the backend checks owner and database when user calls "commit
prepared", so I believe the similar filter should be implemented in
pg_prepared_xacts view:
https://github.com/postgres/postgres/blob/15afb7d61c142a9254a6612c6774aff4f358fb69/src/backend/access/transam/twophase.c#L583C32-L599

Vladimir

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. doc: Fix section of functions age(xid) and mxid_age(xid)