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, visitVarDecimalConstantpublic 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>RuntimeExceptionpublic Boolean visitFunctionHolderExpression(FunctionHolderExpression holder, Void value) throws RuntimeException
visitFunctionHolderExpression in interface ExprVisitor<Boolean,Void,RuntimeException>visitFunctionHolderExpression in class AbstractExprVisitor<Boolean,Void,RuntimeException>RuntimeExceptionpublic Boolean visitCastExpression(CastExpression castExpr, Void value) throws RuntimeException
visitCastExpression in interface ExprVisitor<Boolean,Void,RuntimeException>visitCastExpression in class AbstractExprVisitor<Boolean,Void,RuntimeException>RuntimeExceptionpublic Boolean visitIfExpression(IfExpression ifExpr, Void value) throws RuntimeException
visitIfExpression in interface ExprVisitor<Boolean,Void,RuntimeException>visitIfExpression in class AbstractExprVisitor<Boolean,Void,RuntimeException>RuntimeExceptionpublic Boolean visitSchemaPath(SchemaPath path, Void value) throws RuntimeException
visitSchemaPath in interface ExprVisitor<Boolean,Void,RuntimeException>visitSchemaPath in class AbstractExprVisitor<Boolean,Void,RuntimeException>RuntimeExceptionpublic Boolean visitUnknown(LogicalExpression e, Void value) throws RuntimeException
AbstractExprVisitorinstanceof approach to parse out these "unknown"
expressions.visitUnknown in interface ExprVisitor<Boolean,Void,RuntimeException>visitUnknown in class AbstractExprVisitor<Boolean,Void,RuntimeException>RuntimeExceptionCopyright © 2021 The Apache Software Foundation. All rights reserved.