Skip system attributes when applying mvdistinct stats
authorTomas Vondra <[email protected]>
Sat, 16 Nov 2019 00:17:15 +0000 (01:17 +0100)
committerTomas Vondra <[email protected]>
Sat, 16 Nov 2019 00:42:20 +0000 (01:42 +0100)
commit0b0f281cc0fe383162b170889e79502e21e6b35a
tree7914c8137336a94c210fdc0528f1cdfd3ae2eaf1
parent4be69e2ea14d4f00c77a1185e68b7f9235aeb95f
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