public class RexNodeConverter extends Object
ExprNodeDesc)
into Calcite expressions (RexNode).| Constructor and Description |
|---|
RexNodeConverter(org.apache.calcite.rex.RexBuilder rexBuilder,
org.apache.calcite.rel.type.RelDataTypeFactory typeFactory)
Constructor used by HiveRexExecutorImpl.
|
| Modifier and Type | Method and Description |
|---|---|
static List<org.apache.calcite.rex.RexNode> |
adjustCaseBranchTypes(List<org.apache.calcite.rex.RexNode> nodes,
org.apache.calcite.rel.type.RelDataType retType,
org.apache.calcite.rex.RexBuilder rexBuilder)
Adds explicit casts if Calcite's type system could not resolve the CASE branches to a common type.
|
protected org.apache.calcite.rex.RexNode |
convert(ExprNodeConstantDesc literal) |
org.apache.calcite.rex.RexNode |
convert(ExprNodeDesc expr) |
static org.apache.calcite.rex.RexNode |
handleExplicitCast(GenericUDF udf,
org.apache.calcite.rel.type.RelDataType returnType,
List<org.apache.calcite.rex.RexNode> childRexNodeLst,
org.apache.calcite.rex.RexBuilder rexBuilder) |
static List<org.apache.calcite.rex.RexNode> |
rewriteBetweenChildren(List<org.apache.calcite.rex.RexNode> childRexNodeLst,
org.apache.calcite.rex.RexBuilder rexBuilder) |
static List<org.apache.calcite.rex.RexNode> |
rewriteCaseChildren(String funcText,
List<org.apache.calcite.rex.RexNode> childRexNodeLst,
org.apache.calcite.rex.RexBuilder rexBuilder) |
static List<org.apache.calcite.rex.RexNode> |
rewriteCoalesceChildren(List<org.apache.calcite.rex.RexNode> childRexNodeLst,
org.apache.calcite.rex.RexBuilder rexBuilder) |
static List<org.apache.calcite.rex.RexNode> |
rewriteExtractDateChildren(org.apache.calcite.sql.SqlOperator op,
List<org.apache.calcite.rex.RexNode> childRexNodeLst,
org.apache.calcite.rex.RexBuilder rexBuilder) |
static List<org.apache.calcite.rex.RexNode> |
rewriteFloorDateChildren(org.apache.calcite.sql.SqlOperator op,
List<org.apache.calcite.rex.RexNode> childRexNodeLst,
org.apache.calcite.rex.RexBuilder rexBuilder) |
static List<org.apache.calcite.rex.RexNode> |
rewriteInClauseChildren(org.apache.calcite.sql.SqlOperator op,
List<org.apache.calcite.rex.RexNode> childRexNodeLst,
org.apache.calcite.rex.RexBuilder rexBuilder) |
static List<org.apache.calcite.rex.RexNode> |
rewriteToDateChildren(List<org.apache.calcite.rex.RexNode> childRexNodeLst,
org.apache.calcite.rex.RexBuilder rexBuilder) |
static List<org.apache.calcite.rex.RexNode> |
transformInToOrOperands(List<org.apache.calcite.rex.RexNode> operands,
org.apache.calcite.rex.RexBuilder rexBuilder)
The method tries to rewrite an the operands of an IN function call into
the operands for an OR function call.
|
public RexNodeConverter(org.apache.calcite.rex.RexBuilder rexBuilder,
org.apache.calcite.rel.type.RelDataTypeFactory typeFactory)
public org.apache.calcite.rex.RexNode convert(ExprNodeDesc expr) throws SemanticException
SemanticExceptionpublic static org.apache.calcite.rex.RexNode handleExplicitCast(GenericUDF udf, org.apache.calcite.rel.type.RelDataType returnType, List<org.apache.calcite.rex.RexNode> childRexNodeLst, org.apache.calcite.rex.RexBuilder rexBuilder)
public static List<org.apache.calcite.rex.RexNode> rewriteCaseChildren(String funcText, List<org.apache.calcite.rex.RexNode> childRexNodeLst, org.apache.calcite.rex.RexBuilder rexBuilder) throws SemanticException
SemanticExceptionpublic static List<org.apache.calcite.rex.RexNode> adjustCaseBranchTypes(List<org.apache.calcite.rex.RexNode> nodes, org.apache.calcite.rel.type.RelDataType retType, org.apache.calcite.rex.RexBuilder rexBuilder)
public static List<org.apache.calcite.rex.RexNode> rewriteExtractDateChildren(org.apache.calcite.sql.SqlOperator op, List<org.apache.calcite.rex.RexNode> childRexNodeLst, org.apache.calcite.rex.RexBuilder rexBuilder)
public static List<org.apache.calcite.rex.RexNode> rewriteFloorDateChildren(org.apache.calcite.sql.SqlOperator op, List<org.apache.calcite.rex.RexNode> childRexNodeLst, org.apache.calcite.rex.RexBuilder rexBuilder)
public static List<org.apache.calcite.rex.RexNode> rewriteToDateChildren(List<org.apache.calcite.rex.RexNode> childRexNodeLst, org.apache.calcite.rex.RexBuilder rexBuilder)
public static List<org.apache.calcite.rex.RexNode> transformInToOrOperands(List<org.apache.calcite.rex.RexNode> operands, org.apache.calcite.rex.RexBuilder rexBuilder)
(c) IN ( v1, v2, ...) => c=v1 || c=v2 || ... Input: (c, v1, v2, ...) Output: (c=v1, c=v2, ...)Or:
(c,d) IN ( (v1,v2), (v3,v4), ...) => (c=v1 && d=v2) || (c=v3 && d=v4) || ... Input: ((c,d), (v1,v2), (v3,v4), ...) Output: (c=v1 && d=v2, c=v3 && d=v4, ...)Returns null if the transformation fails, e.g., when non-deterministic calls are found in the expressions.
public static List<org.apache.calcite.rex.RexNode> rewriteInClauseChildren(org.apache.calcite.sql.SqlOperator op, List<org.apache.calcite.rex.RexNode> childRexNodeLst, org.apache.calcite.rex.RexBuilder rexBuilder) throws SemanticException
SemanticExceptionpublic static List<org.apache.calcite.rex.RexNode> rewriteCoalesceChildren(List<org.apache.calcite.rex.RexNode> childRexNodeLst, org.apache.calcite.rex.RexBuilder rexBuilder)
public static List<org.apache.calcite.rex.RexNode> rewriteBetweenChildren(List<org.apache.calcite.rex.RexNode> childRexNodeLst, org.apache.calcite.rex.RexBuilder rexBuilder)
protected org.apache.calcite.rex.RexNode convert(ExprNodeConstantDesc literal) throws CalciteSemanticException
CalciteSemanticExceptionCopyright © 2022 The Apache Software Foundation. All rights reserved.