Re: Remaining PDF layout issues - Mailing list pgsql-docs

From Tom Lane
Subject Re: Remaining PDF layout issues
Date
Msg-id 10190.1589248770@sss.pgh.pa.us
Whole thread Raw
In response to Remaining PDF layout issues  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Remaining PDF layout issues
List pgsql-docs
I wrote:
> Table 27.4 is annoying: it could be made to work, just barely, with some
> hacking of the column widths and a &zwsp; or two.  But it's not stable
> text so I have little faith in the longevity of such a solution,
> especially if people keep on inventing long wait event names.  I also
> find it not very readable, even in a wide window.  The first idea that
> comes to mind is to split it into multiple tables, one per "Wait Event
> Type", so that we don't need the lefthand column.  Another idea is to
> go over to a format similar to what I've proposed for catalog tables,
> with entries like

>     Timeout / BaseBackupThrottle
>         Descriptive text here ...
>     Timeout / RecoveryApplyDelay
>         Descriptive text here ...

Attached is a draft patch that does it the second way.  This looks
reasonably okay to me, although there's no denying that given a reasonably
wide window, the existing layout requires less vertical space.  But
I'm not sure that matters: I have come to the conclusion, after studying
this table, that nobody has ever yet looked at it.  If they had, we would
surely have gotten gripes about the fact that most of the entries are not
in anything resembling alphabetical order.  How in the world would anyone
look something up in this?  I have not changed the ordering in this patch,
but I think it would be a good idea to fix it to be rigidly alphabetical
(including the "type" part).

BTW, for the purposes of this patch I just abused the
func_table_entry/func_signature role values.  We could invent new ones,
but I'm not sure if it's worthwhile for just one table.

            regards, tom lane

diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 579ccd3..57d6716 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -909,912 +909,1794 @@ postgres   27093  0.0  0.0  30096  2752 ?        Ss   11:34   0:00 postgres: ser

   <table id="wait-event-table">
    <title><structname>wait_event</structname> Description</title>
+    <tgroup cols="1">
+     <thead>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        Wait Event Type / Wait Event Name
+       </para>
+       <para>
+        Description
+       </para></entry>
+      </row>
+     </thead>

-    <tgroup cols="3">
-      <thead>
-       <row>
-        <entry>Wait Event Type</entry>
-        <entry>Wait Event Name</entry>
-        <entry>Description</entry>
-       </row>
-      </thead>
-
-      <tbody>
-       <row>
-        <entry morerows="64"><literal>LWLock</literal></entry>
-        <entry><literal>ShmemIndexLock</literal></entry>
-        <entry>Waiting to find or allocate space in shared memory.</entry>
-       </row>
-       <row>
-        <entry><literal>OidGenLock</literal></entry>
-        <entry>Waiting to allocate or assign an OID.</entry>
-       </row>
-        <row>
-         <entry><literal>XidGenLock</literal></entry>
-         <entry>Waiting to allocate or assign a transaction id.</entry>
-        </row>
-        <row>
-         <entry><literal>ProcArrayLock</literal></entry>
-         <entry>Waiting to get a snapshot or clearing a transaction id at
-         transaction end.</entry>
-        </row>
-        <row>
-         <entry><literal>SInvalReadLock</literal></entry>
-         <entry>Waiting to retrieve or remove messages from shared invalidation
-         queue.</entry>
-        </row>
-        <row>
-         <entry><literal>SInvalWriteLock</literal></entry>
-         <entry>Waiting to add a message in shared invalidation queue.</entry>
-        </row>
-        <row>
-         <entry><literal>WALBufMappingLock</literal></entry>
-         <entry>Waiting to replace a page in WAL buffers.</entry>
-        </row>
-        <row>
-         <entry><literal>WALWriteLock</literal></entry>
-         <entry>Waiting for WAL buffers to be written to disk.</entry>
-        </row>
-        <row>
-         <entry><literal>ControlFileLock</literal></entry>
-         <entry>Waiting to read or update the control file or creation of a
-         new WAL file.</entry>
-        </row>
-        <row>
-         <entry><literal>CheckpointLock</literal></entry>
-         <entry>Waiting to perform checkpoint.</entry>
-        </row>
-        <row>
-         <entry><literal>CLogControlLock</literal></entry>
-         <entry>Waiting to read or update transaction status.</entry>
-        </row>
-        <row>
-         <entry><literal>SubtransControlLock</literal></entry>
-         <entry>Waiting to read or update sub-transaction information.</entry>
-        </row>
-        <row>
-         <entry><literal>MultiXactGenLock</literal></entry>
-         <entry>Waiting to read or update shared multixact state.</entry>
-        </row>
-        <row>
-         <entry><literal>MultiXactOffsetControlLock</literal></entry>
-         <entry>Waiting to read or update multixact offset mappings.</entry>
-        </row>
-        <row>
-         <entry><literal>MultiXactMemberControlLock</literal></entry>
-         <entry>Waiting to read or update multixact member mappings.</entry>
-        </row>
-        <row>
-         <entry><literal>RelCacheInitLock</literal></entry>
-         <entry>Waiting to read or write relation cache initialization
-         file.</entry>
-        </row>
-        <row>
-         <entry><literal>CheckpointerCommLock</literal></entry>
-         <entry>Waiting to manage fsync requests.</entry>
-        </row>
-        <row>
-         <entry><literal>TwoPhaseStateLock</literal></entry>
-         <entry>Waiting to read or update the state of prepared transactions.</entry>
-        </row>
-        <row>
-         <entry><literal>TablespaceCreateLock</literal></entry>
-         <entry>Waiting to create or drop the tablespace.</entry>
-        </row>
-        <row>
-         <entry><literal>BtreeVacuumLock</literal></entry>
-          <entry>Waiting to read or update vacuum-related information for a
-          B-tree index.</entry>
-        </row>
-        <row>
-         <entry><literal>AddinShmemInitLock</literal></entry>
-         <entry>Waiting to manage space allocation in shared memory.</entry>
-        </row>
-        <row>
-         <entry><literal>AutovacuumLock</literal></entry>
-         <entry>Autovacuum worker or launcher waiting to update or
-         read the current state of autovacuum workers.</entry>
-        </row>
-        <row>
-         <entry><literal>AutovacuumScheduleLock</literal></entry>
-         <entry>Waiting to ensure that the table it has selected for a vacuum
-         still needs vacuuming.
-         </entry>
-        </row>
-        <row>
-         <entry><literal>SyncScanLock</literal></entry>
-         <entry>Waiting to get the start location of a scan on a table for
-         synchronized scans.</entry>
-        </row>
-        <row>
-         <entry><literal>RelationMappingLock</literal></entry>
-         <entry>Waiting to update the relation map file used to store catalog
-         to filenode mapping.
-         </entry>
-        </row>
-        <row>
-         <entry><literal>AsyncCtlLock</literal></entry>
-         <entry>Waiting to read or update shared notification state.</entry>
-        </row>
-        <row>
-         <entry><literal>AsyncQueueLock</literal></entry>
-          <entry>Waiting to read or update notification messages.</entry>
-        </row>
-        <row>
-         <entry><literal>SerializableXactHashLock</literal></entry>
-         <entry>Waiting to retrieve or store information about serializable
-         transactions.</entry>
-        </row>
-        <row>
-         <entry><literal>SerializableFinishedListLock</literal></entry>
-         <entry>Waiting to access the list of finished serializable
-         transactions.</entry>
-        </row>
-        <row>
-         <entry><literal>SerializablePredicateLockListLock</literal></entry>
-         <entry>Waiting to perform an operation on a list of locks held by
-         serializable transactions.</entry>
-        </row>
-        <row>
-         <entry><literal>OldSerXidLock</literal></entry>
-         <entry>Waiting to read or record conflicting serializable
-         transactions.</entry>
-        </row>
-        <row>
-         <entry><literal>SyncRepLock</literal></entry>
-         <entry>Waiting to read or update information about synchronous
-         replicas.</entry>
-        </row>
-        <row>
-         <entry><literal>BackgroundWorkerLock</literal></entry>
-         <entry>Waiting to read or update background worker state.</entry>
-        </row>
-        <row>
-         <entry><literal>DynamicSharedMemoryControlLock</literal></entry>
-         <entry>Waiting to read or update dynamic shared memory state.</entry>
-        </row>
-        <row>
-         <entry><literal>AutoFileLock</literal></entry>
-         <entry>Waiting to update the <filename>postgresql.auto.conf</filename> file.</entry>
-        </row>
-        <row>
-         <entry><literal>ReplicationSlotAllocationLock</literal></entry>
-         <entry>Waiting to allocate or free a replication slot.</entry>
-        </row>
-        <row>
-         <entry><literal>ReplicationSlotControlLock</literal></entry>
-         <entry>Waiting to read or update replication slot state.</entry>
-        </row>
-        <row>
-         <entry><literal>CommitTsControlLock</literal></entry>
-         <entry>Waiting to read or update transaction commit timestamps.</entry>
-        </row>
-        <row>
-         <entry><literal>CommitTsLock</literal></entry>
-         <entry>Waiting to read or update the last value set for the
-         transaction timestamp.</entry>
-        </row>
-        <row>
-         <entry><literal>ReplicationOriginLock</literal></entry>
-         <entry>Waiting to setup, drop or use replication origin.</entry>
-        </row>
-        <row>
-         <entry><literal>MultiXactTruncationLock</literal></entry>
-         <entry>Waiting to read or truncate multixact information.</entry>
-        </row>
-        <row>
-         <entry><literal>OldSnapshotTimeMapLock</literal></entry>
-         <entry>Waiting to read or update old snapshot control information.</entry>
-        </row>
-        <row>
-         <entry><literal>LogicalRepWorkerLock</literal></entry>
-         <entry>Waiting for action on logical replication worker to finish.</entry>
-        </row>
-        <row>
-         <entry><literal>CLogTruncationLock</literal></entry>
-         <entry>Waiting to execute <function>pg_xact_status</function> or update
-         the oldest transaction id available to it.</entry>
-        </row>
-        <row>
-         <entry><literal>clog</literal></entry>
-         <entry>Waiting for I/O on a clog (transaction status) buffer.</entry>
-        </row>
-        <row>
-         <entry><literal>commit_timestamp</literal></entry>
-         <entry>Waiting for I/O on commit timestamp buffer.</entry>
-        </row>
-        <row>
-         <entry><literal>subtrans</literal></entry>
-         <entry>Waiting for I/O a subtransaction buffer.</entry>
-        </row>
-        <row>
-         <entry><literal>multixact_offset</literal></entry>
-         <entry>Waiting for I/O on a multixact offset buffer.</entry>
-        </row>
-        <row>
-         <entry><literal>multixact_member</literal></entry>
-         <entry>Waiting for I/O on a multixact_member buffer.</entry>
-        </row>
-        <row>
-         <entry><literal>async</literal></entry>
-         <entry>Waiting for I/O on an async (notify) buffer.</entry>
-        </row>
-        <row>
-         <entry><literal>oldserxid</literal></entry>
-         <entry>Waiting for I/O on an oldserxid buffer.</entry>
-        </row>
-        <row>
-         <entry><literal>wal_insert</literal></entry>
-         <entry>Waiting to insert WAL into a memory buffer.</entry>
-        </row>
-        <row>
-         <entry><literal>buffer_content</literal></entry>
-         <entry>Waiting to read or write a data page in memory.</entry>
-        </row>
-        <row>
-         <entry><literal>buffer_io</literal></entry>
-         <entry>Waiting for I/O on a data page.</entry>
-        </row>
-        <row>
-         <entry><literal>replication_origin</literal></entry>
-         <entry>Waiting to read or update the replication progress.</entry>
-        </row>
-        <row>
-         <entry><literal>replication_slot_io</literal></entry>
-         <entry>Waiting for I/O on a replication slot.</entry>
-        </row>
-        <row>
-         <entry><literal>proc</literal></entry>
-         <entry>Waiting to read or update the fast-path lock information.</entry>
-        </row>
-        <row>
-         <entry><literal>buffer_mapping</literal></entry>
-         <entry>Waiting to associate a data block with a buffer in the buffer
-         pool.</entry>
-        </row>
-        <row>
-         <entry><literal>lock_manager</literal></entry>
-         <entry>Waiting to add or examine locks for backends, or waiting to
-         join or exit a locking group (used by parallel query).</entry>
-        </row>
-        <row>
-         <entry><literal>predicate_lock_manager</literal></entry>
-         <entry>Waiting to add or examine predicate lock information.</entry>
-        </row>
-        <row>
-         <entry><literal>serializable_xact</literal></entry>
-         <entry>Waiting to perform an operation on a serializable transaction
-         in a parallel query.</entry>
-        </row>
-        <row>
-         <entry><literal>parallel_query_dsa</literal></entry>
-         <entry>Waiting for parallel query dynamic shared memory allocation lock.</entry>
-        </row>
-        <row>
-         <entry><literal>tbm</literal></entry>
-         <entry>Waiting for TBM shared iterator lock.</entry>
-        </row>
-        <row>
-         <entry><literal>parallel_append</literal></entry>
-         <entry>Waiting to choose the next subplan during Parallel Append plan
-         execution.</entry>
-        </row>
-        <row>
-         <entry><literal>parallel_hash_join</literal></entry>
-         <entry>Waiting to allocate or exchange a chunk of memory or update
-         counters during Parallel Hash plan execution.</entry>
-        </row>
-        <row>
-         <entry morerows="9"><literal>Lock</literal></entry>
-         <entry><literal>relation</literal></entry>
-         <entry>Waiting to acquire a lock on a relation.</entry>
-        </row>
-        <row>
-         <entry><literal>extend</literal></entry>
-         <entry>Waiting to extend a relation.</entry>
-        </row>
-        <row>
-         <entry><literal>page</literal></entry>
-         <entry>Waiting to acquire a lock on page of a relation.</entry>
-        </row>
-        <row>
-         <entry><literal>tuple</literal></entry>
-         <entry>Waiting to acquire a lock on a tuple.</entry>
-        </row>
-        <row>
-         <entry><literal>transactionid</literal></entry>
-         <entry>Waiting for a transaction to finish.</entry>
-        </row>
-        <row>
-         <entry><literal>virtualxid</literal></entry>
-         <entry>Waiting to acquire a virtual xid lock.</entry>
-        </row>
-        <row>
-         <entry><literal>speculative token</literal></entry>
-         <entry>Waiting to acquire a speculative insertion lock.</entry>
-        </row>
-        <row>
-         <entry><literal>object</literal></entry>
-         <entry>Waiting to acquire a lock on a non-relation database object.</entry>
-        </row>
-        <row>
-         <entry><literal>userlock</literal></entry>
-         <entry>Waiting to acquire a user lock.</entry>
-        </row>
-        <row>
-         <entry><literal>advisory</literal></entry>
-         <entry>Waiting to acquire an advisory user lock.</entry>
-        </row>
-        <row>
-         <entry><literal>BufferPin</literal></entry>
-         <entry><literal>BufferPin</literal></entry>
-         <entry>Waiting to acquire a pin on a buffer.</entry>
-        </row>
-        <row>
-         <entry morerows="12"><literal>Activity</literal></entry>
-         <entry><literal>ArchiverMain</literal></entry>
-         <entry>Waiting in main loop of the archiver process.</entry>
-        </row>
-        <row>
-         <entry><literal>AutoVacuumMain</literal></entry>
-         <entry>Waiting in main loop of autovacuum launcher process.</entry>
-        </row>
-        <row>
-         <entry><literal>BgWriterHibernate</literal></entry>
-         <entry>Waiting in background writer process, hibernating.</entry>
-        </row>
-        <row>
-         <entry><literal>BgWriterMain</literal></entry>
-         <entry>Waiting in main loop of background writer process background worker.</entry>
-        </row>
-        <row>
-         <entry><literal>CheckpointerMain</literal></entry>
-         <entry>Waiting in main loop of checkpointer process.</entry>
-        </row>
-        <row>
-         <entry><literal>LogicalApplyMain</literal></entry>
-         <entry>Waiting in main loop of logical apply process.</entry>
-        </row>
-        <row>
-         <entry><literal>LogicalLauncherMain</literal></entry>
-         <entry>Waiting in main loop of logical launcher process.</entry>
-        </row>
-        <row>
-         <entry><literal>PgStatMain</literal></entry>
-         <entry>Waiting in main loop of the statistics collector process.</entry>
-        </row>
-        <row>
-         <entry><literal>RecoveryWalStream</literal></entry>
-         <entry>Waiting for WAL from a stream at recovery.</entry>
-        </row>
-        <row>
-         <entry><literal>SysLoggerMain</literal></entry>
-         <entry>Waiting in main loop of syslogger process.</entry>
-        </row>
-        <row>
-         <entry><literal>WalReceiverMain</literal></entry>
-         <entry>Waiting in main loop of WAL receiver process.</entry>
-        </row>
-        <row>
-         <entry><literal>WalSenderMain</literal></entry>
-         <entry>Waiting in main loop of WAL sender process.</entry>
-        </row>
-        <row>
-         <entry><literal>WalWriterMain</literal></entry>
-         <entry>Waiting in main loop of WAL writer process.</entry>
-        </row>
-        <row>
-         <entry morerows="8"><literal>Client</literal></entry>
-         <entry><literal>ClientRead</literal></entry>
-         <entry>Waiting to read data from the client.</entry>
-        </row>
-        <row>
-         <entry><literal>ClientWrite</literal></entry>
-         <entry>Waiting to write data to the client.</entry>
-        </row>
-        <row>
-         <entry><literal>GSSOpenServer</literal></entry>
-         <entry>Waiting to read data from the client while establishing the GSSAPI session.</entry>
-        </row>
-        <row>
-         <entry><literal>LibPQWalReceiverConnect</literal></entry>
-         <entry>Waiting in WAL receiver to establish connection to remote server.</entry>
-        </row>
-        <row>
-         <entry><literal>LibPQWalReceiverReceive</literal></entry>
-         <entry>Waiting in WAL receiver to receive data from remote server.</entry>
-        </row>
-        <row>
-         <entry><literal>SSLOpenServer</literal></entry>
-         <entry>Waiting for SSL while attempting connection.</entry>
-        </row>
-        <row>
-         <entry><literal>WalReceiverWaitStart</literal></entry>
-         <entry>Waiting for startup process to send initial data for streaming replication.</entry>
-        </row>
-        <row>
-         <entry><literal>WalSenderWaitForWAL</literal></entry>
-         <entry>Waiting for WAL to be flushed in WAL sender process.</entry>
-        </row>
-        <row>
-         <entry><literal>WalSenderWriteData</literal></entry>
-         <entry>Waiting for any activity when processing replies from WAL receiver in WAL sender process.</entry>
-        </row>
-        <row>
-         <entry><literal>Extension</literal></entry>
-         <entry><literal>Extension</literal></entry>
-         <entry>Waiting in an extension.</entry>
-        </row>
-        <row>
-         <entry morerows="40"><literal>IPC</literal></entry>
-         <entry><literal>BackupWaitWalArchive</literal></entry>
-         <entry>Waiting for WAL files required for the backup to be successfully archived.</entry>
-        </row>
-        <row>
-         <entry><literal>BgWorkerShutdown</literal></entry>
-         <entry>Waiting for background worker to shut down.</entry>
-        </row>
-        <row>
-         <entry><literal>BgWorkerStartup</literal></entry>
-         <entry>Waiting for background worker to start up.</entry>
-        </row>
-        <row>
-         <entry><literal>BtreePage</literal></entry>
-         <entry>Waiting for the page number needed to continue a parallel B-tree scan to become available.</entry>
-        </row>
-        <row>
-         <entry><literal>CheckpointDone</literal></entry>
-         <entry>Waiting for a checkpoint to complete.</entry>
-        </row>
-        <row>
-         <entry><literal>CheckpointStart</literal></entry>
-         <entry>Waiting for a checkpoint to start.</entry>
-        </row>
-        <row>
-         <entry><literal>ClogGroupUpdate</literal></entry>
-         <entry>Waiting for group leader to update transaction status at transaction end.</entry>
-        </row>
-        <row>
-         <entry><literal>ExecuteGather</literal></entry>
-         <entry>Waiting for activity from child process when executing <literal>Gather</literal> node.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/Batch/Allocating</literal></entry>
-          <entry>Waiting for an elected Parallel Hash participant to allocate a hash table.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/Batch/Electing</literal></entry>
-          <entry>Electing a Parallel Hash participant to allocate a hash table.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/Batch/Loading</literal></entry>
-          <entry>Waiting for other Parallel Hash participants to finish loading a hash table.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/Build/Allocating</literal></entry>
-          <entry>Waiting for an elected Parallel Hash participant to allocate the initial hash table.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/Build/Electing</literal></entry>
-          <entry>Electing a Parallel Hash participant to allocate the initial hash table.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/Build/HashingInner</literal></entry>
-          <entry>Waiting for other Parallel Hash participants to finish hashing the inner relation.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/Build/HashingOuter</literal></entry>
-          <entry>Waiting for other Parallel Hash participants to finish partitioning the outer relation.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/GrowBatches/Allocating</literal></entry>
-          <entry>Waiting for an elected Parallel Hash participant to allocate more batches.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/GrowBatches/Deciding</literal></entry>
-          <entry>Electing a Parallel Hash participant to decide on future batch growth.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/GrowBatches/Electing</literal></entry>
-          <entry>Electing a Parallel Hash participant to allocate more batches.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/GrowBatches/Finishing</literal></entry>
-          <entry>Waiting for an elected Parallel Hash participant to decide on future batch growth.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/GrowBatches/Repartitioning</literal></entry>
-          <entry>Waiting for other Parallel Hash participants to finishing repartitioning.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/GrowBuckets/Allocating</literal></entry>
-          <entry>Waiting for an elected Parallel Hash participant to finish allocating more buckets.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/GrowBuckets/Electing</literal></entry>
-          <entry>Electing a Parallel Hash participant to allocate more buckets.</entry>
-        </row>
-        <row>
-          <entry><literal>Hash/GrowBuckets/Reinserting</literal></entry>
-          <entry>Waiting for other Parallel Hash participants to finish inserting tuples into new buckets.</entry>
-        </row>
-        <row>
-         <entry><literal>LogicalSyncData</literal></entry>
-         <entry>Waiting for logical replication remote server to send data for initial table synchronization.</entry>
-        </row>
-        <row>
-         <entry><literal>LogicalSyncStateChange</literal></entry>
-         <entry>Waiting for logical replication remote server to change state.</entry>
-        </row>
-        <row>
-         <entry><literal>MessageQueueInternal</literal></entry>
-         <entry>Waiting for other process to be attached in shared message queue.</entry>
-        </row>
-        <row>
-         <entry><literal>MessageQueuePutMessage</literal></entry>
-         <entry>Waiting to write a protocol message to a shared message queue.</entry>
-        </row>
-        <row>
-         <entry><literal>MessageQueueReceive</literal></entry>
-         <entry>Waiting to receive bytes from a shared message queue.</entry>
-        </row>
-        <row>
-         <entry><literal>MessageQueueSend</literal></entry>
-         <entry>Waiting to send bytes to a shared message queue.</entry>
-        </row>
-        <row>
-         <entry><literal>ParallelBitmapScan</literal></entry>
-         <entry>Waiting for parallel bitmap scan to become initialized.</entry>
-        </row>
-        <row>
-         <entry><literal>ParallelCreateIndexScan</literal></entry>
-         <entry>Waiting for parallel <command>CREATE INDEX</command> workers to finish heap scan.</entry>
-        </row>
-        <row>
-         <entry><literal>ParallelFinish</literal></entry>
-         <entry>Waiting for parallel workers to finish computing.</entry>
-        </row>
-        <row>
-         <entry><literal>ProcArrayGroupUpdate</literal></entry>
-         <entry>Waiting for group leader to clear transaction id at transaction end.</entry>
-        </row>
-        <row>
-         <entry><literal>Promote</literal></entry>
-         <entry>Waiting for standby promotion.</entry>
-        </row>
-        <row>
-         <entry><literal>RecoveryConflictSnapshot</literal></entry>
-         <entry>Waiting for recovery conflict resolution on a vacuum cleanup.</entry>
-        </row>
-        <row>
-         <entry><literal>RecoveryConflictTablespace</literal></entry>
-         <entry>Waiting for recovery conflict resolution on dropping tablespace.</entry>
-        </row>
-        <row>
-         <entry><literal>RecoveryPause</literal></entry>
-         <entry>Waiting for recovery to be resumed.</entry>
-        </row>
-        <row>
-         <entry><literal>ReplicationOriginDrop</literal></entry>
-         <entry>Waiting for a replication origin to become inactive to be dropped.</entry>
-        </row>
-        <row>
-         <entry><literal>ReplicationSlotDrop</literal></entry>
-         <entry>Waiting for a replication slot to become inactive to be dropped.</entry>
-        </row>
-        <row>
-         <entry><literal>SafeSnapshot</literal></entry>
-         <entry>Waiting for a snapshot for a <literal>READ ONLY DEFERRABLE</literal> transaction.</entry>
-        </row>
-        <row>
-         <entry><literal>SyncRep</literal></entry>
-         <entry>Waiting for confirmation from remote server during synchronous replication.</entry>
-        </row>
-        <row>
-         <entry morerows="4"><literal>Timeout</literal></entry>
-         <entry><literal>BaseBackupThrottle</literal></entry>
-         <entry>Waiting during base backup when throttling activity.</entry>
-        </row>
-        <row>
-         <entry><literal>PgSleep</literal></entry>
-         <entry>Waiting in process that called <function>pg_sleep</function>.</entry>
-        </row>
-        <row>
-         <entry><literal>RecoveryApplyDelay</literal></entry>
-         <entry>Waiting to apply WAL at recovery because it is delayed.</entry>
-        </row>
-        <row>
-         <entry><literal>RecoveryRetrieveRetryInterval</literal></entry>
-         <entry>
-          Waiting when WAL data is not available from any kind of sources
-          (<filename>pg_wal</filename>, archive or stream) before trying
-          again to retrieve WAL data, at recovery.
-         </entry>
-        </row>
-        <row>
-         <entry><literal>VacuumDelay</literal></entry>
-         <entry>Waiting in a cost-based vacuum delay point.</entry>
-        </row>
-        <row>
-         <entry morerows="68"><literal>IO</literal></entry>
-         <entry><literal>BufFileRead</literal></entry>
-         <entry>Waiting for a read from a buffered file.</entry>
-        </row>
-        <row>
-         <entry><literal>BufFileWrite</literal></entry>
-         <entry>Waiting for a write to a buffered file.</entry>
-        </row>
-        <row>
-         <entry><literal>ControlFileRead</literal></entry>
-         <entry>Waiting for a read from the control file.</entry>
-        </row>
-        <row>
-         <entry><literal>ControlFileSync</literal></entry>
-         <entry>Waiting for the control file to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>ControlFileSyncUpdate</literal></entry>
-         <entry>Waiting for an update to the control file to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>ControlFileWrite</literal></entry>
-         <entry>Waiting for a write to the control file.</entry>
-        </row>
-        <row>
-         <entry><literal>ControlFileWriteUpdate</literal></entry>
-         <entry>Waiting for a write to update the control file.</entry>
-        </row>
-        <row>
-         <entry><literal>CopyFileRead</literal></entry>
-         <entry>Waiting for a read during a file copy operation.</entry>
-        </row>
-        <row>
-         <entry><literal>CopyFileWrite</literal></entry>
-         <entry>Waiting for a write during a file copy operation.</entry>
-        </row>
-        <row>
-         <entry><literal>DataFileExtend</literal></entry>
-         <entry>Waiting for a relation data file to be extended.</entry>
-        </row>
-        <row>
-         <entry><literal>DataFileFlush</literal></entry>
-         <entry>Waiting for a relation data file to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>DataFileImmediateSync</literal></entry>
-         <entry>Waiting for an immediate synchronization of a relation data file to stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>DataFilePrefetch</literal></entry>
-         <entry>Waiting for an asynchronous prefetch from a relation data file.</entry>
-        </row>
-        <row>
-         <entry><literal>DataFileRead</literal></entry>
-         <entry>Waiting for a read from a relation data file.</entry>
-        </row>
-        <row>
-         <entry><literal>DataFileSync</literal></entry>
-         <entry>Waiting for changes to a relation data file to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>DataFileTruncate</literal></entry>
-         <entry>Waiting for a relation data file to be truncated.</entry>
-        </row>
-        <row>
-         <entry><literal>DataFileWrite</literal></entry>
-         <entry>Waiting for a write to a relation data file.</entry>
-        </row>
-        <row>
-         <entry><literal>DSMFillZeroWrite</literal></entry>
-         <entry>Waiting to write zero bytes to a dynamic shared memory backing file.</entry>
-        </row>
-        <row>
-         <entry><literal>LockFileAddToDataDirRead</literal></entry>
-         <entry>Waiting for a read while adding a line to the data directory lock file.</entry>
-        </row>
-        <row>
-         <entry><literal>LockFileAddToDataDirSync</literal></entry>
-         <entry>Waiting for data to reach stable storage while adding a line to the data directory lock file.</entry>
-        </row>
-        <row>
-         <entry><literal>LockFileAddToDataDirWrite</literal></entry>
-         <entry>Waiting for a write while adding a line to the data directory lock file.</entry>
-        </row>
-        <row>
-         <entry><literal>LockFileCreateRead</literal></entry>
-         <entry>Waiting to read while creating the data directory lock file.</entry>
-        </row>
-        <row>
-         <entry><literal>LockFileCreateSync</literal></entry>
-         <entry>Waiting for data to reach stable storage while creating the data directory lock file.</entry>
-        </row>
-        <row>
-         <entry><literal>LockFileCreateWrite</literal></entry>
-         <entry>Waiting for a write while creating the data directory lock file.</entry>
-        </row>
-        <row>
-         <entry><literal>LockFileReCheckDataDirRead</literal></entry>
-         <entry>Waiting for a read during recheck of the data directory lock file.</entry>
-        </row>
-        <row>
-         <entry><literal>LogicalRewriteCheckpointSync</literal></entry>
-         <entry>Waiting for logical rewrite mappings to reach stable storage during a checkpoint.</entry>
-        </row>
-        <row>
-         <entry><literal>LogicalRewriteMappingSync</literal></entry>
-         <entry>Waiting for mapping data to reach stable storage during a logical rewrite.</entry>
-        </row>
-        <row>
-         <entry><literal>LogicalRewriteMappingWrite</literal></entry>
-         <entry>Waiting for a write of mapping data during a logical rewrite.</entry>
-        </row>
-        <row>
-         <entry><literal>LogicalRewriteSync</literal></entry>
-         <entry>Waiting for logical rewrite mappings to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>LogicalRewriteTruncate</literal></entry>
-         <entry>Waiting for truncate of mapping data during a logical rewrite.</entry>
-        </row>
-        <row>
-         <entry><literal>LogicalRewriteWrite</literal></entry>
-         <entry>Waiting for a write of logical rewrite mappings.</entry>
-        </row>
-        <row>
-         <entry><literal>ProcSignalBarrier</literal></entry>
-         <entry>Waiting for a barrier event to be processed by all backends.</entry>
-        </row>
-        <row>
-         <entry><literal>RelationMapRead</literal></entry>
-         <entry>Waiting for a read of the relation map file.</entry>
-        </row>
-        <row>
-         <entry><literal>RelationMapSync</literal></entry>
-         <entry>Waiting for the relation map file to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>RelationMapWrite</literal></entry>
-         <entry>Waiting for a write to the relation map file.</entry>
-        </row>
-        <row>
-         <entry><literal>ReorderBufferRead</literal></entry>
-         <entry>Waiting for a read during reorder buffer management.</entry>
-        </row>
-        <row>
-         <entry><literal>ReorderBufferWrite</literal></entry>
-         <entry>Waiting for a write during reorder buffer management.</entry>
-        </row>
-        <row>
-         <entry><literal>ReorderLogicalMappingRead</literal></entry>
-         <entry>Waiting for a read of a logical mapping during reorder buffer management.</entry>
-        </row>
-        <row>
-         <entry><literal>ReplicationSlotRead</literal></entry>
-         <entry>Waiting for a read from a replication slot control file.</entry>
-        </row>
-        <row>
-         <entry><literal>ReplicationSlotRestoreSync</literal></entry>
-         <entry>Waiting for a replication slot control file to reach stable storage while restoring it to
memory.</entry>
-        </row>
-        <row>
-         <entry><literal>ReplicationSlotSync</literal></entry>
-         <entry>Waiting for a replication slot control file to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>ReplicationSlotWrite</literal></entry>
-         <entry>Waiting for a write to a replication slot control file.</entry>
-        </row>
-        <row>
-         <entry><literal>SLRUFlushSync</literal></entry>
-         <entry>Waiting for SLRU data to reach stable storage during a checkpoint or database shutdown.</entry>
-        </row>
-        <row>
-         <entry><literal>SLRURead</literal></entry>
-         <entry>Waiting for a read of an SLRU page.</entry>
-        </row>
-        <row>
-         <entry><literal>SLRUSync</literal></entry>
-         <entry>Waiting for SLRU data to reach stable storage following a page write.</entry>
-        </row>
-        <row>
-         <entry><literal>SLRUWrite</literal></entry>
-         <entry>Waiting for a write of an SLRU page.</entry>
-        </row>
-        <row>
-         <entry><literal>SnapbuildRead</literal></entry>
-         <entry>Waiting for a read of a serialized historical catalog snapshot.</entry>
-        </row>
-        <row>
-         <entry><literal>SnapbuildSync</literal></entry>
-         <entry>Waiting for a serialized historical catalog snapshot to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>SnapbuildWrite</literal></entry>
-         <entry>Waiting for a write of a serialized historical catalog snapshot.</entry>
-        </row>
-        <row>
-         <entry><literal>TimelineHistoryFileSync</literal></entry>
-         <entry>Waiting for a timeline history file received via streaming replication to reach stable
storage.</entry>
-        </row>
-        <row>
-         <entry><literal>TimelineHistoryFileWrite</literal></entry>
-         <entry>Waiting for a write of a timeline history file received via streaming replication.</entry>
-        </row>
-        <row>
-         <entry><literal>TimelineHistoryRead</literal></entry>
-         <entry>Waiting for a read of a timeline history file.</entry>
-        </row>
-        <row>
-         <entry><literal>TimelineHistorySync</literal></entry>
-         <entry>Waiting for a newly created timeline history file to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>TimelineHistoryWrite</literal></entry>
-         <entry>Waiting for a write of a newly created timeline history file.</entry>
-        </row>
-        <row>
-         <entry><literal>TwophaseFileRead</literal></entry>
-         <entry>Waiting for a read of a two phase state file.</entry>
-        </row>
-        <row>
-         <entry><literal>TwophaseFileSync</literal></entry>
-         <entry>Waiting for a two phase state file to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>TwophaseFileWrite</literal></entry>
-         <entry>Waiting for a write of a two phase state file.</entry>
-        </row>
-        <row>
-         <entry><literal>WALBootstrapSync</literal></entry>
-         <entry>Waiting for WAL to reach stable storage during bootstrapping.</entry>
-        </row>
-        <row>
-         <entry><literal>WALBootstrapWrite</literal></entry>
-         <entry>Waiting for a write of a WAL page during bootstrapping.</entry>
-        </row>
-        <row>
-         <entry><literal>WALCopyRead</literal></entry>
-         <entry>Waiting for a read when creating a new WAL segment by copying an existing one.</entry>
-        </row>
-        <row>
-         <entry><literal>WALCopySync</literal></entry>
-         <entry>Waiting a new WAL segment created by copying an existing one to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>WALCopyWrite</literal></entry>
-         <entry>Waiting for a write when creating a new WAL segment by copying an existing one.</entry>
-        </row>
-        <row>
-         <entry><literal>WALInitSync</literal></entry>
-         <entry>Waiting for a newly initialized WAL file to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>WALInitWrite</literal></entry>
-         <entry>Waiting for a write while initializing a new WAL file.</entry>
-        </row>
-        <row>
-         <entry><literal>WALRead</literal></entry>
-         <entry>Waiting for a read from a WAL file.</entry>
-        </row>
-        <row>
-         <entry><literal>WALSenderTimelineHistoryRead</literal></entry>
-         <entry>Waiting for a read from a timeline history file during walsender timeline command.</entry>
-        </row>
-        <row>
-         <entry><literal>WALSync</literal></entry>
-         <entry>Waiting for a WAL file to reach stable storage.</entry>
-        </row>
-        <row>
-         <entry><literal>WALSyncMethodAssign</literal></entry>
-         <entry>Waiting for data to reach stable storage while assigning WAL sync method.</entry>
-        </row>
-        <row>
-         <entry><literal>WALWrite</literal></entry>
-         <entry>Waiting for a write to a WAL file.</entry>
-        </row>
-      </tbody>
-     </tgroup>
-    </table>
+     <tbody>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>ShmemIndexLock</literal>
+       </para>
+       <para>
+        Waiting to find or allocate space in shared memory.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>OidGenLock</literal>
+       </para>
+       <para>
+        Waiting to allocate or assign an OID.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>XidGenLock</literal>
+       </para>
+       <para>
+        Waiting to allocate or assign a transaction id.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>ProcArrayLock</literal>
+       </para>
+       <para>
+        Waiting to get a snapshot or clearing a transaction id at
+        transaction end.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>SInvalReadLock</literal>
+       </para>
+       <para>
+        Waiting to retrieve or remove messages from shared invalidation
+        queue.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>SInvalWriteLock</literal>
+       </para>
+       <para>
+        Waiting to add a message in shared invalidation queue.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>WALBufMappingLock</literal>
+       </para>
+       <para>
+        Waiting to replace a page in WAL buffers.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>WALWriteLock</literal>
+       </para>
+       <para>
+        Waiting for WAL buffers to be written to disk.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>ControlFileLock</literal>
+       </para>
+       <para>
+        Waiting to read or update the control file or creation of a
+        new WAL file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>CheckpointLock</literal>
+       </para>
+       <para>
+        Waiting to perform checkpoint.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>CLogControlLock</literal>
+       </para>
+       <para>
+        Waiting to read or update transaction status.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>SubtransControlLock</literal>
+       </para>
+       <para>
+        Waiting to read or update sub-transaction information.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>MultiXactGenLock</literal>
+       </para>
+       <para>
+        Waiting to read or update shared multixact state.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>MultiXactOffsetControlLock</literal>
+       </para>
+       <para>
+        Waiting to read or update multixact offset mappings.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>MultiXactMemberControlLock</literal>
+       </para>
+       <para>
+        Waiting to read or update multixact member mappings.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>RelCacheInitLock</literal>
+       </para>
+       <para>
+        Waiting to read or write relation cache initialization file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>CheckpointerCommLock</literal>
+       </para>
+       <para>
+        Waiting to manage fsync requests.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>TwoPhaseStateLock</literal>
+       </para>
+       <para>
+        Waiting to read or update the state of prepared transactions.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>TablespaceCreateLock</literal>
+       </para>
+       <para>
+        Waiting to create or drop the tablespace.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>BtreeVacuumLock</literal>
+       </para>
+       <para>
+        Waiting to read or update vacuum-related information for a
+        B-tree index.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>AddinShmemInitLock</literal>
+       </para>
+       <para>
+        Waiting to manage space allocation in shared memory.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>AutovacuumLock</literal>
+       </para>
+       <para>
+        Autovacuum worker or launcher waiting to update or
+        read the current state of autovacuum workers.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>AutovacuumScheduleLock</literal>
+       </para>
+       <para>
+        Waiting to ensure that the table selected for a vacuum
+        still needs vacuuming.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>SyncScanLock</literal>
+       </para>
+       <para>
+        Waiting to get the start location of a scan on a table for
+        synchronized scans.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>RelationMappingLock</literal>
+       </para>
+       <para>
+        Waiting to update the relation map file used to store catalog
+        to filenode mapping.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>AsyncCtlLock</literal>
+       </para>
+       <para>
+        Waiting to read or update shared notification state.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>AsyncQueueLock</literal>
+       </para>
+       <para>
+        Waiting to read or update notification messages.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>SerializableXactHashLock</literal>
+       </para>
+       <para>
+        Waiting to retrieve or store information about serializable
+        transactions.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>SerializableFinishedListLock</literal>
+       </para>
+       <para>
+        Waiting to access the list of finished serializable
+        transactions.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>SerializablePredicateLockListLock</literal>
+       </para>
+       <para>
+        Waiting to perform an operation on a list of locks held by
+        serializable transactions.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>OldSerXidLock</literal>
+       </para>
+       <para>
+        Waiting to read or record conflicting serializable
+        transactions.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>SyncRepLock</literal>
+       </para>
+       <para>
+        Waiting to read or update information about synchronous
+        replicas.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>BackgroundWorkerLock</literal>
+       </para>
+       <para>
+        Waiting to read or update background worker state.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>DynamicSharedMemoryControlLock</literal>
+       </para>
+       <para>
+        Waiting to read or update dynamic shared memory state.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>AutoFileLock</literal>
+       </para>
+       <para>
+        Waiting to update the <filename>postgresql.auto.conf</filename> file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>ReplicationSlotAllocationLock</literal>
+       </para>
+       <para>
+        Waiting to allocate or free a replication slot.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>ReplicationSlotControlLock</literal>
+       </para>
+       <para>
+        Waiting to read or update replication slot state.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>CommitTsControlLock</literal>
+       </para>
+       <para>
+        Waiting to read or update transaction commit timestamps.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>CommitTsLock</literal>
+       </para>
+       <para>
+        Waiting to read or update the last value set for the
+        transaction timestamp.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>ReplicationOriginLock</literal>
+       </para>
+       <para>
+        Waiting to setup, drop or use replication origin.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>MultiXactTruncationLock</literal>
+       </para>
+       <para>
+        Waiting to read or truncate multixact information.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>OldSnapshotTimeMapLock</literal>
+       </para>
+       <para>
+        Waiting to read or update old snapshot control information.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>LogicalRepWorkerLock</literal>
+       </para>
+       <para>
+        Waiting for action on logical replication worker to finish.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>CLogTruncationLock</literal>
+       </para>
+       <para>
+        Waiting to execute <function>pg_xact_status</function> or update
+        the oldest transaction id available to it.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>clog</literal>
+       </para>
+       <para>
+        Waiting for I/O on a clog (transaction status) buffer.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>commit_timestamp</literal>
+       </para>
+       <para>
+        Waiting for I/O on commit timestamp buffer.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>subtrans</literal>
+       </para>
+       <para>
+        Waiting for I/O on a subtransaction buffer.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>multixact_offset</literal>
+       </para>
+       <para>
+        Waiting for I/O on a multixact offset buffer.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>multixact_member</literal>
+       </para>
+       <para>
+        Waiting for I/O on a multixact_member buffer.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>async</literal>
+       </para>
+       <para>
+        Waiting for I/O on an async (notify) buffer.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>oldserxid</literal>
+       </para>
+       <para>
+        Waiting for I/O on an oldserxid buffer.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>wal_insert</literal>
+       </para>
+       <para>
+        Waiting to insert WAL into a memory buffer.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>buffer_content</literal>
+       </para>
+       <para>
+        Waiting to read or write a data page in memory.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>buffer_io</literal>
+       </para>
+       <para>
+        Waiting for I/O on a data page.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>replication_origin</literal>
+       </para>
+       <para>
+        Waiting to read or update the replication progress.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>replication_slot_io</literal>
+       </para>
+       <para>
+        Waiting for I/O on a replication slot.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>proc</literal>
+       </para>
+       <para>
+        Waiting to read or update the fast-path lock information.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>buffer_mapping</literal>
+       </para>
+       <para>
+        Waiting to associate a data block with a buffer in the buffer
+        pool.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>lock_manager</literal>
+       </para>
+       <para>
+        Waiting to add or examine locks for backends, or waiting to
+        join or exit a locking group (used by parallel query).
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>predicate_lock_manager</literal>
+       </para>
+       <para>
+        Waiting to add or examine predicate lock information.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>serializable_xact</literal>
+       </para>
+       <para>
+        Waiting to perform an operation on a serializable transaction
+        in a parallel query.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>parallel_query_dsa</literal>
+       </para>
+       <para>
+        Waiting for parallel query dynamic shared memory allocation lock.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>tbm</literal>
+       </para>
+       <para>
+        Waiting for TBM shared iterator lock.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>parallel_append</literal>
+       </para>
+       <para>
+        Waiting to choose the next subplan during Parallel Append plan
+        execution.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>LWLock</literal> / <literal>parallel_hash_join</literal>
+       </para>
+       <para>
+        Waiting to allocate or exchange a chunk of memory or update
+        counters during Parallel Hash plan execution.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Lock</literal> / <literal>relation</literal>
+       </para>
+       <para>
+        Waiting to acquire a lock on a relation.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Lock</literal> / <literal>extend</literal>
+       </para>
+       <para>
+        Waiting to extend a relation.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Lock</literal> / <literal>page</literal>
+       </para>
+       <para>
+        Waiting to acquire a lock on page of a relation.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Lock</literal> / <literal>tuple</literal>
+       </para>
+       <para>
+        Waiting to acquire a lock on a tuple.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Lock</literal> / <literal>transactionid</literal>
+       </para>
+       <para>
+        Waiting for a transaction to finish.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Lock</literal> / <literal>virtualxid</literal>
+       </para>
+       <para>
+        Waiting to acquire a virtual xid lock.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Lock</literal> / <literal>speculative token</literal>
+       </para>
+       <para>
+        Waiting to acquire a speculative insertion lock.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Lock</literal> / <literal>object</literal>
+       </para>
+       <para>
+        Waiting to acquire a lock on a non-relation database object.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Lock</literal> / <literal>userlock</literal>
+       </para>
+       <para>
+        Waiting to acquire a user lock.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Lock</literal> / <literal>advisory</literal>
+       </para>
+       <para>
+        Waiting to acquire an advisory user lock.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>BufferPin</literal> / <literal>BufferPin</literal>
+       </para>
+       <para>
+        Waiting to acquire a pin on a buffer.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>ArchiverMain</literal>
+       </para>
+       <para>
+        Waiting in main loop of the archiver process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>AutoVacuumMain</literal>
+       </para>
+       <para>
+        Waiting in main loop of autovacuum launcher process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>BgWriterHibernate</literal>
+       </para>
+       <para>
+        Waiting in background writer process, hibernating.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>BgWriterMain</literal>
+       </para>
+       <para>
+        Waiting in main loop of background writer process background worker.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>CheckpointerMain</literal>
+       </para>
+       <para>
+        Waiting in main loop of checkpointer process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>LogicalApplyMain</literal>
+       </para>
+       <para>
+        Waiting in main loop of logical apply process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>LogicalLauncherMain</literal>
+       </para>
+       <para>
+        Waiting in main loop of logical launcher process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>PgStatMain</literal>
+       </para>
+       <para>
+        Waiting in main loop of the statistics collector process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>RecoveryWalStream</literal>
+       </para>
+       <para>
+        Waiting for WAL from a stream at recovery.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>SysLoggerMain</literal>
+       </para>
+       <para>
+        Waiting in main loop of syslogger process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>WalReceiverMain</literal>
+       </para>
+       <para>
+        Waiting in main loop of WAL receiver process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>WalSenderMain</literal>
+       </para>
+       <para>
+        Waiting in main loop of WAL sender process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Activity</literal> / <literal>WalWriterMain</literal>
+       </para>
+       <para>
+        Waiting in main loop of WAL writer process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Client</literal> / <literal>ClientRead</literal>
+       </para>
+       <para>
+        Waiting to read data from the client.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Client</literal> / <literal>ClientWrite</literal>
+       </para>
+       <para>
+        Waiting to write data to the client.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Client</literal> / <literal>GSSOpenServer</literal>
+       </para>
+       <para>
+        Waiting to read data from the client while establishing the GSSAPI
+        session.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Client</literal> / <literal>LibPQWalReceiverConnect</literal>
+       </para>
+       <para>
+        Waiting in WAL receiver to establish connection to remote server.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Client</literal> / <literal>LibPQWalReceiverReceive</literal>
+       </para>
+       <para>
+        Waiting in WAL receiver to receive data from remote server.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Client</literal> / <literal>SSLOpenServer</literal>
+       </para>
+       <para>
+        Waiting for SSL while attempting connection.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Client</literal> / <literal>WalReceiverWaitStart</literal>
+       </para>
+       <para>
+        Waiting for startup process to send initial data for streaming
+        replication.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Client</literal> / <literal>WalSenderWaitForWAL</literal>
+       </para>
+       <para>
+        Waiting for WAL to be flushed in WAL sender process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Client</literal> / <literal>WalSenderWriteData</literal>
+       </para>
+       <para>
+        Waiting for any activity when processing replies from WAL receiver in
+        WAL sender process.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Extension</literal> / <literal>Extension</literal>
+       </para>
+       <para>
+        Waiting in an extension.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>BackupWaitWalArchive</literal>
+       </para>
+       <para>
+        Waiting for WAL files required for the backup to be successfully
+        archived.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>BgWorkerShutdown</literal>
+       </para>
+       <para>
+        Waiting for background worker to shut down.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>BgWorkerStartup</literal>
+       </para>
+       <para>
+        Waiting for background worker to start up.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>BtreePage</literal>
+       </para>
+       <para>
+        Waiting for the page number needed to continue a parallel B-tree scan
+        to become available.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>CheckpointDone</literal>
+       </para>
+       <para>
+        Waiting for a checkpoint to complete.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>CheckpointStart</literal>
+       </para>
+       <para>
+        Waiting for a checkpoint to start.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>ClogGroupUpdate</literal>
+       </para>
+       <para>
+        Waiting for group leader to update transaction status at transaction
+        end.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>ExecuteGather</literal>
+       </para>
+       <para>
+        Waiting for activity from child process while
+        executing <literal>Gather</literal> node.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/Batch/Allocating</literal>
+       </para>
+       <para>
+        Waiting for an elected Parallel Hash participant to allocate a hash
+        table.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/Batch/Electing</literal>
+       </para>
+       <para>
+        Electing a Parallel Hash participant to allocate a hash table.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/Batch/Loading</literal>
+       </para>
+       <para>
+        Waiting for other Parallel Hash participants to finish loading a hash
+        table.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/Build/Allocating</literal>
+       </para>
+       <para>
+        Waiting for an elected Parallel Hash participant to allocate the
+        initial hash table.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/Build/Electing</literal>
+       </para>
+       <para>
+        Electing a Parallel Hash participant to allocate the initial hash table.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/Build/HashingInner</literal>
+       </para>
+       <para>
+        Waiting for other Parallel Hash participants to finish hashing the
+        inner relation.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/Build/HashingOuter</literal>
+       </para>
+       <para>
+        Waiting for other Parallel Hash participants to finish partitioning
+        the outer relation.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/GrowBatches/Allocating</literal>
+       </para>
+       <para>
+        Waiting for an elected Parallel Hash participant to allocate more
+        batches.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/GrowBatches/Deciding</literal>
+       </para>
+       <para>
+        Electing a Parallel Hash participant to decide on future batch growth.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/GrowBatches/Electing</literal>
+       </para>
+       <para>
+        Electing a Parallel Hash participant to allocate more batches.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/GrowBatches/Finishing</literal>
+       </para>
+       <para>
+        Waiting for an elected Parallel Hash participant to decide on future
+        batch growth.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/GrowBatches/Repartitioning</literal>
+       </para>
+       <para>
+        Waiting for other Parallel Hash participants to finishing
+        repartitioning.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/GrowBuckets/Allocating</literal>
+       </para>
+       <para>
+        Waiting for an elected Parallel Hash participant to finish allocating
+        more buckets.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/GrowBuckets/Electing</literal>
+       </para>
+       <para>
+        Electing a Parallel Hash participant to allocate more buckets.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Hash/GrowBuckets/Reinserting</literal>
+       </para>
+       <para>
+        Waiting for other Parallel Hash participants to finish inserting
+        tuples into new buckets.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>LogicalSyncData</literal>
+       </para>
+       <para>
+        Waiting for logical replication remote server to send data for initial
+        table synchronization.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>LogicalSyncStateChange</literal>
+       </para>
+       <para>
+        Waiting for logical replication remote server to change state.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>MessageQueueInternal</literal>
+       </para>
+       <para>
+        Waiting for other process to be attached in shared message queue.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>MessageQueuePutMessage</literal>
+       </para>
+       <para>
+        Waiting to write a protocol message to a shared message queue.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>MessageQueueReceive</literal>
+       </para>
+       <para>
+        Waiting to receive bytes from a shared message queue.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>MessageQueueSend</literal>
+       </para>
+       <para>
+        Waiting to send bytes to a shared message queue.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>ParallelBitmapScan</literal>
+       </para>
+       <para>
+        Waiting for parallel bitmap scan to become initialized.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>ParallelCreateIndexScan</literal>
+       </para>
+       <para>
+        Waiting for parallel <command>CREATE INDEX</command> workers to finish
+        heap scan.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>ParallelFinish</literal>
+       </para>
+       <para>
+        Waiting for parallel workers to finish computing.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>ProcArrayGroupUpdate</literal>
+       </para>
+       <para>
+        Waiting for group leader to clear transaction id at transaction end.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>Promote</literal>
+       </para>
+       <para>
+        Waiting for standby promotion.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>RecoveryConflictSnapshot</literal>
+       </para>
+       <para>
+        Waiting for recovery conflict resolution on a vacuum cleanup.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>RecoveryConflictTablespace</literal>
+       </para>
+       <para>
+        Waiting for recovery conflict resolution on dropping tablespace.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>RecoveryPause</literal>
+       </para>
+       <para>
+        Waiting for recovery to be resumed.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>ReplicationOriginDrop</literal>
+       </para>
+       <para>
+        Waiting for a replication origin to become inactive to be dropped.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>ReplicationSlotDrop</literal>
+       </para>
+       <para>
+        Waiting for a replication slot to become inactive to be dropped.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>SafeSnapshot</literal>
+       </para>
+       <para>
+        Waiting for a snapshot for a <literal>READ ONLY DEFERRABLE</literal>
+        transaction.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IPC</literal> / <literal>SyncRep</literal>
+       </para>
+       <para>
+        Waiting for confirmation from remote server during synchronous
+        replication.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Timeout</literal> / <literal>BaseBackupThrottle</literal>
+       </para>
+       <para>
+        Waiting during base backup when throttling activity.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Timeout</literal> / <literal>PgSleep</literal>
+       </para>
+       <para>
+        Waiting in process that called <function>pg_sleep</function>.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Timeout</literal> / <literal>RecoveryApplyDelay</literal>
+       </para>
+       <para>
+        Waiting to apply WAL at recovery because it is delayed.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Timeout</literal> / <literal>RecoveryRetrieveRetryInterval</literal>
+       </para>
+       <para>
+        Waiting when WAL data is not available from any kind of sources
+        (<filename>pg_wal</filename>, archive or stream) before trying
+        again to retrieve WAL data, at recovery.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>Timeout</literal> / <literal>VacuumDelay</literal>
+       </para>
+       <para>
+        Waiting in a cost-based vacuum delay point.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>BufFileRead</literal>
+       </para>
+       <para>
+        Waiting for a read from a buffered file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>BufFileWrite</literal>
+       </para>
+       <para>
+        Waiting for a write to a buffered file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ControlFileRead</literal>
+       </para>
+       <para>
+        Waiting for a read from the control file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ControlFileSync</literal>
+       </para>
+       <para>
+        Waiting for the control file to reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ControlFileSyncUpdate</literal>
+       </para>
+       <para>
+        Waiting for an update to the control file to reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ControlFileWrite</literal>
+       </para>
+       <para>
+        Waiting for a write to the control file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ControlFileWriteUpdate</literal>
+       </para>
+       <para>
+        Waiting for a write to update the control file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>CopyFileRead</literal>
+       </para>
+       <para>
+        Waiting for a read during a file copy operation.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>CopyFileWrite</literal>
+       </para>
+       <para>
+        Waiting for a write during a file copy operation.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>DataFileExtend</literal>
+       </para>
+       <para>
+        Waiting for a relation data file to be extended.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>DataFileFlush</literal>
+       </para>
+       <para>
+        Waiting for a relation data file to reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>DataFileImmediateSync</literal>
+       </para>
+       <para>
+        Waiting for an immediate synchronization of a relation data file to
+        stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>DataFilePrefetch</literal>
+       </para>
+       <para>
+        Waiting for an asynchronous prefetch from a relation data file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>DataFileRead</literal>
+       </para>
+       <para>
+        Waiting for a read from a relation data file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>DataFileSync</literal>
+       </para>
+       <para>
+        Waiting for changes to a relation data file to reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>DataFileTruncate</literal>
+       </para>
+       <para>
+        Waiting for a relation data file to be truncated.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>DataFileWrite</literal>
+       </para>
+       <para>
+        Waiting for a write to a relation data file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>DSMFillZeroWrite</literal>
+       </para>
+       <para>
+        Waiting to write zero bytes to a dynamic shared memory backing file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LockFileAddToDataDirRead</literal>
+       </para>
+       <para>
+        Waiting for a read while adding a line to the data directory lock file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LockFileAddToDataDirSync</literal>
+       </para>
+       <para>
+        Waiting for data to reach stable storage while adding a line to the
+        data directory lock file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LockFileAddToDataDirWrite</literal>
+       </para>
+       <para>
+        Waiting for a write while adding a line to the data directory lock file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LockFileCreateRead</literal>
+       </para>
+       <para>
+        Waiting to read while creating the data directory lock file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LockFileCreateSync</literal>
+       </para>
+       <para>
+        Waiting for data to reach stable storage while creating the data
+        directory lock file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LockFileCreateWrite</literal>
+       </para>
+       <para>
+        Waiting for a write while creating the data directory lock file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LockFileReCheckDataDirRead</literal>
+       </para>
+       <para>
+        Waiting for a read during recheck of the data directory lock file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LogicalRewriteCheckpointSync</literal>
+       </para>
+       <para>
+        Waiting for logical rewrite mappings to reach stable storage during a
+        checkpoint.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LogicalRewriteMappingSync</literal>
+       </para>
+       <para>
+        Waiting for mapping data to reach stable storage during a logical
+        rewrite.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LogicalRewriteMappingWrite</literal>
+       </para>
+       <para>
+        Waiting for a write of mapping data during a logical rewrite.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LogicalRewriteSync</literal>
+       </para>
+       <para>
+        Waiting for logical rewrite mappings to reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LogicalRewriteTruncate</literal>
+       </para>
+       <para>
+        Waiting for truncate of mapping data during a logical rewrite.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>LogicalRewriteWrite</literal>
+       </para>
+       <para>
+        Waiting for a write of logical rewrite mappings.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ProcSignalBarrier</literal>
+       </para>
+       <para>
+        Waiting for a barrier event to be processed by all backends.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>RelationMapRead</literal>
+       </para>
+       <para>
+        Waiting for a read of the relation map file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>RelationMapSync</literal>
+       </para>
+       <para>
+        Waiting for the relation map file to reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>RelationMapWrite</literal>
+       </para>
+       <para>
+        Waiting for a write to the relation map file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ReorderBufferRead</literal>
+       </para>
+       <para>
+        Waiting for a read during reorder buffer management.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ReorderBufferWrite</literal>
+       </para>
+       <para>
+        Waiting for a write during reorder buffer management.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ReorderLogicalMappingRead</literal>
+       </para>
+       <para>
+        Waiting for a read of a logical mapping during reorder buffer
+        management.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ReplicationSlotRead</literal>
+       </para>
+       <para>
+        Waiting for a read from a replication slot control file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ReplicationSlotRestoreSync</literal>
+       </para>
+       <para>
+        Waiting for a replication slot control file to reach stable storage
+        while restoring it to memory.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ReplicationSlotSync</literal>
+       </para>
+       <para>
+        Waiting for a replication slot control file to reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>ReplicationSlotWrite</literal>
+       </para>
+       <para>
+        Waiting for a write to a replication slot control file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>SLRUFlushSync</literal>
+       </para>
+       <para>
+        Waiting for SLRU data to reach stable storage during a checkpoint or
+        database shutdown.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>SLRURead</literal>
+       </para>
+       <para>
+        Waiting for a read of an SLRU page.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>SLRUSync</literal>
+       </para>
+       <para>
+        Waiting for SLRU data to reach stable storage following a page write.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>SLRUWrite</literal>
+       </para>
+       <para>
+        Waiting for a write of an SLRU page.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>SnapbuildRead</literal>
+       </para>
+       <para>
+        Waiting for a read of a serialized historical catalog snapshot.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>SnapbuildSync</literal>
+       </para>
+       <para>
+        Waiting for a serialized historical catalog snapshot to reach stable
+        storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>SnapbuildWrite</literal>
+       </para>
+       <para>
+        Waiting for a write of a serialized historical catalog snapshot.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>TimelineHistoryFileSync</literal>
+       </para>
+       <para>
+        Waiting for a timeline history file received via streaming replication
+        to reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>TimelineHistoryFileWrite</literal>
+       </para>
+       <para>
+        Waiting for a write of a timeline history file received via streaming
+        replication.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>TimelineHistoryRead</literal>
+       </para>
+       <para>
+        Waiting for a read of a timeline history file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>TimelineHistorySync</literal>
+       </para>
+       <para>
+        Waiting for a newly created timeline history file to reach stable
+        storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>TimelineHistoryWrite</literal>
+       </para>
+       <para>
+        Waiting for a write of a newly created timeline history file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>TwophaseFileRead</literal>
+       </para>
+       <para>
+        Waiting for a read of a two phase state file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>TwophaseFileSync</literal>
+       </para>
+       <para>
+        Waiting for a two phase state file to reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>TwophaseFileWrite</literal>
+       </para>
+       <para>
+        Waiting for a write of a two phase state file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALBootstrapSync</literal>
+       </para>
+       <para>
+        Waiting for WAL to reach stable storage during bootstrapping.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALBootstrapWrite</literal>
+       </para>
+       <para>
+        Waiting for a write of a WAL page during bootstrapping.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALCopyRead</literal>
+       </para>
+       <para>
+        Waiting for a read when creating a new WAL segment by copying an
+        existing one.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALCopySync</literal>
+       </para>
+       <para>
+        Waiting for a new WAL segment created by copying an existing one to
+        reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALCopyWrite</literal>
+       </para>
+       <para>
+        Waiting for a write when creating a new WAL segment by copying an
+        existing one.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALInitSync</literal>
+       </para>
+       <para>
+        Waiting for a newly initialized WAL file to reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALInitWrite</literal>
+       </para>
+       <para>
+        Waiting for a write while initializing a new WAL file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALRead</literal>
+       </para>
+       <para>
+        Waiting for a read from a WAL file.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALSenderTimelineHistoryRead</literal>
+       </para>
+       <para>
+        Waiting for a read from a timeline history file during walsender
+        timeline command.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALSync</literal>
+       </para>
+       <para>
+        Waiting for a WAL file to reach stable storage.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALSyncMethodAssign</literal>
+       </para>
+       <para>
+        Waiting for data to reach stable storage while assigning WAL sync
+        method.
+       </para></entry>
+      </row>
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <literal>IO</literal> / <literal>WALWrite</literal>
+       </para>
+       <para>
+        Waiting for a write to a WAL file.
+       </para></entry>
+      </row>
+     </tbody>
+    </tgroup>
+  </table>

    <note>
     <para>

pgsql-docs by date:

Previous
From: PG Doc comments form
Date:
Subject: psql -f switch and "COPY ... FROM STDIN"
Next
From: Tom Lane
Date:
Subject: Re: Remaining PDF layout issues