diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index 7723f01327..d0fd74075a 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -194,7 +194,10 @@ CREATE VIEW pg_stats WITH (security_barrier) AS stainherit AS inherited, stanullfrac AS null_frac, stawidth AS avg_width, - stadistinct AS n_distinct, + CASE + WHEN stadistinct >= 0 THEN stadistinct + ELSE -1 * stadistinct * pg_stat_get_live_tuples(c.oid) + END AS n_distinct, CASE WHEN stakind1 = 1 THEN stavalues1 WHEN stakind2 = 1 THEN stavalues2 diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index e0f2c543ef..e3dba42aef 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -2142,7 +2142,10 @@ pg_stats| SELECT n.nspname AS schemaname, s.stainherit AS inherited, s.stanullfrac AS null_frac, s.stawidth AS avg_width, - s.stadistinct AS n_distinct, + CASE + WHEN (s.stadistinct >= (0)::double precision) THEN (s.stadistinct)::double precision + ELSE ((('-1'::integer)::double precision * s.stadistinct) * (pg_stat_get_live_tuples(c.oid))::double precision) + END AS n_distinct, CASE WHEN (s.stakind1 = 1) THEN s.stavalues1 WHEN (s.stakind2 = 1) THEN s.stavalues2