]> granicus.if.org Git - postgresql/commitdiff
Remove duplicate code from ReorderBufferCleanupTXN().
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 5 Sep 2016 00:49:44 +0000 (20:49 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 5 Sep 2016 00:49:44 +0000 (20:49 -0400)
Andres is apparently the only hacker who thinks this code is better as-is.
I (tgl) follow some of his logic, but the fact that it's setting off
warnings from static code analyzers seems like a sufficient reason to
put the complexity into a comment rather than the code.

Aleksander Alekseev

Discussion: <20160404190345.54d84ee8@fujitsu>

src/backend/replication/logical/reorderbuffer.c

index 43b584cf7e2d771dc697590de0438d22e926c795..9b430b9acb59e039d2d6f5620c9a058a6f05d55d 100644 (file)
@@ -1158,17 +1158,15 @@ ReorderBufferCleanupTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
                txn->base_snapshot_lsn = InvalidXLogRecPtr;
        }
 
-       /* delete from list of known subxacts */
-       if (txn->is_known_as_subxact)
-       {
-               /* NB: nsubxacts count of parent will be too high now */
-               dlist_delete(&txn->node);
-       }
-       /* delete from LSN ordered list of toplevel TXNs */
-       else
-       {
-               dlist_delete(&txn->node);
-       }
+       /*
+        * Remove TXN from its containing list.
+        *
+        * Note: if txn->is_known_as_subxact, we are deleting the TXN from its
+        * parent's list of known subxacts; this leaves the parent's nsubxacts
+        * count too high, but we don't care.  Otherwise, we are deleting the TXN
+        * from the LSN-ordered list of toplevel TXNs.
+        */
+       dlist_delete(&txn->node);
 
        /* now remove reference from buffer */
        hash_search(rb->by_txn,