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-0004PB-Lh@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
------
REL9_2_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/f0381680fa480a8794d00566cef21178cd63d74e

Modified Files
--------------
src/backend/commands/analyze.c |   16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: 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