From: | Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com> |
---|---|
To: | Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | FIX : teach expression walker about RestrictInfo |
Date: | 2015-04-28 17:56:12 |
Message-ID: | 553FC9BC.5060402@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi there,
the attached trivial patch adds handling of RestrictInfo nodes into
expression_tree_walker(). 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);
which gets translated into an expression tree like this:
BoolExpr [OR_EXPR]
BoolExpr [AND_EXPR]
RestrictInfo
OpExpr [Var >= Const]
RestrictInfo
OpExpr [Var <= Const]
BoolExpr [AND_EXPR]
RestrictInfo
OpExpr [Var >= Const]
RestrictInfo
OpExpr [Var <= Const]
and the nested RestrictInfo nodes make the walker fail because of
unrecognized node.
It's possible that expression walker is not supposed to know about
RestrictInfo, but I don't really see why would that be the case.
regards
--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachment | Content-Type | Size |
---|---|---|
expression-walker-fix.patch | text/x-patch | 564 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Stehule | 2015-04-28 17:58:15 | Re: cache invalidation for PL/pgsql functions |
Previous Message | Jim Nasby | 2015-04-28 17:53:38 | Re: Freeze avoidance of very large table. |