Fix handling of opclauses in extended statistics We expect opclauses to have exactly one Var and one Const, but the code was checking the Const by calling is_pseudo_constant_clause() which is incorrect - we need a proper constant.
Fixed by using plain IsA(x,Const) to check type of the node. We need to do these checks in two places, so move it into a separate function that can be called in both places. Reported by Andreas Seltenreich, based on crash reported by sqlsmith. Backpatch to v12, where this code was introduced. Discussion: https://postgr.es/m/8736jdhbhc.fsf%40ansel.ydns.eu Backpatch-to: 12 Branch ------ REL_12_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/42276976a1437c88fb6176fc1a876fd79a139eb0 Modified Files -------------- src/backend/statistics/extended_stats.c | 76 ++++++++++++++++++++---- src/backend/statistics/mcv.c | 27 +++------ src/include/statistics/extended_stats_internal.h | 2 + 3 files changed, 73 insertions(+), 32 deletions(-)