Remove dead code and add comments.
authorHeikki Linnakangas
Mon, 24 Mar 2014 09:02:23 +0000 (11:02 +0200)
committerHeikki Linnakangas
Mon, 24 Mar 2014 09:02:23 +0000 (11:02 +0200)
'cbuffer' variable was left over from an earlier version of the patch to
rewrite the incomplete split handling.

src/backend/access/nbtree/nbtxlog.c

index 665e60b7bd2f78feb4a856f556a9039f7715443e..7e37a4ca58d068c73bc1941d295e88e79e2e27dd 100644 (file)
@@ -130,7 +130,6 @@ btree_xlog_insert(bool isleaf, bool ismeta,
 {
    xl_btree_insert *xlrec = (xl_btree_insert *) XLogRecGetData(record);
    Buffer      buffer;
-   Buffer      cbuffer = InvalidBuffer;
    Page        page;
    char       *datapos;
    int         datalen;
@@ -158,6 +157,15 @@ btree_xlog_insert(bool isleaf, bool ismeta,
        datalen -= sizeof(xl_btree_metadata);
    }
 
+   /*
+    * Insertion to an internal page finishes an incomplete split at the
+    * child level.  Clear the incomplete-split flag in the child.  Note:
+    * during normal operation, the child and parent pages are locked at the
+    * same time, so that clearing the flag and inserting the downlink appear
+    * atomic to other backends.  We don't bother with that during replay,
+    * because readers don't care about the incomplete-split flag and there
+    * cannot be updates happening.
+    */
    if (!isleaf)
    {
        if (record->xl_info & XLR_BKP_BLOCK(0))
@@ -194,9 +202,6 @@ btree_xlog_insert(bool isleaf, bool ismeta,
        }
    }
 
-   if (BufferIsValid(cbuffer))
-       UnlockReleaseBuffer(cbuffer);
-
    /*
     * Note: in normal operation, we'd update the metapage while still holding
     * lock on the page we inserted into.  But during replay it's not
@@ -273,7 +278,8 @@ btree_xlog_split(bool onleft, bool isroot,
 
    /*
     * Clear the incomplete split flag on the left sibling of the child page
-    * this is a downlink for.
+    * this is a downlink for.  (Like in btree_xlog_insert, this can be done
+    * before locking the other pages)
     */
    if (!isleaf)
    {