From 33e52ad9a32929a6d14dfd98a8440d57028f2e3e Mon Sep 17 00:00:00 2001 From: Tomas Vondra Date: Fri, 26 Mar 2021 22:34:53 +0100 Subject: 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 --- src/test/regress/expected/stats_ext.out | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test') diff --git a/src/test/regress/expected/stats_ext.out b/src/test/regress/expected/stats_ext.out index 431b3fa3de..d80e6a3907 100644 --- a/src/test/regress/expected/stats_ext.out +++ b/src/test/regress/expected/stats_ext.out @@ -260,7 +260,7 @@ SELECT s.stxkind, d.stxdndistinct SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY ctid, a, b'); estimated | actual -----------+-------- - 11 | 1000 + 1000 | 1000 (1 row) -- Hash Aggregate, thanks to estimates improved by the statistic -- cgit v1.2.3