FIX : teach expression walker about RestrictInfo - Mailing list pgsql-hackers

From Tomas Vondra
Subject FIX : teach expression walker about RestrictInfo
Date
Msg-id 553FC9BC.5060402@2ndquadrant.com
Whole thread Raw
Responses Re: FIX : teach expression walker about RestrictInfo
List 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

pgsql-hackers by date:

Previous
From: Jim Nasby
Date:
Subject: Re: Freeze avoidance of very large table.
Next
From: Pavel Stehule
Date:
Subject: Re: cache invalidation for PL/pgsql functions