Re: Failed assertion clauses != NIL
От | Daniel Gustafsson |
---|---|
Тема | Re: Failed assertion clauses != NIL |
Дата | |
Msg-id | 520C6E76-53A5-4EF2-A855-8054582221A5@yesql.se обсуждение исходный текст |
Ответ на | Re: Failed assertion clauses != NIL (Dmitry Dolgov <9erthalion6@gmail.com>) |
Ответы |
Re: Failed assertion clauses != NIL
Re: Failed assertion clauses != NIL |
Список | pgsql-bugs |
> 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
В списке pgsql-bugs по дате отправления: