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

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

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

RexBuilder.ensureType介绍

[英]Ensures expression is interpreted as a specified type. The returned expression may be wrapped with a cast.
[中]确保表达式被解释为指定的类型。返回的表达式可以用cast包装。

代码示例

代码示例来源:origin: apache/hive

private RexNode getTypeSafePred(RelOptCluster cluster, RexNode rex, RelDataType rType) {
 RexNode typeSafeRex = rex;
 if ((typeSafeRex instanceof RexCall) && HiveCalciteUtil.isComparisonOp((RexCall) typeSafeRex)) {
  RexBuilder rb = cluster.getRexBuilder();
  List<RexNode> fixedPredElems = new ArrayList<RexNode>();
  RelDataType commonType = cluster.getTypeFactory().leastRestrictive(
    RexUtil.types(((RexCall) rex).getOperands()));
  for (RexNode rn : ((RexCall) rex).getOperands()) {
   fixedPredElems.add(rb.ensureType(commonType, rn, true));
  }
  typeSafeRex = rb.makeCall(((RexCall) typeSafeRex).getOperator(), fixedPredElems);
 }
 return typeSafeRex;
}

代码示例来源:origin: apache/hive

public static RexNode getTypeSafePred(RelOptCluster cluster, RexNode rex, RelDataType rType) {
 RexNode typeSafeRex = rex;
 if ((typeSafeRex instanceof RexCall) && HiveCalciteUtil.isComparisonOp((RexCall) typeSafeRex)) {
  RexBuilder rb = cluster.getRexBuilder();
  List<RexNode> fixedPredElems = new ArrayList<RexNode>();
  RelDataType commonType = cluster.getTypeFactory().leastRestrictive(
    RexUtil.types(((RexCall) rex).getOperands()));
  for (RexNode rn : ((RexCall) rex).getOperands()) {
   fixedPredElems.add(rb.ensureType(commonType, rn, true));
  }
  typeSafeRex = rb.makeCall(((RexCall) typeSafeRex).getOperator(), fixedPredElems);
 }
 return typeSafeRex;
}

代码示例来源:origin: apache/drill

public static RexNode getTypeSafePred(RelOptCluster cluster, RexNode rex, RelDataType rType) {
 RexNode typeSafeRex = rex;
 if ((typeSafeRex instanceof RexCall) && HiveCalciteUtil.isComparisonOp((RexCall) typeSafeRex)) {
  RexBuilder rb = cluster.getRexBuilder();
  List<RexNode> fixedPredElems = new ArrayList<RexNode>();
  RelDataType commonType = cluster.getTypeFactory().leastRestrictive(
    RexUtil.types(((RexCall) rex).getOperands()));
  for (RexNode rn : ((RexCall) rex).getOperands()) {
   fixedPredElems.add(rb.ensureType(commonType, rn, true));
  }
  typeSafeRex = rb.makeCall(((RexCall) typeSafeRex).getOperator(), fixedPredElems);
 }
 return typeSafeRex;
}

代码示例来源:origin: apache/drill

private RexNode getTypeSafePred(RelOptCluster cluster, RexNode rex, RelDataType rType) {
 RexNode typeSafeRex = rex;
 if ((typeSafeRex instanceof RexCall) && HiveCalciteUtil.isComparisonOp((RexCall) typeSafeRex)) {
  RexBuilder rb = cluster.getRexBuilder();
  List<RexNode> fixedPredElems = new ArrayList<RexNode>();
  RelDataType commonType = cluster.getTypeFactory().leastRestrictive(
    RexUtil.types(((RexCall) rex).getOperands()));
  for (RexNode rn : ((RexCall) rex).getOperands()) {
   fixedPredElems.add(rb.ensureType(commonType, rn, true));
  }
  typeSafeRex = rb.makeCall(((RexCall) typeSafeRex).getOperator(), fixedPredElems);
 }
 return typeSafeRex;
}

代码示例来源:origin: apache/hive

rexBuilder.ensureType(
  extraField.getType(),
  rexBuilder.constantNull(),

代码示例来源:origin: apache/drill

rexBuilder.ensureType(
  extraField.getType(),
  rexBuilder.constantNull(),

代码示例来源:origin: apache/drill

protected MutableRel invert(MutableRel model, MutableRel input,
   MutableProject project) {
  LOGGER.trace("SubstitutionVisitor: invert:\nmodel: {}\ninput: {}\nproject: {}\n",
    model, input, project);
  if (project.getProjects().size() < model.getRowType().getFieldCount()) {
   throw MatchFailed.INSTANCE;
  }
  final List<RexNode> exprList = new ArrayList<>();
  final RexBuilder rexBuilder = model.cluster.getRexBuilder();
  for (RelDataTypeField field : model.getRowType().getFieldList()) {
   exprList.add(rexBuilder.makeZeroLiteral(field.getType()));
  }
  for (Ord<RexNode> expr : Ord.zip(project.getProjects())) {
   if (expr.e instanceof RexInputRef) {
    final int target = ((RexInputRef) expr.e).getIndex();
    exprList.set(target,
      rexBuilder.ensureType(expr.e.getType(),
        RexInputRef.of(expr.i, input.rowType),
        false));
   } else {
    throw MatchFailed.INSTANCE;
   }
  }
  return MutableProject.of(model.rowType, input, exprList);
 }
}

代码示例来源:origin: apache/hive

leftNeedsTypeCast = true;
 leftProjs.add(cluster.getRexBuilder().ensureType(unionFieldDT,
   cluster.getRexBuilder().makeInputRef(leftFieldDT, i), true));
  rightNeedsTypeCast = true;
 rightProjs.add(cluster.getRexBuilder().ensureType(unionFieldDT,
   cluster.getRexBuilder().makeInputRef(rightFieldDT, i), true));
} else {
 leftProjs.add(cluster.getRexBuilder().ensureType(leftFieldDT,
   cluster.getRexBuilder().makeInputRef(leftFieldDT, i), true));
 rightProjs.add(cluster.getRexBuilder().ensureType(rightFieldDT,
   cluster.getRexBuilder().makeInputRef(rightFieldDT, i), true));

代码示例来源:origin: apache/drill

leftNeedsTypeCast = true;
 leftProjs.add(cluster.getRexBuilder().ensureType(unionFieldDT,
   cluster.getRexBuilder().makeInputRef(leftFieldDT, i), true));
  rightNeedsTypeCast = true;
 rightProjs.add(cluster.getRexBuilder().ensureType(unionFieldDT,
   cluster.getRexBuilder().makeInputRef(rightFieldDT, i), true));
} else {
 leftProjs.add(cluster.getRexBuilder().ensureType(leftFieldDT,
   cluster.getRexBuilder().makeInputRef(leftFieldDT, i), true));
 rightProjs.add(cluster.getRexBuilder().ensureType(rightFieldDT,
   cluster.getRexBuilder().makeInputRef(rightFieldDT, i), true));

代码示例来源:origin: apache/hive

newCall = rexBuilder.ensureType(
  call.getType(),
  rexBuilder.makeCall(

代码示例来源:origin: apache/hive

aggCallMapping,
    ImmutableList.of(sum0InputType));
refSum = rexBuilder.ensureType(oldCall.getType(), refSum, true);

代码示例来源:origin: apache/hive

rexBuilder.ensureType(oldCallType, inputExprs.get(argOrdinal), false);
final int argRefOrdinal = lookupOrAdd(inputExprs, argRef);
final RelDataType sumReturnType = getSumReturnType(
    aggCallMapping,
    ImmutableList.of(sumArgAggCall.getType()));
final RexNode sumArgCast = rexBuilder.ensureType(oldCallType, sumArg, true);
final RexNode sumSquaredArg =
  rexBuilder.makeCall(

代码示例来源:origin: apache/hive

ImmutableList.of(avgInputType));
numeratorRef = rexBuilder.ensureType(oldCall.getType(), numeratorRef, true);
final RexNode divideRef =
  rexBuilder.makeCall(SqlStdOperatorTable.DIVIDE, numeratorRef, denominatorRef);

代码示例来源:origin: org.apache.kylin/atopcalcite

/** Ensures that an expression has a given {@link SqlTypeName}, applying a
 * cast if necessary. If the expression already has the right type family,
 * returns the expression unchanged. */
private RexNode ensureSqlType(RelDataType type, RexNode node) {
 if (type.getSqlTypeName() == node.getType().getSqlTypeName()
   || (type.getSqlTypeName() == SqlTypeName.VARCHAR
     && node.getType().getSqlTypeName() == SqlTypeName.CHAR)) {
  return node;
 }
 return rexBuilder.ensureType(type, node, true);
}

代码示例来源:origin: org.apache.calcite/calcite-core

/** Ensures that an expression has a given {@link SqlTypeName}, applying a
 * cast if necessary. If the expression already has the right type family,
 * returns the expression unchanged. */
private RexNode ensureSqlType(RelDataType type, RexNode node) {
 if (type.getSqlTypeName() == node.getType().getSqlTypeName()
   || (type.getSqlTypeName() == SqlTypeName.VARCHAR
     && node.getType().getSqlTypeName() == SqlTypeName.CHAR)) {
  return node;
 }
 return rexBuilder.ensureType(type, node, true);
}

代码示例来源:origin: Qihoo360/Quicksql

/** Ensures that an expression has a given {@link SqlTypeName}, applying a
 * cast if necessary. If the expression already has the right type family,
 * returns the expression unchanged. */
private RexNode ensureSqlType(RelDataType type, RexNode node) {
 if (type.getSqlTypeName() == node.getType().getSqlTypeName()
   || (type.getSqlTypeName() == SqlTypeName.VARCHAR
     && node.getType().getSqlTypeName() == SqlTypeName.CHAR)) {
  return node;
 }
 return rexBuilder.ensureType(type, node, true);
}

代码示例来源:origin: org.apache.flink/flink-table_2.10

/** Ensures that an expression has a given {@link SqlTypeName}, applying a
 * cast if necessary. If the expression already has the right type family,
 * returns the expression unchanged. */
private RexNode ensureSqlType(RelDataType type, RexNode node) {
  if (type.getSqlTypeName() == node.getType().getSqlTypeName()
    || (type.getSqlTypeName() == SqlTypeName.VARCHAR
    && node.getType().getSqlTypeName() == SqlTypeName.CHAR)) {
    return node;
  }
  return rexBuilder.ensureType(type, node, true);
}

代码示例来源:origin: Qihoo360/Quicksql

/**
 * Test RexBuilder.ensureType()
 */
@Test
public void testEnsureTypeWithItself() {
 final RelDataTypeFactory typeFactory = new SqlTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
 RexBuilder builder = new RexBuilder(typeFactory);
 RexNode node =  new RexLiteral(
     Boolean.TRUE, typeFactory.createSqlType(SqlTypeName.BOOLEAN), SqlTypeName.BOOLEAN);
 RexNode ensuredNode = builder.ensureType(
     typeFactory.createSqlType(SqlTypeName.BOOLEAN), node, true);
 assertEquals(node, ensuredNode);
}

代码示例来源:origin: org.apache.calcite/calcite-core

/**
 * Test RexBuilder.ensureType()
 */
@Test
public void testEnsureTypeWithAny() {
 final RelDataTypeFactory typeFactory = new SqlTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
 RexBuilder builder = new RexBuilder(typeFactory);
 RexNode node =  new RexLiteral(
     Boolean.TRUE, typeFactory.createSqlType(SqlTypeName.BOOLEAN), SqlTypeName.BOOLEAN);
 RexNode ensuredNode = builder.ensureType(
     typeFactory.createSqlType(SqlTypeName.ANY), node, true);
 assertEquals(node, ensuredNode);
}

代码示例来源:origin: Qihoo360/Quicksql

/**
 * Test RexBuilder.ensureType()
 */
@Test
public void testEnsureTypeWithAny() {
 final RelDataTypeFactory typeFactory = new SqlTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
 RexBuilder builder = new RexBuilder(typeFactory);
 RexNode node =  new RexLiteral(
     Boolean.TRUE, typeFactory.createSqlType(SqlTypeName.BOOLEAN), SqlTypeName.BOOLEAN);
 RexNode ensuredNode = builder.ensureType(
     typeFactory.createSqlType(SqlTypeName.ANY), node, true);
 assertEquals(node, ensuredNode);
}

相关文章

微信公众号

最新文章

更多