Re: constraint exclusion and nulls in IN (..) clause

Поиск
Список
Период
Сортировка
От Emre Hasegeli
Тема Re: constraint exclusion and nulls in IN (..) clause
Дата
Msg-id CAE2gYzwbsm8vOyE731RE2PDhsKkhdMjYnYg+CY5LZDwdwvEqTQ@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  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
Список pgsql-hackers
>> Shouldn't we check if we consumed all elements (state->next_elem >=
>> state->num_elems) inside the while loop?
>
> You're right.  Fixed.

I don't think the fix is correct.  arrayconst_next_fn() can still
execute state->next_elem++ without checking if we consumed all
elements.  I couldn't manage to crash it though.

I am also not sure if it is proper to skip some items inside the
"next_fn", but I don't know the code to suggest a better alternative.

> +   /* skip nulls if ok to do so */
> +   if (state->opisstrict && state->next)

Do we need && state->next in here?  It is checked for (state->next ==
NULL) 2 lines above.

> +   {
> +       Node   *node = (Node *) lfirst(state->next);
> +
> +       while (node && IsA(node, Const) && ((Const *) node)->constisnull)

Should we spell the first check like node != NULL as the rest of the code does.

> +       {
> +           state->next = lnext(state->next);
> +           if (state->next)
> +               node = (Node *) lfirst(state->next);
> +       }
> +   }

I think this function is also not correct as it can call
lnext(state->next) without checking.

> So far, I hadn't either.  I figured one out and added it to inherit.sql.
> Basically, I needed to write the query such that an IN () expression
> doesn't get const-simplified to a Const containing array, but rather
> remains an ArrayExpr.  So, arrayexpr_*() functions in predtest.c are now
> exercised.

Nice.  I noticed that this part of the code was not covered at all by
the tests before.


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Magnus Hagander
Дата:
Сообщение: Re: perltidy version
Следующее
От: "Andreas 'ads' Scherbaum"
Дата:
Сообщение: Re: [PoC PATCH] Parallel dump to /dev/null