diff --git a/doc/src/sgml/system-views.sgml b/doc/src/sgml/system-views.sgml index 1d1b7de8f1e..5b1c73269b9 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 c8aac0694fe..f9b9590997b 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);