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

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

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

RexBuilder.decodeIntervalOrDecimal介绍

[英]Retrieves an interval or decimal node's integer representation
[中]检索间隔或十进制节点的整数表示形式

代码示例

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

/**
 * Retrieves a decimal node's integer representation
 *
 * @param decimalNode the decimal value as an opaque type
 * @return an integer representation of the decimal value
 */
protected RexNode decodeValue(RexNode decimalNode) {
 assert SqlTypeUtil.isDecimal(decimalNode.getType());
 return builder.decodeIntervalOrDecimal(decimalNode);
}

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

/**
 * Retrieves a decimal node's integer representation
 *
 * @param decimalNode the decimal value as an opaque type
 * @return an integer representation of the decimal value
 */
protected RexNode decodeValue(RexNode decimalNode) {
 assert SqlTypeUtil.isDecimal(decimalNode.getType());
 return builder.decodeIntervalOrDecimal(decimalNode);
}

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

private RexNode makeCastIntervalToExact(RelDataType toType, RexNode exp) {
 final TimeUnit endUnit = exp.getType().getSqlTypeName().getEndUnit();
 final TimeUnit baseUnit = baseUnit(exp.getType().getSqlTypeName());
 final BigDecimal multiplier = baseUnit.multiplier;
 final int scale = 0;
 BigDecimal divider = endUnit.multiplier.scaleByPowerOfTen(-scale);
 RexNode value = multiplyDivide(decodeIntervalOrDecimal(exp),
   multiplier, divider);
 if (scale > 0) {
  RelDataType decimalType =
    getTypeFactory().createSqlType(
      SqlTypeName.DECIMAL,
      scale + exp.getType().getPrecision(),
      scale);
  value = encodeIntervalOrDecimal(value, decimalType, false);
 }
 return ensureType(toType, value, false);
}

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

private RexNode makeCastIntervalToExact(RelDataType toType, RexNode exp) {
 final TimeUnit endUnit = exp.getType().getSqlTypeName().getEndUnit();
 final TimeUnit baseUnit = baseUnit(exp.getType().getSqlTypeName());
 final BigDecimal multiplier = baseUnit.multiplier;
 final int scale = 0;
 BigDecimal divider = endUnit.multiplier.scaleByPowerOfTen(-scale);
 RexNode value = multiplyDivide(decodeIntervalOrDecimal(exp),
   multiplier, divider);
 if (scale > 0) {
  RelDataType decimalType =
    getTypeFactory().createSqlType(
      SqlTypeName.DECIMAL,
      scale + exp.getType().getPrecision(),
      scale);
  value = encodeIntervalOrDecimal(value, decimalType, false);
 }
 return ensureType(toType, value, false);
}

相关文章

微信公众号

最新文章

更多