Re: [BUG?] estimate_hash_bucket_stats uses wrong ndistinct for avgfreq
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Tender Wang <tndrwang@gmail.com>
Cc: Joel Jacobson <joel@compiler.org>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-03-01T03:53:33Z
Lists: pgsql-hackers
Tender Wang <tndrwang@gmail.com> writes: > In my previous email, I worried rel->tuples may be zero for an empty relation. > But here it's safe, because an empty relation has no tuples in pg_statistic. Not sure about that --- it seems possible that after a mass delete, VACUUM could update pg_class.reltuples to zero without touching pg_statistic. And I also don't remember whether the planner clamps rel->tuples to be at least 1. But it doesn't matter. If rel->tuples is zero, the if-test will prevent us from dividing by zero, and then we'll leave *mcv_freq as zero meaning "unknown", which seems fine. It's the same thing that would have happened before bd3e3e9e5. regards, tom lane
Commits
-
Fix estimate_hash_bucket_stats's correction for skewed data.
- e6a1d8f5acbc 19 (unreleased) landed
-
Correctly calculate "MCV frequency" for a unique column.
- d80b0225010f 19 (unreleased) landed