pgsql: Fix compute_scalar_stats() for case that all values exceed WIDTH
От | Tom Lane |
---|---|
Тема | pgsql: Fix compute_scalar_stats() for case that all values exceed WIDTH |
Дата | |
Msg-id | E1W23WR-0004P6-F0@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix compute_scalar_stats() for case that all values exceed WIDTH_THRESHOLD. The standard typanalyze functions skip over values whose detoasted size exceeds WIDTH_THRESHOLD (1024 bytes), so as to limit memory bloat during ANALYZE. However, we (I think I, actually :-() failed to consider the possibility that *every* non-null value in a column is too wide. While compute_minimal_stats() seems to behave reasonably anyway in such a case, compute_scalar_stats() just fell through and generated no pg_statistic entry at all. That's unnecessarily pessimistic: we can still produce valid stanullfrac and stawidth values in such cases, since we do include too-wide values in the average-width calculation. Furthermore, since the general assumption in this code is that too-wide values are probably all distinct from each other, it seems reasonable to set stadistinct to -1 ("all distinct"). Per complaint from Kadri Raudsepp. This has been like this since roughly neolithic times, so back-patch to all supported branches. Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/6286526207d53e5b31968103adb89b4c9cd21499 Modified Files -------------- src/backend/commands/analyze.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
В списке pgsql-committers по дате отправления: