mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
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
This commit is contained in:
@@ -97,6 +97,8 @@ extern SortItem *build_sorted_items(int numrows, int *nitems, HeapTuple *rows,
|
||||
TupleDesc tdesc, MultiSortSupport mss,
|
||||
int numattrs, AttrNumber *attnums);
|
||||
|
||||
extern bool examine_opclause_expression(OpExpr *expr, Var **varp,
|
||||
Const **cstp, bool *isgtp);
|
||||
|
||||
extern Selectivity mcv_clauselist_selectivity(PlannerInfo *root,
|
||||
StatisticExtInfo *stat,
|
||||
|
Reference in New Issue
Block a user