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:58:38 +0000 (01:58 +0100)
commit25a9ff6cadbb2099a5f53876d9e29f35a080df43
tree39cb82c876e0a9cc387a7f945961dd741cc65f39
parentbc049d0d460aead528ace909a3477bc701ab2e9a
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