vvysotskyi commented on a change in pull request #1528: DRILL-3610: Add
TIMESTAMPADD and TIMESTAMPDIFF functions
URL: https://github.com/apache/drill/pull/1528#discussion_r232337818
##########
File path:
exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/TypeInferenceUtils.java
##########
@@ -555,6 +557,60 @@ public RelDataType inferReturnType(SqlOperatorBinding
opBinding) {
}
}
+ private static class DrillTimestampAddTypeInference implements
SqlReturnTypeInference {
+ private static final SqlReturnTypeInference INSTANCE = new
DrillTimestampAddTypeInference();
+
+ @Override
+ public RelDataType inferReturnType(SqlOperatorBinding opBinding) {
+ RelDataTypeFactory factory = opBinding.getTypeFactory();
+ // operands count ond order is checked at parsing stage
+ RelDataType inputType = opBinding.getOperandType(2);
+ boolean isNullable = inputType.isNullable() ||
opBinding.getOperandType(1).isNullable();
+
+ SqlTypeName inputTypeName = inputType.getSqlTypeName();
+
+ TimeUnit qualifier = ((SqlLiteral) ((SqlCallBinding)
opBinding).operand(0)).getValueAs(TimeUnit.class);
+
+ SqlTypeName sqlTypeName;
+
+ // follow up with type inference of reduced expression
+ switch (qualifier) {
+ case DAY:
+ case WEEK:
+ case MONTH:
+ case QUARTER:
+ case YEAR:
+ case NANOSECOND: // NANOSECOND is not supported by Calcite
SqlTimestampAddFunction.
+ // Once it is fixed, NANOSECOND should be moved to
the group below.
+ sqlTypeName = inputTypeName;
+ break;
+ case MICROSECOND:
+ case MILLISECOND:
+ // for MICROSECOND and MILLISECOND should be specified precision
Review comment:
Thanks, replaced.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services