Class PredicateAnalyzer.Visitor
- java.lang.Object
-
- org.apache.calcite.rex.RexVisitorImpl<PredicateAnalyzer.Expression>
-
- org.apache.calcite.adapter.elasticsearch.PredicateAnalyzer.Visitor
-
- All Implemented Interfaces:
RexVisitor<PredicateAnalyzer.Expression>
- Enclosing class:
- PredicateAnalyzer
private static class PredicateAnalyzer.Visitor extends RexVisitorImpl<PredicateAnalyzer.Expression>
TraversesRexNode
tree and builds ES query.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
PredicateAnalyzer.Visitor.SwapResult
Holder class for a pair of expressions.
-
Field Summary
-
Fields inherited from class org.apache.calcite.rex.RexVisitorImpl
deep
-
-
Constructor Summary
Constructors Modifier Constructor Description private
Visitor()
-
Method Summary
-
Methods inherited from class org.apache.calcite.rex.RexVisitorImpl
visitArrayAnd, visitArrayOr, visitCorrelVariable, visitDynamicParam, visitFieldAccess, visitLocalRef, visitOver, visitPatternFieldRef, visitRangeRef, visitSubQuery, visitTableInputRef
-
-
-
-
Method Detail
-
visitInputRef
public PredicateAnalyzer.Expression visitInputRef(RexInputRef inputRef)
- Specified by:
visitInputRef
in interfaceRexVisitor<PredicateAnalyzer.Expression>
- Overrides:
visitInputRef
in classRexVisitorImpl<PredicateAnalyzer.Expression>
-
visitLiteral
public PredicateAnalyzer.Expression visitLiteral(RexLiteral literal)
- Specified by:
visitLiteral
in interfaceRexVisitor<PredicateAnalyzer.Expression>
- Overrides:
visitLiteral
in classRexVisitorImpl<PredicateAnalyzer.Expression>
-
supportedRexCall
private boolean supportedRexCall(RexCall call)
-
visitCall
public PredicateAnalyzer.Expression visitCall(RexCall call)
- Specified by:
visitCall
in interfaceRexVisitor<PredicateAnalyzer.Expression>
- Overrides:
visitCall
in classRexVisitorImpl<PredicateAnalyzer.Expression>
-
convertQueryString
private static java.lang.String convertQueryString(java.util.List<PredicateAnalyzer.Expression> fields, PredicateAnalyzer.Expression query)
-
prefix
private PredicateAnalyzer.QueryExpression prefix(RexCall call)
-
postfix
private PredicateAnalyzer.QueryExpression postfix(RexCall call)
-
binary
private PredicateAnalyzer.QueryExpression binary(RexCall call)
Process a call which is a binary operation, transforming into an equivalent query expression. Note that the incoming call may be either a simple binary expression, such asfoo > 5
, or it may be several simple expressions connected byAND
orOR
operators, such asfoo > 5 AND bar = 'abc' AND 'rot' < 1
- Parameters:
call
- existing call- Returns:
- evaluated expression
-
andOr
private PredicateAnalyzer.QueryExpression andOr(RexCall call)
-
swap
private static PredicateAnalyzer.Visitor.SwapResult swap(PredicateAnalyzer.Expression left, PredicateAnalyzer.Expression right)
Swap order of operands such that the literal expression is always on the right.NOTE: Some combinations of operands are implicitly not supported and will cause an exception to be thrown. For example, we currently do not support comparing a literal to another literal as convention
5 = 5
. Nor do we support comparing named fields to other named fields as convention$0 = $1
.- Parameters:
left
- left expressionright
- right expression
-
toCastExpression
private PredicateAnalyzer.CastExpression toCastExpression(RexCall call)
-
toNamedField
private static PredicateAnalyzer.NamedFieldExpression toNamedField(RexLiteral literal)
-
expressAsLiteral
private static PredicateAnalyzer.LiteralExpression expressAsLiteral(PredicateAnalyzer.Expression exp)
Try to convert a generic expression into a literal expression.
-
isColumn
private static boolean isColumn(PredicateAnalyzer.Expression exp, RexNode node, java.lang.String columnName, boolean throwException)
-
-