public class PathInExpr extends AbstractExprVisitor<Boolean,Void,RuntimeException>
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)'.
Constructor and Description |
---|
PathInExpr(Map<LogicalExpression,Set<SchemaPath>> pathsInExpr) |
Modifier and Type | Method and Description |
---|---|
Set<LogicalExpression> |
getRemainderPaths() |
Set<LogicalExpression> |
getRemainderPathsInFunctions() |
Boolean |
visitCastExpression(CastExpression castExpr,
Void value) |
Boolean |
visitFunctionCall(FunctionCall call,
Void value) |
Boolean |
visitFunctionHolderExpression(FunctionHolderExpression holder,
Void value) |
Boolean |
visitIfExpression(IfExpression ifExpr,
Void value) |
Boolean |
visitSchemaPath(SchemaPath path,
Void value) |
Boolean |
visitUnknown(LogicalExpression e,
Void value)
Handles implementation-specific expressions not known to the visitor
structure.
|
visitAnyValueExpression, visitBooleanConstant, visitBooleanOperator, visitConvertExpression, visitDateConstant, visitDecimal18Constant, visitDecimal28Constant, visitDecimal38Constant, visitDecimal9Constant, visitDoubleConstant, visitFloatConstant, visitIntConstant, visitIntervalDayConstant, visitIntervalYearConstant, visitLongConstant, visitNullConstant, visitNullExpression, visitParameter, visitQuotedStringConstant, visitTimeConstant, visitTimeStampConstant, visitTypedFieldExpr, visitVarDecimalConstant
public PathInExpr(Map<LogicalExpression,Set<SchemaPath>> pathsInExpr)
public Set<LogicalExpression> getRemainderPaths()
public Set<LogicalExpression> getRemainderPathsInFunctions()
public Boolean visitFunctionCall(FunctionCall call, Void value) throws RuntimeException
visitFunctionCall
in interface ExprVisitor<Boolean,Void,RuntimeException>
visitFunctionCall
in class AbstractExprVisitor<Boolean,Void,RuntimeException>
RuntimeException
public Boolean visitFunctionHolderExpression(FunctionHolderExpression holder, Void value) throws RuntimeException
visitFunctionHolderExpression
in interface ExprVisitor<Boolean,Void,RuntimeException>
visitFunctionHolderExpression
in class AbstractExprVisitor<Boolean,Void,RuntimeException>
RuntimeException
public Boolean visitCastExpression(CastExpression castExpr, Void value) throws RuntimeException
visitCastExpression
in interface ExprVisitor<Boolean,Void,RuntimeException>
visitCastExpression
in class AbstractExprVisitor<Boolean,Void,RuntimeException>
RuntimeException
public Boolean visitIfExpression(IfExpression ifExpr, Void value) throws RuntimeException
visitIfExpression
in interface ExprVisitor<Boolean,Void,RuntimeException>
visitIfExpression
in class AbstractExprVisitor<Boolean,Void,RuntimeException>
RuntimeException
public Boolean visitSchemaPath(SchemaPath path, Void value) throws RuntimeException
visitSchemaPath
in interface ExprVisitor<Boolean,Void,RuntimeException>
visitSchemaPath
in class AbstractExprVisitor<Boolean,Void,RuntimeException>
RuntimeException
public Boolean visitUnknown(LogicalExpression e, Void value) throws RuntimeException
AbstractExprVisitor
instanceof
approach to parse out these "unknown"
expressions.visitUnknown
in interface ExprVisitor<Boolean,Void,RuntimeException>
visitUnknown
in class AbstractExprVisitor<Boolean,Void,RuntimeException>
RuntimeException
Copyright © 1970 The Apache Software Foundation. All rights reserved.