Re: constraint exclusion and nulls in IN (..) clause
От | Emre Hasegeli |
---|---|
Тема | Re: constraint exclusion and nulls in IN (..) clause |
Дата | |
Msg-id | CAE2gYzxYx=R=1o=8NKfZx6hzO9C4-ZJK864iHYXYWMi-PiP04A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: constraint exclusion and nulls in IN (..) clause (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>) |
Ответы |
Re: constraint exclusion and nulls in IN (..) clause
|
Список | pgsql-hackers |
> Yeah, the patch in its current form is wrong, because it will give wrong > answers if the operator being used in a SAOP is non-strict. I modified > the patch to consider operator strictness before doing anything with nulls. I tried to review this patch without any familiarity to the code. arrayconst_next_fn(): > + /* skip nulls if ok to do so */ > + if (state->opisstrict) > + { > + while (state->elem_nulls[state->next_elem]) > + state->next_elem++; > + } Shouldn't we check if we consumed all elements (state->next_elem >= state->num_elems) inside the while loop? arrayexpr_next_fn(): > + /* skip nulls if ok to do so */ > + if (state->opisstrict) > + { > + Node *node = (Node *) lfirst(state->next); > + > + while (IsA(node, Const) && ((Const *) node)->constisnull) > + state->next = lnext(state->next); > + } I cannot find a way to test this change. Can you imagine a query to exercise it on the regression tests?
В списке pgsql-hackers по дате отправления: