本文整理了Java中org.apache.calcite.rex.RexBuilder.makeIntervalLiteral
方法的一些代码示例,展示了RexBuilder.makeIntervalLiteral
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RexBuilder.makeIntervalLiteral
方法的具体详情如下:
包路径:org.apache.calcite.rex.RexBuilder
类名称:RexBuilder
方法名:makeIntervalLiteral
[英]Creates a literal representing an interval value, for example INTERVAL '3-7' YEAR TO MONTH.
[中]创建表示间隔值的文字,例如“3-7”年到月的间隔。
代码示例来源:origin: apache/incubator-druid
@Test
public void testTimePlusDayTimeInterval()
{
final Period period = new Period("P1DT1H1M");
testExpression(
rexBuilder.makeCall(
SqlStdOperatorTable.DATETIME_PLUS,
inputRef("t"),
rexBuilder.makeIntervalLiteral(
new BigDecimal(period.toStandardDuration().getMillis()), // DAY-TIME literals value is millis
new SqlIntervalQualifier(TimeUnit.DAY, TimeUnit.MINUTE, SqlParserPos.ZERO)
)
),
DruidExpression.of(
null,
"(\"t\" + 90060000)"
),
DateTimes.of("2000-02-03T04:05:06").plus(period).getMillis()
);
}
代码示例来源:origin: apache/incubator-druid
@Test
public void testTimePlusYearMonthInterval()
{
final Period period = new Period("P1Y1M");
testExpression(
rexBuilder.makeCall(
SqlStdOperatorTable.DATETIME_PLUS,
inputRef("t"),
rexBuilder.makeIntervalLiteral(
new BigDecimal(13), // YEAR-MONTH literals value is months
new SqlIntervalQualifier(TimeUnit.YEAR, TimeUnit.MONTH, SqlParserPos.ZERO)
)
),
DruidExpression.of(
null,
"timestamp_shift(\"t\",concat('P', 13, 'M'),1)"
),
DateTimes.of("2000-02-03T04:05:06").plus(period).getMillis()
);
}
代码示例来源:origin: apache/incubator-druid
@Test
public void testTimeMinusYearMonthInterval()
{
final Period period = new Period("P1Y1M");
testExpression(
rexBuilder.makeCall(
typeFactory.createSqlType(SqlTypeName.TIMESTAMP),
SqlStdOperatorTable.MINUS_DATE,
ImmutableList.of(
inputRef("t"),
rexBuilder.makeIntervalLiteral(
new BigDecimal(13), // YEAR-MONTH literals value is months
new SqlIntervalQualifier(TimeUnit.YEAR, TimeUnit.MONTH, SqlParserPos.ZERO)
)
)
),
DruidExpression.of(
null,
"timestamp_shift(\"t\",concat('P', 13, 'M'),-1)"
),
DateTimes.of("2000-02-03T04:05:06").minus(period).getMillis()
);
}
代码示例来源:origin: apache/incubator-druid
@Test
public void testTimeMinusDayTimeInterval()
{
final Period period = new Period("P1DT1H1M");
testExpression(
rexBuilder.makeCall(
typeFactory.createSqlType(SqlTypeName.TIMESTAMP),
SqlStdOperatorTable.MINUS_DATE,
ImmutableList.of(
inputRef("t"),
rexBuilder.makeIntervalLiteral(
new BigDecimal(period.toStandardDuration().getMillis()), // DAY-TIME literals value is millis
new SqlIntervalQualifier(TimeUnit.DAY, TimeUnit.MINUTE, SqlParserPos.ZERO)
)
)
),
DruidExpression.of(
null,
"(\"t\" - 90060000)"
),
DateTimes.of("2000-02-03T04:05:06").minus(period).getMillis()
);
}
代码示例来源:origin: apache/drill
calciteLiteral = rexBuilder.makeIntervalLiteral(totalMonths,
new SqlIntervalQualifier(TimeUnit.YEAR, TimeUnit.MONTH, new SqlParserPos(1,1)));
break;
value).getNanos(), 6);
calciteLiteral =
rexBuilder.makeIntervalLiteral(secsValueBd.add(nanosValueBd),
new SqlIntervalQualifier(TimeUnit.MILLISECOND, null, new
SqlParserPos(1, 1)));
代码示例来源:origin: apache/hive
calciteLiteral = rexBuilder.makeIntervalLiteral(totalMonths,
new SqlIntervalQualifier(TimeUnit.YEAR, TimeUnit.MONTH, new SqlParserPos(1,1)));
break;
value).getNanos(), 6);
calciteLiteral =
rexBuilder.makeIntervalLiteral(secsValueBd.add(nanosValueBd),
new SqlIntervalQualifier(TimeUnit.MILLISECOND, null, new
SqlParserPos(1, 1)));
代码示例来源:origin: Qihoo360/Quicksql
public RexLiteral convertInterval(
SqlRexContext cx,
SqlIntervalQualifier intervalQualifier) {
RexBuilder rexBuilder = cx.getRexBuilder();
return rexBuilder.makeIntervalLiteral(intervalQualifier);
}
代码示例来源:origin: org.apache.calcite/calcite-core
public RexLiteral convertInterval(
SqlRexContext cx,
SqlIntervalQualifier intervalQualifier) {
RexBuilder rexBuilder = cx.getRexBuilder();
return rexBuilder.makeIntervalLiteral(intervalQualifier);
}
代码示例来源:origin: Qihoo360/Quicksql
public RexNode convertCall(SqlRexContext cx, SqlCall call) {
// TIMESTAMPADD(unit, count, timestamp)
// => timestamp + count * INTERVAL '1' UNIT
final RexBuilder rexBuilder = cx.getRexBuilder();
final SqlLiteral unitLiteral = call.operand(0);
final TimeUnit unit = unitLiteral.symbolValue(TimeUnit.class);
RexNode interval2Add;
SqlIntervalQualifier qualifier =
new SqlIntervalQualifier(unit, null, unitLiteral.getParserPosition());
RexNode op1 = cx.convertExpression(call.operand(1));
switch (unit) {
case MICROSECOND:
case NANOSECOND:
interval2Add =
divide(rexBuilder,
multiply(rexBuilder,
rexBuilder.makeIntervalLiteral(BigDecimal.ONE, qualifier), op1),
BigDecimal.ONE.divide(unit.multiplier,
RoundingMode.UNNECESSARY));
break;
default:
interval2Add = multiply(rexBuilder,
rexBuilder.makeIntervalLiteral(unit.multiplier, qualifier), op1);
}
return rexBuilder.makeCall(SqlStdOperatorTable.DATETIME_PLUS,
cx.convertExpression(call.operand(2)), interval2Add);
}
}
代码示例来源:origin: org.apache.calcite/calcite-core
public RexNode convertCall(SqlRexContext cx, SqlCall call) {
// TIMESTAMPADD(unit, count, timestamp)
// => timestamp + count * INTERVAL '1' UNIT
final RexBuilder rexBuilder = cx.getRexBuilder();
final SqlLiteral unitLiteral = call.operand(0);
final TimeUnit unit = unitLiteral.symbolValue(TimeUnit.class);
RexNode interval2Add;
SqlIntervalQualifier qualifier =
new SqlIntervalQualifier(unit, null, unitLiteral.getParserPosition());
RexNode op1 = cx.convertExpression(call.operand(1));
switch (unit) {
case MICROSECOND:
case NANOSECOND:
interval2Add =
divide(rexBuilder,
multiply(rexBuilder,
rexBuilder.makeIntervalLiteral(BigDecimal.ONE, qualifier), op1),
BigDecimal.ONE.divide(unit.multiplier,
RoundingMode.UNNECESSARY));
break;
default:
interval2Add = multiply(rexBuilder,
rexBuilder.makeIntervalLiteral(unit.multiplier, qualifier), op1);
}
return rexBuilder.makeCall(SqlStdOperatorTable.DATETIME_PLUS,
cx.convertExpression(call.operand(2)), interval2Add);
}
}
代码示例来源:origin: com.facebook.presto.hive/hive-apache
calciteLiteral = rexBuilder.makeIntervalLiteral(totalMonths,
new SqlIntervalQualifier(TimeUnit.YEAR, TimeUnit.MONTH, new SqlParserPos(1,1)));
break;
calciteLiteral = rexBuilder.makeIntervalLiteral(secsValueBd.add(nanosValueBd),
new SqlIntervalQualifier(TimeUnit.DAY, TimeUnit.SECOND, new SqlParserPos(1,1)));
break;
代码示例来源:origin: dremio/dremio-oss
@Override
public RexNode convertCall(SqlRexContext cx, SqlCall call) {
// TIMESTAMPADD(unit, count, timestamp)
// => timestamp + count * INTERVAL '1' UNIT
final RexBuilder rexBuilder = cx.getRexBuilder();
final SqlLiteral unitLiteral = call.operand(0);
final TimeUnit unit = unitLiteral.symbolValue(TimeUnit.class);
switch (unit) {
// TODO(DX-11268): Support sub-second intervals with TIMESTAMPADD.
case MILLISECOND:
case MICROSECOND:
throw UserException.unsupportedError()
.message("TIMESTAMPADD function supports the following time units: YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND")
.build();
}
final RexNode timestampNode = cx.convertExpression(call.operand(2));
final RexNode multiplyNode = rexBuilder.makeCall(SqlStdOperatorTable.MULTIPLY,
rexBuilder.makeIntervalLiteral(unit.multiplier,
new SqlIntervalQualifier(unit, null, unitLiteral.getParserPosition())),
cx.convertExpression(call.operand(1)));
return rexBuilder.makeCall(SqlStdOperatorTable.DATETIME_PLUS,
timestampNode,
multiplyNode);
}
});
代码示例来源:origin: Qihoo360/Quicksql
case INTERVAL_MINUTE_SECOND:
case INTERVAL_SECOND:
return makeIntervalLiteral((BigDecimal) value,
type.getIntervalQualifier());
case MAP:
代码示例来源:origin: org.apache.calcite/calcite-core
case INTERVAL_MINUTE_SECOND:
case INTERVAL_SECOND:
return makeIntervalLiteral((BigDecimal) value,
type.getIntervalQualifier());
case MAP:
代码示例来源:origin: Qihoo360/Quicksql
(BigDecimal) sourceInterval.getValue();
RexLiteral castedInterval =
cx.getRexBuilder().makeIntervalLiteral(sourceValue,
intervalQualifier);
return castToValidatedType(cx, call, castedInterval);
sourceValue = sourceValue.multiply(multiplier);
RexLiteral castedInterval =
cx.getRexBuilder().makeIntervalLiteral(
sourceValue,
intervalQualifier);
代码示例来源:origin: org.apache.calcite/calcite-core
(BigDecimal) sourceInterval.getValue();
RexLiteral castedInterval =
cx.getRexBuilder().makeIntervalLiteral(sourceValue,
intervalQualifier);
return castToValidatedType(cx, call, castedInterval);
sourceValue = sourceValue.multiply(multiplier);
RexLiteral castedInterval =
cx.getRexBuilder().makeIntervalLiteral(
sourceValue,
intervalQualifier);
代码示例来源:origin: Qihoo360/Quicksql
literal.getValueAs(SqlIntervalLiteral.IntervalValue.class)
.getIntervalQualifier();
return rexBuilder.makeIntervalLiteral(
literal.getValueAs(BigDecimal.class),
sqlIntervalQualifier);
代码示例来源:origin: org.apache.calcite/calcite-core
literal.getValueAs(SqlIntervalLiteral.IntervalValue.class)
.getIntervalQualifier();
return rexBuilder.makeIntervalLiteral(
literal.getValueAs(BigDecimal.class),
sqlIntervalQualifier);
内容来源于网络,如有侵权,请联系作者删除!