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
|
Список | 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 по дате отправления: