]> granicus.if.org Git - postgresql/commitdiff
Remove unnecessary BufferGetPage() calls in fsm_vacuum_page().
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 29 Mar 2018 16:44:19 +0000 (12:44 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 29 Mar 2018 16:44:19 +0000 (12:44 -0400)
Just noticed that these were quite redundant, since we're holding the
page address in a local variable anyway, and we have pin on the buffer
throughout.

Also improve a comment.

src/backend/storage/freespace/freespace.c

index fd18c851140de77b194a95b7158d24ea3513dd2e..65c4e74999f101a4ae978df0fed5a70fd02288ed 100644 (file)
@@ -866,7 +866,7 @@ fsm_vacuum_page(Relation rel, FSMAddress addr,
                        if (fsm_get_avail(page, slot) != child_avail)
                        {
                                LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE);
-                               fsm_set_avail(BufferGetPage(buf), slot, child_avail);
+                               fsm_set_avail(page, slot, child_avail);
                                MarkBufferDirtyHint(buf, false);
                                LockBuffer(buf, BUFFER_LOCK_UNLOCK);
                        }
@@ -874,12 +874,13 @@ fsm_vacuum_page(Relation rel, FSMAddress addr,
        }
 
        /* Now get the maximum value on the page, to return to caller */
-       max_avail = fsm_get_max_avail(BufferGetPage(buf));
+       max_avail = fsm_get_max_avail(page);
 
        /*
         * Reset the next slot pointer. This encourages the use of low-numbered
         * pages, increasing the chances that a later vacuum can truncate the
-        * relation.
+        * relation.  We don't bother with a lock here, nor with marking the page
+        * dirty if it wasn't already, since this is just a hint.
         */
        ((FSMPage) PageGetContents(page))->fp_next_slot = 0;