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  (Dmitry Dolgov <9erthalion6@gmail.com>)
Re: Failed assertion clauses != NIL  (Tomas Vondra <tomas.vondra@2ndquadrant.com>)
Список 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 по дате отправления:

Предыдущее
От: Dmitry Dolgov
Дата:
Сообщение: Re: Failed assertion clauses != NIL
Следующее
От: Manuel Rigger
Дата:
Сообщение: No = operator for opfamily 426