Re: [HACKERS] PATCH: multivariate histograms and MCV lists

Mark Dilger <hornschnorter@gmail.com>

From: Mark Dilger <hornschnorter@gmail.com>
To: Tomas Vondra <tomas.vondra@2ndquadrant.com>
Cc: Adrien Nayrat <adrien.nayrat@dalibo.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2017-11-25T17:14:18Z
Lists: pgsql-hackers
> On Nov 18, 2017, at 12:28 PM, Tomas Vondra <tomas.vondra@2ndquadrant.com> wrote:
> 
> Hi,
> 
> Attached is an updated version of the patch, adopting the psql describe
> changes introduced by 471d55859c11b.
> 
> regards
> 
> -- 
> Tomas Vondra                  http://www.2ndQuadrant.com
> PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
> <0001-multivariate-MCV-lists.patch.gz><0002-multivariate-histograms.patch.gz>

Hello Tomas,

In 0002-multivariate-histograms.patch, src/include/nodes/relation.h,
struct StatisticExtInfo, you change:

-       char            kind;                   /* statistic kind of this entry */
+       int                     kinds;                  /* statistic kinds of this entry */

to have 'kinds' apparently be a bitmask, based on reading how you use
this in the code.  The #defines just below the struct give the four bits
to be used,

#define STATS_EXT_INFO_NDISTINCT            1
#define STATS_EXT_INFO_DEPENDENCIES         2
#define STATS_EXT_INFO_MCV                  4
#define STATS_EXT_INFO_HISTOGRAM            8

except that nothing in the file indicates that this is so.  Perhaps a comment
could be added here mentioning that 'kinds' is a bitmask, and that these
#defines are related?

mark

Commits

  1. Convert pre-existing stats_ext tests to new style

  2. Add support for multivariate MCV lists

  3. Improve ANALYZE's strategy for finding MCVs.

  4. Clone extended stats in CREATE TABLE (LIKE INCLUDING ALL)

  5. Try again to fix accumulation of parallel worker instrumentation.

  6. Adjust psql \d query to avoid use of @> operator.

  7. Message style fixes

  8. Add security checks to selectivity estimation functions