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

Reply via email to