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

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

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

RexBuilder.makeZeroLiteral介绍

[英]Creates a literal of the default value for the given type.

This value is:

  • 0 for numeric types;
  • FALSE for BOOLEAN;
  • The epoch for TIMESTAMP and DATE;
  • Midnight for TIME;
  • The empty string for string types (CHAR, BINARY, VARCHAR, VARBINARY).
    [中]为给定类型创建默认值的文本。
    该值为:
    *数字类型为0;
    *布尔值为FALSE;
    *时间戳和日期的纪元;
    *午夜代表时间;
    *字符串类型(CHAR、BINARY、VARCHAR、VARBINARY)的空字符串。

代码示例

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

protected MutableRel invert(List<Pair<RexNode, String>> namedProjects,
  MutableRel input,
  RexShuttle shuttle) {
 LOGGER.trace("SubstitutionVisitor: invert:\nprojects: {}\ninput: {}\nproject: {}\n",
   namedProjects, input, shuttle);
 final List<RexNode> exprList = new ArrayList<>();
 final RexBuilder rexBuilder = input.cluster.getRexBuilder();
 final List<RexNode> projects = Pair.left(namedProjects);
 for (RexNode expr : projects) {
  exprList.add(rexBuilder.makeZeroLiteral(expr.getType()));
 }
 for (Ord<RexNode> expr : Ord.zip(projects)) {
  final RexNode node = expr.e.accept(shuttle);
  if (node == null) {
   throw MatchFailed.INSTANCE;
  }
  exprList.set(expr.i, node);
 }
 return MutableProject.of(input, exprList, Pair.right(namedProjects));
}

代码示例来源: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

SqlStdOperatorTable.COALESCE, refSum, rexBuilder.makeZeroLiteral(refSum.getType()));
return rexBuilder.makeCast(oldCall.getType(), coalesce);

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

private RexNode makeCastExactToBoolean(RelDataType toType, RexNode exp) {
 return makeCall(toType,
   SqlStdOperatorTable.NOT_EQUALS,
   ImmutableList.of(exp, makeZeroLiteral(exp.getType())));
}

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

private RexNode makeCastExactToBoolean(RelDataType toType, RexNode exp) {
 return makeCall(toType,
   SqlStdOperatorTable.NOT_EQUALS,
   ImmutableList.of(exp, makeZeroLiteral(exp.getType())));
}

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

protected MutableRel invert(List<Pair<RexNode, String>> namedProjects,
  MutableRel input,
  RexShuttle shuttle) {
 LOGGER.trace("SubstitutionVisitor: invert:\nprojects: {}\ninput: {}\nproject: {}\n",
   namedProjects, input, shuttle);
 final List<RexNode> exprList = new ArrayList<>();
 final RexBuilder rexBuilder = input.cluster.getRexBuilder();
 final List<RexNode> projects = Pair.left(namedProjects);
 for (RexNode expr : projects) {
  exprList.add(rexBuilder.makeZeroLiteral(expr.getType()));
 }
 for (Ord<RexNode> expr : Ord.zip(projects)) {
  final RexNode node = expr.e.accept(shuttle);
  if (node == null) {
   throw MatchFailed.INSTANCE;
  }
  exprList.set(expr.i, node);
 }
 return MutableProject.of(input, exprList, Pair.right(namedProjects));
}

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

protected MutableRel invert(List<Pair<RexNode, String>> namedProjects,
  MutableRel input,
  RexShuttle shuttle) {
 LOGGER.trace("SubstitutionVisitor: invert:\nprojects: {}\ninput: {}\nproject: {}\n",
   namedProjects, input, shuttle);
 final List<RexNode> exprList = new ArrayList<>();
 final RexBuilder rexBuilder = input.cluster.getRexBuilder();
 final List<RexNode> projects = Pair.left(namedProjects);
 for (RexNode expr : projects) {
  exprList.add(rexBuilder.makeZeroLiteral(expr.getType()));
 }
 for (Ord<RexNode> expr : Ord.zip(projects)) {
  final RexNode node = expr.e.accept(shuttle);
  if (node == null) {
   throw MatchFailed.INSTANCE;
  }
  exprList.set(expr.i, node);
 }
 return MutableProject.of(input, exprList, Pair.right(namedProjects));
}

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

private RexNode makeCastBooleanToExact(RelDataType toType, RexNode exp) {
 final RexNode casted = makeCall(SqlStdOperatorTable.CASE,
   exp,
   makeExactLiteral(BigDecimal.ONE, toType),
   makeZeroLiteral(toType));
 if (!exp.getType().isNullable()) {
  return casted;
 }
 return makeCall(toType,
   SqlStdOperatorTable.CASE,
   ImmutableList.of(makeCall(SqlStdOperatorTable.IS_NOT_NULL, exp),
     casted, makeNullLiteral(toType)));
}

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

private RexNode makeCastBooleanToExact(RelDataType toType, RexNode exp) {
 final RexNode casted = makeCall(SqlStdOperatorTable.CASE,
   exp,
   makeExactLiteral(BigDecimal.ONE, toType),
   makeZeroLiteral(toType));
 if (!exp.getType().isNullable()) {
  return casted;
 }
 return makeCall(toType,
   SqlStdOperatorTable.CASE,
   ImmutableList.of(makeCall(SqlStdOperatorTable.IS_NOT_NULL, exp),
     casted, makeNullLiteral(toType)));
}

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

protected MutableRel invert(MutableRel model, MutableRel input,
   MutableProject project) {
  LOGGER.trace("SubstitutionVisitor: invert:\nmodel: {}\ninput: {}\nproject: {}\n",
    model, input, project);
  if (project.projects.size() < model.rowType.getFieldCount()) {
   throw MatchFailed.INSTANCE;
  }
  final List<RexNode> exprList = new ArrayList<>();
  final RexBuilder rexBuilder = model.cluster.getRexBuilder();
  for (RelDataTypeField field : model.rowType.getFieldList()) {
   exprList.add(rexBuilder.makeZeroLiteral(field.getType()));
  }
  for (Ord<RexNode> expr : Ord.zip(project.projects)) {
   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: org.apache.calcite/calcite-core

protected MutableRel invert(MutableRel model, MutableRel input,
   MutableProject project) {
  LOGGER.trace("SubstitutionVisitor: invert:\nmodel: {}\ninput: {}\nproject: {}\n",
    model, input, project);
  if (project.projects.size() < model.rowType.getFieldCount()) {
   throw MatchFailed.INSTANCE;
  }
  final List<RexNode> exprList = new ArrayList<>();
  final RexBuilder rexBuilder = model.cluster.getRexBuilder();
  for (RelDataTypeField field : model.rowType.getFieldList()) {
   exprList.add(rexBuilder.makeZeroLiteral(field.getType()));
  }
  for (Ord<RexNode> expr : Ord.zip(project.projects)) {
   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: Qihoo360/Quicksql

exprList.add(
  source < 0
    ? rexBuilder.makeZeroLiteral(field.getType())
    : rexBuilder.makeInputRef(field.getType(), source));

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

exprList.add(
  source < 0
    ? rexBuilder.makeZeroLiteral(field.getType())
    : rexBuilder.makeInputRef(field.getType(), source));

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

/** Tests {@link org.apache.calcite.rex.RexUtil#isLiteral(RexNode, boolean)},
  * which was added to enhance Calcite's public API
  * <a href="https://issues.apache.org/jira/browse/CALCITE-1219">[CALCITE-1219]
  * Add a method to SqlOperatorBinding to determine whether operand is a
  * literal</a>.
  */
 @Test public void testRexNodeLiteral() {
  final RexNode literal = rexBuilder.makeZeroLiteral(
    integerDataType);

  final RexNode castLiteral = rexBuilder.makeCall(
    integerDataType,
    SqlStdOperatorTable.CAST,
    Lists.newArrayList(literal));

  final RexNode castCastLiteral = rexBuilder.makeCall(
    integerDataType,
    SqlStdOperatorTable.CAST,
    Lists.newArrayList(castLiteral));

  // RexLiteral is considered as a Literal
  assertSame(true, RexUtil.isLiteral(literal, true));
  // CAST(RexLiteral as type) is considered as a Literal
  assertSame(true, RexUtil.isLiteral(castLiteral, true));
  // CAST(CAST(RexLiteral as type) as type) is NOT considered as a Literal
  assertSame(false, RexUtil.isLiteral(castCastLiteral, true));
 }
}

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

/** Tests {@link org.apache.calcite.rex.RexUtil#isLiteral(RexNode, boolean)},
  * which was added to enhance Calcite's public API
  * <a href="https://issues.apache.org/jira/browse/CALCITE-1219">[CALCITE-1219]
  * Add a method to SqlOperatorBinding to determine whether operand is a
  * literal</a>.
  */
 @Test public void testRexNodeLiteral() {
  final RexNode literal = rexBuilder.makeZeroLiteral(
    integerDataType);

  final RexNode castLiteral = rexBuilder.makeCall(
    integerDataType,
    SqlStdOperatorTable.CAST,
    Lists.newArrayList(literal));

  final RexNode castCastLiteral = rexBuilder.makeCall(
    integerDataType,
    SqlStdOperatorTable.CAST,
    Lists.newArrayList(castLiteral));

  // RexLiteral is considered as a Literal
  assertSame(true, RexUtil.isLiteral(literal, true));
  // CAST(RexLiteral as type) is considered as a Literal
  assertSame(true, RexUtil.isLiteral(castLiteral, true));
  // CAST(CAST(RexLiteral as type) as type) is NOT considered as a Literal
  assertSame(false, RexUtil.isLiteral(castCastLiteral, true));
 }
}

相关文章

微信公众号

最新文章

更多