fix dumb mistake
authorRobert Haas <rhaas@postgresql.org>
Thu, 23 Sep 2021 16:50:27 +0000 (12:50 -0400)
committerRobert Haas <rhaas@postgresql.org>
Thu, 23 Sep 2021 16:50:27 +0000 (12:50 -0400)
recode something that probably wouldn't work with 1 page per segment
reindent

src/backend/access/conveyor/cbmetapage.c
src/backend/access/conveyor/conveyor.c

index 1ad79ac290fcefb2ed86e1a664f605bcb993808e..24af6eda26a1e5b85328dec7b820950a1fa26ea6 100644 (file)
@@ -119,7 +119,7 @@ cb_metapage_find_logical_page(CBMetapageData *meta,
 
        /* Index entry must be in the metapage, if it exists at all. */
        segno = meta->cbm_index[relp / meta->cbm_pages_per_segment];
-       segoff = meta->cbm_pages_per_segment;
+       segoff = relp % meta->cbm_pages_per_segment;
        if (segno == CB_INVALID_SEGMENT)
                return false;
 
index 5e50e647547f95150ed3597cee9f078976f884f6..7261c48c12bfa4370d247e07d9b55377b4086242 100644 (file)
@@ -389,22 +389,20 @@ ConveyorBeltGetNewPage(ConveyorBelt *cb, CBPageNo *pageno)
                }
                else
                {
-                       BlockNumber     possibly_not_on_disk_blkno;
+                       BlockNumber possibly_not_on_disk_blkno;
 
                        /*
                         * The current payload segment is not full, but if it's the last
-                        * segment in the conveyor belt, the page we need may not yet exist
-                        * on disk.
+                        * segment in the conveyor belt, the page we need may not yet
+                        * exist on disk.
                         *
-                        * We know if we get to this point that at least one segment
-                        * exists, so possibly_not_on_disk_segno can't be 0. The previous
-                        * segment's first page must exist on disk, but the later pages
-                        * may not.
+                        * The previous segment's first page must exist on disk, but the
+                        * later pages may not.
                         */
-                       Assert(possibly_not_on_disk_segno > 0);
                        possibly_not_on_disk_blkno =
                                cb_segment_to_block(cb->cb_pages_per_segment,
-                                                                       possibly_not_on_disk_segno - 1, 1);
+                                                                       possibly_not_on_disk_segno, 0)
+                               - cb->cb_pages_per_segment + 1;
 
                        /* Extend the relation if needed. */
                        buffer = InvalidBuffer;
@@ -417,10 +415,10 @@ ConveyorBeltGetNewPage(ConveyorBelt *cb, CBPageNo *pageno)
                                nblocks = RelationGetNumberOfBlocksInFork(cb->cb_rel,
                                                                                                                  cb->cb_fork);
                                if (next_blkno > nblocks)
-                                               ereport(ERROR,
-                                                               errcode(ERRCODE_DATA_CORRUPTED),
-                                                               errmsg_internal("next block should be %u but relation has only %u blocks",
-                                                                                               next_blkno, nblocks));
+                                       ereport(ERROR,
+                                                       errcode(ERRCODE_DATA_CORRUPTED),
+                                                       errmsg_internal("next block should be %u but relation has only %u blocks",
+                                                                                       next_blkno, nblocks));
                                else if (next_blkno == nblocks)
                                {
                                        buffer = ReadBufferExtended(cb->cb_rel, cb->cb_fork,