heapam: fastorder.
authorAndres Freund <[email protected]>
Mon, 9 Nov 2020 22:21:09 +0000 (14:21 -0800)
committerAndres Freund <[email protected]>
Mon, 11 Jan 2021 23:09:14 +0000 (15:09 -0800)
Author:
Reviewed-By:
Discussion: https://postgr.es/m/
Backpatch:

src/backend/access/heap/heapam.c

index 53e997cd5536ec1db82ea65f534261e79d1ed7c0..61f7afbeca71cf0b73cc7a1117330bc2b862607a 100644 (file)
@@ -428,9 +428,16 @@ heapgetpage(TableScanDesc sscan, BlockNumber page)
     */
    all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery;
 
-   for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff);
-        lineoff <= lines;
-        lineoff++, lpp++)
+//#define FASTORDER
+#ifdef FASTORDER
+    for (lineoff = lines, lpp = PageGetItemId(dp, lineoff);
+         lineoff >= FirstOffsetNumber;
+         lineoff--, lpp--)
+#else
+    for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff);
+          lineoff <= lines;
+          lineoff++, lpp++)
+#endif
    {
        if (ItemIdIsNormal(lpp))
        {