Skip system attributes when applying mvdistinct stats
authorTomas Vondra
Sat, 16 Nov 2019 00:17:15 +0000 (01:17 +0100)
committerTomas Vondra
Sat, 16 Nov 2019 00:17:15 +0000 (01:17 +0100)
commitd482f7f867b58bbd29f65a4471eca8c5b57a7da0
treed6ed8e930c1975ca4407603d0dee6757c4b6951e
parent76cbfcdf3a0dff3f029ca079701418b861ce86c8
Skip system attributes when applying mvdistinct stats

When estimating number of distinct groups, we failed to ignore system
attributes when matching the group expressions to mvdistinct stats,
causing failures like

  ERROR: negative bitmapset member not allowed

Fix that by simply skipping anything that is not a regular attribute.
Backpatch to PostgreSQL 10, where the extended stats were introduced.

Bug: #16111
Reported-by: Tuomas Leikola
Author: Tomas Vondra
Backpatch-through: 10
Discussion: https://postgr.es/m/16111-687799584c3a7e73@postgresql.org
src/backend/utils/adt/selfuncs.c
src/test/regress/expected/stats_ext.out
src/test/regress/sql/stats_ext.sql