• T
    Collect and use element-frequency statistics for arrays. · 0e5e167a
    Tom Lane 提交于
    This patch improves selectivity estimation for the array <@, &&, and @>
    (containment and overlaps) operators.  It enables collection of statistics
    about individual array element values by ANALYZE, and introduces
    operator-specific estimators that use these stats.  In addition,
    ScalarArrayOpExpr constructs of the forms "const = ANY/ALL (array_column)"
    and "const <> ANY/ALL (array_column)" are estimated by treating them as
    variants of the containment operators.
    
    Since we still collect scalar-style stats about the array values as a
    whole, the pg_stats view is expanded to show both these stats and the
    array-style stats in separate columns.  This creates an incompatible change
    in how stats for tsvector columns are displayed in pg_stats: the stats
    about lexemes are now displayed in the array-related columns instead of the
    original scalar-related columns.
    
    There are a few loose ends here, notably that it'd be nice to be able to
    suppress either the scalar-style stats or the array-element stats for
    columns for which they're not useful.  But the patch is in good enough
    shape to commit for wider testing.
    
    Alexander Korotkov, reviewed by Noah Misch and Nathan Boley
    0e5e167a
typecmds.c 102.0 KB