org.apache.calcite.rex.RexBuilder.makeCast()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(6.1k)|赞(0)|评价(0)|浏览(136)

本文整理了Java中org.apache.calcite.rex.RexBuilder.makeCast方法的一些代码示例,展示了RexBuilder.makeCast的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RexBuilder.makeCast方法的具体详情如下:
包路径:org.apache.calcite.rex.RexBuilder
类名称:RexBuilder
方法名:makeCast

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);

相关文章

微信公众号

最新文章

更多