Re: [sqlsmith] Crash in mcv_get_match_bitmap

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andreas Seltenreich <seltenreich@gmx.de>
Cc: pgsql-hackers@lists.postgresql.org, Tomas Vondra <tomas.vondra@postgresql.org>
Date: 2019-07-10T20:57:54Z
Lists: pgsql-hackers
Andreas Seltenreich <seltenreich@gmx.de> writes:
> running sqlsmith on the regression database of REL_12_STABLE at
> ff597b656f yielded a crash in mcv_get_match_bitmap.  I can reproduce it
> with the following query on the regression database:
>     select filler1 from mcv_lists where a is not null and (select 42) <= c;

Seems to be the same problem I just complained of in the other
thread: mcv_get_match_bitmap has an untenable assumption that
"is a pseudoconstant" means "is a Const".

I notice it's also assuming that the Const must be non-null.
It's not really easy to crash it that way, because if you just
write "null <= c" that'll get reduced to constant-NULL earlier.
But I bet there's a way.

			regards, tom lane



Commits

  1. Use column collation for extended statistics

  2. Rework examine_opclause_expression to use varonleft

  3. Fix handling of NULLs in MCV items and constants

  4. Fix handling of opclauses in extended statistics

  5. Remove unnecessary TYPECACHE_GT_OPR lookup

  6. Simplify bitmap updates in multivariate MCV code

  7. Make pg_statistic and related code account more honestly for collations.