Re: Failed assertion clauses != NIL
От | Dmitry Dolgov |
---|---|
Тема | Re: Failed assertion clauses != NIL |
Дата | |
Msg-id | 20191119143842.s2rrzdg43pvw3ael@localhost обсуждение исходный текст |
Ответ на | Re: Failed assertion clauses != NIL (Daniel Gustafsson <daniel@yesql.se>) |
Список | pgsql-bugs |
> On Tue, Nov 19, 2019 at 02:45:54PM +0100, Daniel Gustafsson wrote: > > On 19 Nov 2019, at 14:38, Dmitry Dolgov <9erthalion6@gmail.com> wrote: > > > >> On Tue, Nov 19, 2019 at 01:50:51PM +0100, Manuel Rigger wrote: > >> > >> when building PostgreSQL with -enable-cassert, executing the following > >> statements result in an assertion error: > >> > >> CREATE TABLE t0(c0 boolean, c1 boolean, c2 boolean); > >> INSERT INTO t0 VALUES(FALSE, FALSE, FALSE); > >> CREATE STATISTICS s0 ON c0, c2 FROM t0; > >> ANALYZE; > >> SELECT * FROM t0 WHERE t0.c2 OR t0.c1 OR t0.c0; > > > > Yes, I can reproduce it too. mcv_get_match_bitmap expects that > > stat_clauses will not be empty, but looks like in this situation > > stat_clauses is indeed NIL. clauselist_selectivity_simple right before > > actually doesn't insist on stat_clauses being non empty, probably it's > > just too strict assert. > > I might be missing something, but if the clause list is NIL, wouldn't it better > to exit earlier from statext_mcv_clauselist_selectivity rather than relax the > Assertion since we will get a 1.0 estimate either way? > > cheers ./daniel > > --- a/src/backend/statistics/extended_stats.c > +++ b/src/backend/statistics/extended_stats.c > @@ -1267,6 +1267,9 @@ statext_mcv_clauselist_selectivity(PlannerInfo *root, List *clauses, int varReli > listidx++; > } > > + if (stat_clauses == NIL) > + return 1.0; > + > /* > * First compute "simple" selectivity, i.e. without the extended > * statistics, and essentially assuming independence of the > Yep, seems like a reasonable thing to do, especially since it's already like that in a few other places in this function.
В списке pgsql-bugs по дате отправления: