Class PathInExpr

All Implemented Interfaces:
ExprVisitor<Boolean,Void,RuntimeException>

public class PathInExpr extends AbstractExprVisitor<Boolean,Void,RuntimeException>
Class PathInExpr is to recursively analyze a expression trees with a map of indexed expression collected from indexDescriptor, e.g. Map 'cast(a.q as int)' -> '$0' means the expression 'cast(a.q as int)' is named as '$0' in index table.

for project expressions: cast(a.q as int), a.q, b + c, PathInExpr will get remainderPath {a.q, b, c}, which is helpful to determine if q query is covering. remainderPathsInFunction will be {a.q}, which will be used to decide if the {a.q} in scan column and project rowtype should be removed or not.

This class could be more generic to support any expression, for now it works for only 'cast(schemapath as type)'.