Re: pg15 inherited stats expressions: cache lookup failed for statistics object
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: Tomas Vondra <tomas.vondra@enterprisedb.com>,
pgsql-hackers@lists.postgresql.org
Date: 2022-10-31T05:12:09Z
Lists: pgsql-hackers
Attachments
- v1-0001-Skip-statistics-with-mismatching-stxdinherit-flag.patch (application/octet-stream) patch v1-0001
On Mon, Oct 31, 2022 at 12:26 PM Richard Guo <guofenglinux@gmail.com> wrote: > On Mon, Oct 31, 2022 at 1:05 AM Justin Pryzby <pryzby@telsasoft.com> > wrote: > >> I think this is what's needed. >> >> diff --git a/src/backend/utils/adt/selfuncs.c >> b/src/backend/utils/adt/selfuncs.c >> index 14e0885f19f..4450f0d682f 100644 >> --- a/src/backend/utils/adt/selfuncs.c >> +++ b/src/backend/utils/adt/selfuncs.c >> @@ -5240,6 +5240,8 @@ examine_variable(PlannerInfo *root, Node *node, int >> varRelid, >> /* skip stats without per-expression stats */ >> if (info->kind != STATS_EXT_EXPRESSIONS) >> continue; >> + if (info->inherit != rte->inh) >> + continue; >> >> pos = 0; >> foreach(expr_item, info->exprs) >> > > I think we also need to do this when loading the ndistinct value, to > skip statistics with mismatching stxdinherit in > estimate_multivariate_ndistinct(). > To be concrete, I mean something like attached. BTW, I noticed a micro-optimization opportunity in examine_variable that we can fetch the RangeTblEntry for 'onerel' outside the foreach loop when iterating the extended stats so that we can do it only once rather than for each stat. Thanks Richard
Commits
-
Fix planner failure with extended statistics on partitioned tables.
- f4857082bc16 16.0 landed
- 1f1865e90836 15.1 landed