pgsql: Fix ndistinct estimates with system attributes

From: Tomas Vondra <tomas(dot)vondra(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix ndistinct estimates with system attributes
Date: 2021-03-26 21:59:41
Message-ID: E1lPuUX-0002N3-Nv@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix ndistinct estimates with system attributes

When estimating the number of groups using extended statistics, the code
was discarding information about system attributes. This led to strange
situation that

SELECT 1 FROM t GROUP BY ctid;

could have produced higher estimate (equal to pg_class.reltuples) than

SELECT 1 FROM t GROUP BY a, b, ctid;

with extended statistics on (a,b). Fixed by retaining information about
the system attribute.

Backpatch all the way to 10, where extended statistics were introduced.

Author: Tomas Vondra
Backpatch-through: 10

Branch
------
REL_13_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/67251c82af87865989eb90c7e8f4546cc0d66e6d

Modified Files
--------------
src/backend/utils/adt/selfuncs.c | 6 +++---
src/test/regress/expected/stats_ext.out | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tomas Vondra 2021-03-26 21:59:51 pgsql: Fix ndistinct estimates with system attributes
Previous Message Tomas Vondra 2021-03-26 21:59:27 pgsql: Fix ndistinct estimates with system attributes