From: Tom Lane Date: Sun, 18 Jan 2015 22:04:11 +0000 (-0500) Subject: Fix ancient thinko in default table rowcount estimation. X-Git-Tag: REL9_5_ALPHA1~900 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=75df6dc083f7a989697b5002a421fb204f2eeddb;p=postgresql Fix ancient thinko in default table rowcount estimation. 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.) --- diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c index 265c865fcb..fb7db6d959 100644 --- a/src/backend/optimizer/util/plancat.c +++ b/src/backend/optimizer/util/plancat.c @@ -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; }