Fix ancient thinko in default table rowcount estimation.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 18 Jan 2015 22:04:11 +0000 (17:04 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 18 Jan 2015 22:04:11 +0000 (17:04 -0500)
The code used sizeof(ItemPointerData) where sizeof(ItemIdData) is correct,
since we're trying to account for a tuple's line pointer.  Spotted by
Tomonari Katsumata (bug #12584).

Although this mistake is of very long standing, no back-patch, since it's
a relatively harmless error and changing it would risk changing default
planner behavior in stable branches.  (I don't see any change in regression
test outputs here, but the buildfarm may think differently.)

src/backend/optimizer/util/plancat.c

index 265c865fcb8279e17e347230212af04814c17143..fb7db6d959990e8ea2b9618285fa5f69ebf58b8a 100644 (file)
@@ -509,7 +509,7 @@ estimate_rel_size(Relation rel, int32 *attr_widths,
 
                tuple_width = get_rel_data_width(rel, attr_widths);
                tuple_width += sizeof(HeapTupleHeaderData);
-               tuple_width += sizeof(ItemPointerData);
+               tuple_width += sizeof(ItemIdData);
                /* note: integer division is intentional here */
                density = (BLCKSZ - SizeOfPageHeaderData) / tuple_width;
            }