Push lpp variable closer to usage in heapgetpage()
authorPeter Eisentraut <[email protected]>
Mon, 2 Jan 2023 08:39:04 +0000 (09:39 +0100)
committerPeter Eisentraut <[email protected]>
Mon, 2 Jan 2023 08:39:31 +0000 (09:39 +0100)
Author: Melanie Plageman <[email protected]>
Discussion: https://www.postgresql.org/message-id/flat/CAAKRu_YSOnhKsDyFcqJsKtBSrd32DP-jjXmv7hL0BPD-z0TGXQ@mail.gmail.com

src/backend/access/heap/heapam.c

index 34d83dc7024e294265a2f55b7f202f3adca5c764..13a4b2b5152b56d153b081d19366bc97a79e36a1 100644 (file)
@@ -383,7 +383,6 @@ heapgetpage(TableScanDesc sscan, BlockNumber block)
        int                     lines;
        int                     ntup;
        OffsetNumber lineoff;
-       ItemId          lpp;
        bool            all_visible;
 
        Assert(block < scan->rs_nblocks);
@@ -452,31 +451,30 @@ heapgetpage(TableScanDesc sscan, BlockNumber block)
         */
        all_visible = PageIsAllVisible(page) && !snapshot->takenDuringRecovery;
 
-       for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(page, lineoff);
-                lineoff <= lines;
-                lineoff++, lpp++)
+       for (lineoff = FirstOffsetNumber; lineoff <= lines; lineoff++)
        {
-               if (ItemIdIsNormal(lpp))
-               {
-                       HeapTupleData loctup;
-                       bool            valid;
+               ItemId          lpp = PageGetItemId(page, lineoff);
+               HeapTupleData loctup;
+               bool            valid;
 
-                       loctup.t_tableOid = RelationGetRelid(scan->rs_base.rs_rd);
-                       loctup.t_data = (HeapTupleHeader) PageGetItem(page, lpp);
-                       loctup.t_len = ItemIdGetLength(lpp);
-                       ItemPointerSet(&(loctup.t_self), block, lineoff);
+               if (!ItemIdIsNormal(lpp))
+                       continue;
 
-                       if (all_visible)
-                               valid = true;
-                       else
-                               valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer);
+               loctup.t_tableOid = RelationGetRelid(scan->rs_base.rs_rd);
+               loctup.t_data = (HeapTupleHeader) PageGetItem(page, lpp);
+               loctup.t_len = ItemIdGetLength(lpp);
+               ItemPointerSet(&(loctup.t_self), block, lineoff);
 
-                       HeapCheckForSerializableConflictOut(valid, scan->rs_base.rs_rd,
-                                                                                               &loctup, buffer, snapshot);
+               if (all_visible)
+                       valid = true;
+               else
+                       valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer);
 
-                       if (valid)
-                               scan->rs_vistuples[ntup++] = lineoff;
-               }
+               HeapCheckForSerializableConflictOut(valid, scan->rs_base.rs_rd,
+                                                                                       &loctup, buffer, snapshot);
+
+               if (valid)
+                       scan->rs_vistuples[ntup++] = lineoff;
        }
 
        LockBuffer(buffer, BUFFER_LOCK_UNLOCK);