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,