Re: FIX : teach expression walker about RestrictInfo

Поиск
Список
Период
Сортировка
От Tomas Vondra
Тема Re: FIX : teach expression walker about RestrictInfo
Дата
Msg-id 553FFE21.8050401@2ndquadrant.com
обсуждение исходный текст
Ответ на Re: FIX : teach expression walker about RestrictInfo  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: FIX : teach expression walker about RestrictInfo  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Hi,

On 04/28/15 21:50, Tom Lane wrote:
> Tomas Vondra <tomas.vondra@2ndquadrant.com> writes:
>> the attached trivial patch adds handling of RestrictInfo nodes into
>> expression_tree_walker().
>
> RestrictInfo is not a general expression node and support for it has
> been deliberately omitted from expression_tree_walker().  So I think
> what you are proposing is a bad idea and probably a band-aid for some
> other bad idea.
>
>> This is needed for example when calling
>> pull_varnos or (or other functions using the expression walker) in
>> clausesel.c, for example. An example of a query causing errors with
>> pull_varnos is
>
>> select * from t where (a >= 10 and a <= 20) or (b >= 15 and b <= 20);
>
> Really?
>
> regression=# create table t (a int, b int);
> CREATE TABLE
> regression=# select * from t where (a >= 10 and a <= 20) or (b >= 15 and b <= 20);
>   a | b
> ---+---
> (0 rows)

That's not what I said, though. I said that calling pull_varnos() causes 
the issue - apparently that does not happen in master, but I ran into 
that when hacking on a patch.

For example try adding this
    Relids tmp = pull_varnos(clause);    elog(WARNING, "count = %d", bms_num_members(tmp));

into the or_clause branch in clause_selectivity(), and then running the 
query will give you this:

db=# select * from t where (a >= 10 and a <= 20) or (b >= 15);
ERROR:  unrecognized node type: 524

But as I said - maybe calls to pull_varnos are not supposed to happen in 
this part of the code, for some reason, and it really is a bug in my patch.

regards

--
Tomas Vondra                  http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



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

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: tablespaces inside $PGDATA considered harmful
Следующее
От: Andrew Dunstan
Дата:
Сообщение: Re: shared_libperl, shared_libpython