]> granicus.if.org Git - postgresql/commitdiff
Revert XactLockTableWait context setup in conditional multixact wait
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Mon, 25 Aug 2014 19:33:19 +0000 (15:33 -0400)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Mon, 25 Aug 2014 19:33:19 +0000 (15:33 -0400)
There's no point in setting up a context error callback when doing
conditional lock acquisition, because we never actually wait and so the
able wouldn't be able to see it.

Backpatch to 9.4, where this was added.

src/backend/access/heap/heapam.c

index f710cdc3645045b0036bf4e320803cefd80afac4..fa608cf8fd36bd95a7be6e96dfac206ba853847b 100644 (file)
@@ -109,8 +109,7 @@ static void MultiXactIdWait(MultiXactId multi, MultiXactStatus status, uint16 in
                                Relation rel, ItemPointer ctid, XLTW_Oper oper,
                                int *remaining);
 static bool ConditionalMultiXactIdWait(MultiXactId multi, MultiXactStatus status,
-                                                  uint16 infomask, Relation rel, ItemPointer ctid,
-                                                  XLTW_Oper oper, int *remaining);
+                                                  uint16 infomask, Relation rel, int *remaining);
 static XLogRecPtr log_heap_new_cid(Relation relation, HeapTuple tup);
 static HeapTuple ExtractReplicaIdentity(Relation rel, HeapTuple tup, bool key_modified,
                                           bool *copy);
@@ -4431,8 +4430,7 @@ l3:
                                {
                                        if (!ConditionalMultiXactIdWait((MultiXactId) xwait,
                                                                                                  status, infomask, relation,
-                                                                                                       &tuple->t_data->t_ctid,
-                                                                                                       XLTW_Lock, NULL))
+                                                                                                       NULL))
                                                ereport(ERROR,
                                                                (errcode(ERRCODE_LOCK_NOT_AVAILABLE),
                                                                 errmsg("could not obtain lock on row in relation \"%s\"",
@@ -6244,11 +6242,10 @@ MultiXactIdWait(MultiXactId multi, MultiXactStatus status, uint16 infomask,
  */
 static bool
 ConditionalMultiXactIdWait(MultiXactId multi, MultiXactStatus status,
-                                                  uint16 infomask, Relation rel, ItemPointer ctid,
-                                                  XLTW_Oper oper, int *remaining)
+                                                  uint16 infomask, Relation rel, int *remaining)
 {
        return Do_MultiXactIdWait(multi, status, infomask, true,
-                                                         rel, ctid, oper, remaining);
+                                                         rel, NULL, XLTW_None, remaining);
 }
 
 /*