Use column collation for extended statistics

Enterprise / PostgreSQL - Tomas Vondra [postgresql.org] - 20 July 2019 14:37 EDT

The current extended statistics code was a bit confused which collation to use. When building the statistics, the collations defined as default for the data types were used (since commit 5e0928005). The MCV code was however using the column collations for MCV serialization, and then DEFAULT_COLLATION_OID when computing estimates. So overall the code was using all three possible options, inconsistently.

This uses the column colation everywhere - this makes it consistent with what 5e0928005 did for regular stats. We however do not track the collations in a catalog, because we can derive them from column-level information. This may need to change in the future, e.g. after allowing statistics on expressions.

a63378a03e Use column collation for extended statistics
src/backend/commands/statscmds.c | 4 ++++
src/backend/statistics/dependencies.c | 2 +-
src/backend/statistics/mcv.c | 15 +++++++++++----
src/backend/statistics/mvdistinct.c | 2 +-
4 files changed, 17 insertions(+), 6 deletions(-)

Upstream: git.postgresql.org


  • Share