]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Document pg_get_multixact_members().
authorNathan Bossart <nathan@postgresql.org>
Tue, 1 Jul 2025 18:54:38 +0000 (13:54 -0500)
committerNathan Bossart <nathan@postgresql.org>
Tue, 1 Jul 2025 18:54:38 +0000 (13:54 -0500)
Oversight in commit 0ac5ad5134.

Author: Sami Imseih <samimseih@gmail.com>
Co-authored-by: Álvaro Herrera <alvherre@kurilemu.de>
Reviewed-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Discussion: https://postgr.es/m/20150619215231.GT133018%40postgresql.org
Discussion: https://postgr.es/m/CAA5RZ0sjQDDwJfMRb%3DZ13nDLuRpF13ME2L_BdGxi0op8RKjmDg%40mail.gmail.com
Backpatch-through: 13

doc/src/sgml/func.sgml
doc/src/sgml/maintenance.sgml

index f11c4f711d427f12676549ce1d596fabe1a5cfee..e2bc769e50ba1a665383a6d86487146f91c33a61 100644 (file)
@@ -24794,6 +24794,31 @@ SELECT collation for ('foo' COLLATE "de_DE");
         a subtransaction ID.
        </para></entry>
       </row>
+
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <indexterm>
+         <primary>pg_get_multixact_members</primary>
+        </indexterm>
+        <function>pg_get_multixact_members</function> ( <parameter>multixid</parameter> <type>xid</type> )
+        <returnvalue>setof record</returnvalue>
+        ( <parameter>xid</parameter> <type>xid</type>,
+        <parameter>mode</parameter> <type>text</type> )
+       </para>
+       <para>
+        Returns the transaction ID and lock mode for each member of the
+        specified multixact ID.  The lock modes <literal>forupd</literal>,
+        <literal>fornokeyupd</literal>, <literal>sh</literal>, and
+        <literal>keysh</literal> correspond to the row-level locks
+        <literal>FOR UPDATE</literal>, <literal>FOR NO KEY UPDATE</literal>,
+        <literal>FOR SHARE</literal>, and <literal>FOR KEY SHARE</literal>,
+        respectively, as described in <xref linkend="locking-rows"/>.  Two
+        additional modes are specific to multixacts:
+        <literal>nokeyupd</literal>, used by updates that do not modify key
+        columns, and <literal>upd</literal>, used by updates or deletes that
+        modify key columns.
+       </para></entry>
+      </row>
      </tbody>
     </tgroup>
    </table>
@@ -24802,7 +24827,8 @@ SELECT collation for ('foo' COLLATE "de_DE");
     The internal transaction ID type <type>xid</type> is 32 bits wide and
     wraps around every 4 billion transactions.  However,
     the functions shown in <xref linkend="functions-pg-snapshot"/>, except
-    <function>age</function> and <function>mxid_age</function>, use a
+    <function>age</function>, <function>mxid_age</function>, and
+    <function>pg_get_multixact_members</function>, use a
     64-bit type <type>xid8</type> that does not wrap around during the life
     of an installation, and can be converted to <type>xid</type> by casting if
     required.  The data type <type>pg_snapshot</type> stores information about
index 90237058af07050e5ad01af88e5661fdd7bc4f78..aa2df371efb7e0875a5a2bfddc1528fa88ab8691 100644 (file)
@@ -759,7 +759,10 @@ HINT:  Stop the postmaster and vacuum that database in single-user mode.
      careful aging management, storage cleanup, and wraparound handling.
      There is a separate storage area which holds the list of members in
      each multixact, which also uses a 32-bit counter and which must also
-     be managed.
+     be managed.  The system function
+     <function>pg_get_multixact_members()</function> described in
+     <xref linkend="functions-pg-snapshot"/> can be used to examine the
+     transaction IDs associated with a multixact ID.
     </para>
 
     <para>