From f745739697e49a38a31a755d7d36d6c97008dd9f Mon Sep 17 00:00:00 2001 From: Amit Kapila Date: Tue, 10 Jan 2023 08:53:12 +0530 Subject: [PATCH] Fix the display of lock information for specktoken. A transaction id is now displayed in the transactionid field and speculative insertion token is displayed in the objid field. Author: Sawada Masahiko Reviewed-by: Amit Kapila Discussion: https://postgr.es/m/CAD21AoCEKxZztULP1CDm45aSNNR1QO-Bh1q6LMTspQ78PBuJrw@mail.gmail.com --- doc/src/sgml/system-views.sgml | 6 ++++++ src/backend/utils/adt/lockfuncs.c | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/doc/src/sgml/system-views.sgml b/doc/src/sgml/system-views.sgml index 1d1b7de8f1..5b1c73269b 100644 --- a/doc/src/sgml/system-views.sgml +++ b/doc/src/sgml/system-views.sgml @@ -1579,6 +1579,12 @@ permanent transaction ID of the current holder of that row lock. + + A specualtive insertion lock consists of a transaction ID and a speculative + insertion token. The speculative insertion token is displayed in the + objid column. + + Advisory locks can be acquired on keys consisting of either a single bigint value or two integer values. diff --git a/src/backend/utils/adt/lockfuncs.c b/src/backend/utils/adt/lockfuncs.c index c8aac0694f..f9b9590997 100644 --- a/src/backend/utils/adt/lockfuncs.c +++ b/src/backend/utils/adt/lockfuncs.c @@ -313,6 +313,18 @@ pg_lock_status(PG_FUNCTION_ARGS) nulls[8] = true; nulls[9] = true; break; + case LOCKTAG_SPECULATIVE_TOKEN: + values[6] = + TransactionIdGetDatum(instance->locktag.locktag_field1); + values[8] = ObjectIdGetDatum(instance->locktag.locktag_field2); + nulls[1] = true; + nulls[2] = true; + nulls[3] = true; + nulls[4] = true; + nulls[5] = true; + nulls[7] = true; + nulls[9] = true; + break; case LOCKTAG_APPLY_TRANSACTION: values[1] = ObjectIdGetDatum(instance->locktag.locktag_field1); values[8] = ObjectIdGetDatum(instance->locktag.locktag_field2); -- 2.39.5