• Tom Lane's avatar
    Change planner to use the current true disk file size as its estimate of · 5374d097
    Tom Lane authored
    a relation's number of blocks, rather than the possibly-obsolete value
    in pg_class.relpages.  Scale the value in pg_class.reltuples correspondingly
    to arrive at a hopefully more accurate number of rows.  When pg_class
    contains 0/0, estimate a tuple width from the column datatypes and divide
    that into current file size to estimate number of rows.  This improved
    methodology allows us to jettison the ancient hacks that put bogus default
    values into pg_class when a table is first created.  Also, per a suggestion
    from Simon, make VACUUM (but not VACUUM FULL or ANALYZE) adjust the value
    it puts into pg_class.reltuples to try to represent the mean tuple density
    instead of the minimal density that actually prevails just after VACUUM.
    These changes alter the plans selected for certain regression tests, so
    update the expected files accordingly.  (I removed join_1.out because
    it's not clear if it still applies; we can add back any variant versions
    as they are shown to be needed.)
    5374d097
genam.h 4.41 KB