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

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

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

RexBuilder.makeExactLiteral介绍

[英]Creates a numeric literal.
[中]创建一个数字文本。

代码示例

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

/** Creates a literal (constant expression). */
public RexNode literal(Object value) {
 final RexBuilder rexBuilder = cluster.getRexBuilder();
 if (value == null) {
  return rexBuilder.constantNull();
 } else if (value instanceof Boolean) {
  return rexBuilder.makeLiteral((Boolean) value);
 } else if (value instanceof BigDecimal) {
  return rexBuilder.makeExactLiteral((BigDecimal) value);
 } else if (value instanceof Float || value instanceof Double) {
  return rexBuilder.makeApproxLiteral(
    BigDecimal.valueOf(((Number) value).doubleValue()));
 } else if (value instanceof Number) {
  return rexBuilder.makeExactLiteral(
    BigDecimal.valueOf(((Number) value).longValue()));
 } else if (value instanceof String) {
  return rexBuilder.makeLiteral((String) value);
 } else {
  throw new IllegalArgumentException("cannot convert " + value
    + " (" + value.getClass() + ") to a constant");
 }
}

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

/** Creates a literal (constant expression). */
public RexNode literal(Object value) {
 final RexBuilder rexBuilder = cluster.getRexBuilder();
 if (value == null) {
  return rexBuilder.constantNull();
 } else if (value instanceof Boolean) {
  return rexBuilder.makeLiteral((Boolean) value);
 } else if (value instanceof BigDecimal) {
  return rexBuilder.makeExactLiteral((BigDecimal) value);
 } else if (value instanceof Float || value instanceof Double) {
  return rexBuilder.makeApproxLiteral(
      BigDecimal.valueOf(((Number) value).doubleValue()));
 } else if (value instanceof Number) {
  return rexBuilder.makeExactLiteral(
      BigDecimal.valueOf(((Number) value).longValue()));
 } else if (value instanceof String) {
  return rexBuilder.makeLiteral((String) value);
 } else {
  throw new IllegalArgumentException("cannot convert " + value
      + " (" + value.getClass() + ") to a constant");
 }
}

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

private RelNode genLimitLogicalPlan(QB qb, RelNode srcRel) throws SemanticException {
 HiveRelNode sortRel = null;
 QBParseInfo qbp = getQBParseInfo(qb);
 SimpleEntry<Integer,Integer> entry =
   qbp.getDestToLimit().get(qbp.getClauseNames().iterator().next());
 Integer offset = (entry == null) ? 0 : entry.getKey();
 Integer fetch = (entry == null) ? null : entry.getValue();
 if (fetch != null) {
  RexNode offsetRN = cluster.getRexBuilder().makeExactLiteral(BigDecimal.valueOf(offset));
  RexNode fetchRN = cluster.getRexBuilder().makeExactLiteral(BigDecimal.valueOf(fetch));
  RelTraitSet traitSet = cluster.traitSetOf(HiveRelNode.CONVENTION);
  RelCollation canonizedCollation = traitSet.canonize(RelCollations.EMPTY);
  sortRel = new HiveSortLimit(cluster, traitSet, srcRel, canonizedCollation, offsetRN, fetchRN);
  RowResolver inputRR = relToHiveRR.get(srcRel);
  RowResolver outputRR = inputRR.duplicate();
  ImmutableMap<String, Integer> hiveColNameCalcitePosMap = buildHiveToCalciteColumnMap(
    outputRR, sortRel);
  relToHiveRR.put(sortRel, outputRR);
  relToHiveColNameCalcitePosMap.put(sortRel, hiveColNameCalcitePosMap);
 }
 return sortRel;
}

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

rexBuilder.makeExactLiteral(BigDecimal.valueOf(bottomOffset + topOffset));
 newLimit = topSortLimit.fetch;
} else if (topOffset < bottomLimit) {
  rexBuilder.makeExactLiteral(BigDecimal.valueOf(bottomOffset + topOffset));
 newLimit = rexBuilder.makeExactLiteral(BigDecimal.valueOf(bottomLimit - topOffset));
} else {
 newLimit = rexBuilder.makeExactLiteral(BigDecimal.valueOf(0));

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

rexBuilder.makeExactLiteral(BigDecimal.valueOf(bottomOffset + topOffset));
 newLimit = topSortLimit.fetch;
} else if (topOffset < bottomLimit) {
  rexBuilder.makeExactLiteral(BigDecimal.valueOf(bottomOffset + topOffset));
 newLimit = rexBuilder.makeExactLiteral(BigDecimal.valueOf(bottomLimit - topOffset));
} else {
 newLimit = rexBuilder.makeExactLiteral(BigDecimal.valueOf(0));

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

private RelNode genLimitLogicalPlan(QB qb, RelNode srcRel) throws SemanticException {
 HiveRelNode sortRel = null;
 QBParseInfo qbp = getQBParseInfo(qb);
 SimpleEntry<Integer,Integer> entry =
   qbp.getDestToLimit().get(qbp.getClauseNames().iterator().next());
 Integer offset = (entry == null) ? 0 : entry.getKey();
 Integer fetch = (entry == null) ? null : entry.getValue();
 if (fetch != null) {
  RexNode offsetRN = cluster.getRexBuilder().makeExactLiteral(BigDecimal.valueOf(offset));
  RexNode fetchRN = cluster.getRexBuilder().makeExactLiteral(BigDecimal.valueOf(fetch));
  RelTraitSet traitSet = cluster.traitSetOf(HiveRelNode.CONVENTION);
  RelCollation canonizedCollation = traitSet.canonize(RelCollations.EMPTY);
  sortRel = new HiveSortLimit(cluster, traitSet, srcRel, canonizedCollation, offsetRN, fetchRN);
  RowResolver outputRR = new RowResolver();
  if (!RowResolver.add(outputRR, relToHiveRR.get(srcRel))) {
   throw new CalciteSemanticException(
     "Duplicates detected when adding columns to RR: see previous message",
     UnsupportedFeature.Duplicates_in_RR);
  }
  ImmutableMap<String, Integer> hiveColNameCalcitePosMap = buildHiveToCalciteColumnMap(
    outputRR, sortRel);
  relToHiveRR.put(sortRel, outputRR);
  relToHiveColNameCalcitePosMap.put(sortRel, hiveColNameCalcitePosMap);
 }
 return sortRel;
}

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

.get(originalInputRefs.size() - 1), rexBuilder.makeExactLiteral(new BigDecimal(
  getGroupingIdValue(list, sourceOfForCountDistinct, aggr.getGroupCount()))));
if (list.size() == 1) {
  rexBuilder.makeExactLiteral(BigDecimal.ONE), rexBuilder.constantNull());
gbChildProjLst.add(when);

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

BigDecimal maxVal = new BigDecimal(max.floatValue());
BigDecimal minVal = new BigDecimal(min.floatValue());
RexLiteral maxLiteral = rexBuilder.makeExactLiteral(maxVal, literal.getType());
RexLiteral minLiteral = rexBuilder.makeExactLiteral(minVal, literal.getType());

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

.get(originalInputRefs.size() - 1), rexBuilder.makeExactLiteral(new BigDecimal(
  getGroupingIdValue(list, sourceOfForCountDistinct, aggr.getGroupCount()))));
if (list.size() == 1) {
  rexBuilder.makeExactLiteral(BigDecimal.ONE), rexBuilder.constantNull());
gbChildProjLst.add(when);

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

BigDecimal maxVal = new BigDecimal(max.floatValue());
BigDecimal minVal = new BigDecimal(min.floatValue());
RexLiteral maxLiteral = rexBuilder.makeExactLiteral(maxVal, literal.getType());
RexLiteral minLiteral = rexBuilder.makeExactLiteral(minVal, literal.getType());

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

break;
case BYTE:
 calciteLiteral = rexBuilder.makeExactLiteral(new BigDecimal((Byte) value), calciteDataType);
 break;
case SHORT:
 calciteLiteral = rexBuilder.makeExactLiteral(new BigDecimal((Short) value), calciteDataType);
 break;
case INT:
 calciteLiteral = rexBuilder.makeExactLiteral(new BigDecimal((Integer) value));
 break;
case LONG:
 BigInteger unscaled = bd.unscaledValue();
 if (unscaled.compareTo(MIN_LONG_BI) >= 0 && unscaled.compareTo(MAX_LONG_BI) <= 0) {
  calciteLiteral = rexBuilder.makeExactLiteral(bd);
 } else {
  calciteLiteral = rexBuilder.makeExactLiteral(bd, relType);

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

@Override public RexNode visitInputRef(RexInputRef inputRef) {
 if (currentRel instanceof LogicalCorrelate) {
  // if this rel references corVar
  // and now it needs to be rewritten
  // it must have been pulled above the Correlator
  // replace the input ref to account for the LHS of the
  // Correlator
  final int leftInputFieldCount =
      ((LogicalCorrelate) currentRel).getLeft().getRowType()
          .getFieldCount();
  RelDataType newType = inputRef.getType();
  if (projectPulledAboveLeftCorrelator) {
   newType =
       typeFactory.createTypeWithNullability(newType, true);
  }
  int pos = inputRef.getIndex();
  RexInputRef newInputRef =
      new RexInputRef(leftInputFieldCount + pos, newType);
  if ((isCount != null) && isCount.contains(pos)) {
   return createCaseExpression(
       newInputRef,
       rexBuilder.makeExactLiteral(BigDecimal.ZERO),
       newInputRef);
  } else {
   return newInputRef;
  }
 }
 return inputRef;
}

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

.makeExactLiteral(BigDecimal.valueOf(RexLiteral.intValue(sort.fetch) + offset));
HiveSortLimit branchSort = sort.copy(sort.getTraitSet(), input, sort.getCollation(), null,
  fetchRN);

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

break;
case BYTE:
 calciteLiteral = rexBuilder.makeExactLiteral(new BigDecimal((Byte) value), calciteDataType);
 break;
case SHORT:
 calciteLiteral = rexBuilder.makeExactLiteral(new BigDecimal((Short) value), calciteDataType);
 break;
case INT:
 calciteLiteral = rexBuilder.makeExactLiteral(new BigDecimal((Integer) value));
 break;
case LONG:
    cluster.getTypeFactory().createSqlType(SqlTypeName.DECIMAL, scale + 1, scale);
 calciteLiteral = rexBuilder.makeExactLiteral(bd, relType);
 break;
case FLOAT:

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

.makeExactLiteral(BigDecimal.valueOf(RexLiteral.intValue(sort.fetch) + offset));
HiveSortLimit branchSort = sort.copy(sort.getTraitSet(), input, sort.getCollation(), null,
  fetchRN);

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

@Override public RexNode visitInputRef(RexInputRef inputRef) {
 if (currentRel instanceof LogicalCorrelate) {
  // if this rel references corVar
  // and now it needs to be rewritten
  // it must have been pulled above the Correlator
  // replace the input ref to account for the LHS of the
  // Correlator
  final int leftInputFieldCount =
      ((LogicalCorrelate) currentRel).getLeft().getRowType()
          .getFieldCount();
  RelDataType newType = inputRef.getType();
  if (projectPulledAboveLeftCorrelator) {
   newType =
       typeFactory.createTypeWithNullability(newType, true);
  }
  int pos = inputRef.getIndex();
  RexInputRef newInputRef =
      new RexInputRef(leftInputFieldCount + pos, newType);
  if ((isCount != null) && isCount.contains(pos)) {
   return createCaseExpression(
       newInputRef,
       rexBuilder.makeExactLiteral(BigDecimal.ZERO),
       newInputRef);
  } else {
   return newInputRef;
  }
 }
 return inputRef;
}

代码示例来源:origin: apache/incubator-druid

rexBuilder.makeLiteral("oo"),
  inputRef("s"),
  rexBuilder.makeExactLiteral(BigDecimal.valueOf(2))
),
DruidExpression.fromExpression("(strpos(\"s\",'oo',(2 - 1)) + 1)"),
  rexBuilder.makeLiteral("oo"),
  inputRef("s"),
  rexBuilder.makeExactLiteral(BigDecimal.valueOf(3))
),
DruidExpression.fromExpression("(strpos(\"s\",'oo',(3 - 1)) + 1)"),

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

} else {
 final RexLiteral one =
   rexBuilder.makeExactLiteral(BigDecimal.ONE);
 final RexNode nul =
   rexBuilder.makeCast(countArg.getType(), rexBuilder.constantNull());
if (sqrt) {
 final RexNode half =
   rexBuilder.makeExactLiteral(new BigDecimal("0.5"));
 result =
   rexBuilder.makeCall(

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

List<RexNode> childExps = ((Project) select).getChildExps();
if (childExps.isEmpty()) {
 RexLiteral r = select.getCluster().getRexBuilder().makeExactLiteral(new BigDecimal(1));
 ASTNode selectExpr = ASTBuilder.selectExpr(ASTBuilder.literal(r), "1");
 b.add(selectExpr);

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

RexLiteral r = select.getCluster().getRexBuilder().makeExactLiteral(new BigDecimal(1));
ASTNode selectExpr = ASTBuilder.selectExpr(ASTBuilder.literal(r), "1");
b.add(selectExpr);

相关文章

微信公众号

最新文章

更多