本文整理了Java中org.apache.calcite.rex.RexBuilder.makeCast
方法的一些代码示例,展示了RexBuilder.makeCast
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RexBuilder.makeCast
方法的具体详情如下:
包路径:org.apache.calcite.rex.RexBuilder
类名称:RexBuilder
方法名:makeCast
[英]Creates a call to the CAST operator.
[中]创建对CAST操作符的调用。
代码示例来源:origin: apache/hive
private RexNode visit(final RexNode call) {
RexNode replacement = replacements.get(call.toString());
if (replacement == null) {
return null;
}
if (replacement.getType().equals(call.getType())) {
return replacement;
}
return rexBuilder.makeCast(call.getType(), replacement, true);
}
}
代码示例来源:origin: apache/hive
/**
* Adds explicit casts if Calcite's type system could not resolve the CASE branches to a common type.
*
* Calcite is more stricter than hive w.r.t type conversions.
* If a CASE has branches with string/int/boolean branch types; there is no common type.
*/
private List<RexNode> adjustCaseBranchTypes(List<RexNode> nodes, RelDataType retType) {
List<RelDataType> branchTypes = new ArrayList<>();
for (int i = 0; i < nodes.size(); i++) {
if (i % 2 == 1 || i == nodes.size() - 1) {
branchTypes.add(nodes.get(i).getType());
}
}
RelDataType commonType = cluster.getTypeFactory().leastRestrictive(branchTypes);
if (commonType != null) {
// conversion is possible; not changes are neccessary
return nodes;
}
List<RexNode> newNodes = new ArrayList<>();
for (int i = 0; i < nodes.size(); i++) {
RexNode node = nodes.get(i);
if (i % 2 == 1 || i == nodes.size() - 1) {
newNodes.add(cluster.getRexBuilder().makeCast(retType, node));
} else {
newNodes.add(node);
}
}
return newNodes;
}
代码示例来源:origin: apache/drill
private RexNode visit(final RexNode call) {
RexNode replacement = replacements.get(call.toString());
if (replacement == null) {
return null;
}
if (replacement.getType().equals(call.getType())) {
return replacement;
}
return rexBuilder.makeCast(call.getType(), replacement, true);
}
}
代码示例来源:origin: apache/hive
/** Creates an expression that casts an expression to a given type. */
public RexNode cast(RexNode expr, SqlTypeName typeName) {
final RelDataType type = cluster.getTypeFactory().createSqlType(typeName);
return cluster.getRexBuilder().makeCast(type, expr);
}
代码示例来源:origin: apache/hive
/** Creates an expression that casts an expression to a type with a given name
* and precision or length. */
public RexNode cast(RexNode expr, SqlTypeName typeName, int precision) {
final RelDataType type =
cluster.getTypeFactory().createSqlType(typeName, precision);
return cluster.getRexBuilder().makeCast(type, expr);
}
代码示例来源:origin: apache/hive
/** Creates an expression that casts an expression to a type with a given
* name, precision and scale. */
public RexNode cast(RexNode expr, SqlTypeName typeName, int precision,
int scale) {
final RelDataType type =
cluster.getTypeFactory().createSqlType(typeName, precision, scale);
return cluster.getRexBuilder().makeCast(type, expr);
}
代码示例来源:origin: apache/drill
/** Creates an expression that casts an expression to a given type. */
public RexNode cast(RexNode expr, SqlTypeName typeName) {
final RelDataType type = cluster.getTypeFactory().createSqlType(typeName);
return cluster.getRexBuilder().makeCast(type, expr);
}
代码示例来源:origin: apache/drill
/** Creates an expression that casts an expression to a type with a given name
* and precision or length. */
public RexNode cast(RexNode expr, SqlTypeName typeName, int precision) {
final RelDataType type =
cluster.getTypeFactory().createSqlType(typeName, precision);
return cluster.getRexBuilder().makeCast(type, expr);
}
代码示例来源:origin: apache/drill
/** Creates an expression that casts an expression to a type with a given
* name, precision and scale. */
public RexNode cast(RexNode expr, SqlTypeName typeName, int precision,
int scale) {
final RelDataType type =
cluster.getTypeFactory().createSqlType(typeName, precision, scale);
return cluster.getRexBuilder().makeCast(type, expr);
}
代码示例来源:origin: apache/hive
private RexNode makeCast(SqlTypeName typeName, final RexNode child) {
RelDataType sqlType = cluster.getTypeFactory().createSqlType(typeName);
RelDataType nullableType = cluster.getTypeFactory().createTypeWithNullability(sqlType, true);
return cluster.getRexBuilder().makeCast(nullableType, child);
}
代码示例来源:origin: apache/hive
ImmutableList.of(rexBuilder.makeCast(
cluster.getTypeFactory().createTypeWithNullability(projExprs.get(0).getType(), true),
projExprs.get(0))),
代码示例来源:origin: apache/hive
rexBuilder.makeCast(
typeFactory.createTypeWithNullability(
rexNode.getType(),
rexBuilder.makeCast(
typeFactory.createTypeWithNullability(
rexNode.getType(),
代码示例来源:origin: apache/incubator-druid
newCasts.add(rexBuilder.makeInputRef(oldType, i));
} else {
newCasts.add(rexBuilder.makeCast(oldType, rexBuilder.makeInputRef(newCall.getType(), i)));
代码示例来源:origin: apache/drill
rexBuilder.makeCast(
typeFactory.createTypeWithNullability(
rexNode.getType(),
rexBuilder.makeCast(
typeFactory.createTypeWithNullability(
rexNode.getType(),
代码示例来源:origin: apache/drill
RelOptUtil.createProject(aggregate,
ImmutableList.of(
rexBuilder.makeCast(
cluster.getTypeFactory().createTypeWithNullability(
projExprs.get(0).getType(),
代码示例来源:origin: apache/hive
rexBuilder.makeCast(targetKeyType, leftKey);
rexBuilder.makeCast(targetKeyType, rightKey);
代码示例来源:origin: apache/drill
/**
* Create a cast for partition column. Partition column is output as "VARCHAR" in native parquet reader. Cast it
* appropriate type according the partition type in HiveScan.
*/
private RexNode createPartitionColumnCast(final DrillScanRel hiveScanRel, final DrillScanRel nativeScanRel,
final String outputColName, final String dirColName, final RexBuilder rb) {
final RelDataType outputType = hiveScanRel.getRowType().getField(outputColName, false, false).getType();
final RelDataTypeField inputField = nativeScanRel.getRowType().getField(dirColName, false, false);
final RexInputRef inputRef =
rb.makeInputRef(rb.getTypeFactory().createSqlType(SqlTypeName.VARCHAR), inputField.getIndex());
if (outputType.getSqlTypeName() == SqlTypeName.CHAR) {
return rb.makeCall(RTRIM, inputRef);
}
return rb.makeCast(outputType, inputRef);
}
}
代码示例来源:origin: apache/hive
return rexBuilder.makeCast(oldCall.getType(), coalesce);
代码示例来源:origin: apache/hive
rexBuilder.makeExactLiteral(BigDecimal.ONE);
final RexNode nul =
rexBuilder.makeCast(countArg.getType(), rexBuilder.constantNull());
final RexNode countMinusOne =
rexBuilder.makeCall(
return rexBuilder.makeCast(
oldCall.getType(), result);
代码示例来源:origin: apache/hive
final RexNode divideRef =
rexBuilder.makeCall(SqlStdOperatorTable.DIVIDE, numeratorRef, denominatorRef);
return rexBuilder.makeCast(oldCall.getType(), divideRef);
内容来源于网络,如有侵权,请联系作者删除!