May 2018
Intermediate to advanced
576 pages
30h 25m
English
If you're not sure what the prepared transaction actually did, you can go and look, though that is time-consuming. The pg_locks view shows locks that are held by prepared transactions. You can get a full report of what is being locked by using the following query:
postgres=# SELECT l.locktype, x.database, l.relation, l.page, l.tuple,l.classid, l.objid, l.objsubid, l.mode, x.transaction, x.gid, x.prepared, x.ownerFROM pg_locks l JOIN pg_prepared_xacts x ON l.virtualtransaction = ‘-1/’ || x.transaction::text;
The documents mention that you can join pg_locks to pg_prepared_xacts, but they don't mention that if you join directly on the transaction ID, all it tells you is that there is a transaction lock, unless there are some row-level ...