yashmayya commented on code in PR #15263: URL: https://github.com/apache/pinot/pull/15263#discussion_r2053818467
########## pinot-query-planner/src/main/java/org/apache/pinot/calcite/rel/rules/PinotEvaluateLiteralRule.java: ########## @@ -258,13 +275,18 @@ private static Object convertResultValue(@Nullable Object resultValue, RelDataTy return TimestampUtils.toMillisSinceEpoch(resultValue.toString()); } } - // Return BigDecimal for numbers - if (resultValue instanceof Integer || resultValue instanceof Long) { + // Use BigDecimal for INTEGER / BIGINT / DECIMAL literals Review Comment: ~I've updated this because I realized that even though Calcite uses `BigDecimal` for these literals, we do convert it into `int` / `long` during rel to plan conversion before sending it into our execution engine - https://github.com/apache/pinot/blob/1fdeadd6ef9ad3c6ca51f198ac0d4f922e92a0b7/pinot-query-planner/src/main/java/org/apache/pinot/query/planner/logical/RexExpressionUtils.java#L237-L245~ Edit: since the conversion happens during rel to plan node, this is actually after all the rules are evaluated and the final optimized logical plan is generated. So we should in fact stick to `BigDecimal` for `INT` / `BIGINT` literals here for consistency with Calcite. It will be converted to `int` / `long` before dispatch. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org