Fix ndistinct estimates with system attributes

Tomas Vondra <tomas.vondra@postgresql.org>

Commit: 33e52ad9a32929a6d14dfd98a8440d57028f2e3e
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Date: 2021-03-26T21:34:58Z
Releases: 14.0
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

Files