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

Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>

From: Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>
To: david.rowley@2ndquadrant.com
Cc: tomas.vondra@2ndquadrant.com, dean.a.rasheed@gmail.com, alvherre@2ndquadrant.com, michael@paquier.xyz, andres@anarazel.de, thomas.munro@enterprisedb.com, bruce@momjian.us, hornschnorter@gmail.com, pgsql-hackers@postgresql.org
Date: 2019-03-14T11:56:23Z
Lists: pgsql-hackers
At Wed, 13 Mar 2019 19:37:45 +1300, David Rowley <david.rowley@2ndquadrant.com> wrote in <CAKJS1f_6qDQj9m2H0jF4bRkZVLpfc7O9E+MxdXrq0wgv0z1NrQ@mail.gmail.com>
> On Wed, 13 Mar 2019 at 17:20, Kyotaro HORIGUCHI
> <horiguchi.kyotaro@lab.ntt.co.jp> wrote:
> > bms_member_index seems working differently than maybe expected.
> >
> >  bms_member_index((2, 4), 0) => 0, (I think) should be -1
> >  bms_member_index((2, 4), 1) => 0, should be -1
> >  bms_member_index((2, 4), 2) => 0, should be 0
> >  bms_member_index((2, 4), 3) => 1, should be -1
> >  bms_member_index((2, 4), 4) => 1, should be 1
> >  bms_member_index((2, 4), 5) => 2, should be -1
> >  bms_member_index((2, 4), 6) => 2, should be -1
> > ...
> >  bms_member_index((2, 4), 63) => 2, should be -1
> >  bms_member_index((2, 4), 64) => -1, correct
> >
> > It works correctly only when x is a member - the way the function
> > is maybe actually used in this patch -, or needs to change the
> > specifiction (or the comment) of the function.
> 
> Looks like:
> 
> + if (wordnum >= a->nwords)
> + return -1;
> 
> should be:
> 
> + if (wordnum >= a->nwords ||
> + (a->word[wordnum] & ((bitmapword) 1 << bitnum)) == 0)
> + return -1;

Yeah, seems right.

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



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