walterddr commented on code in PR #10472:
URL: https://github.com/apache/pinot/pull/10472#discussion_r1148386774


##########
pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/operands/FunctionOperand.java:
##########
@@ -52,6 +52,9 @@ public FunctionOperand(RexExpression.FunctionCall 
functionCall, DataSchema dataS
     _resultName = computeColumnName(functionCall.getFunctionName(), 
_childOperandList);
     // TODO: Check type match between functionCall's data type and result type.
     _resultType = 
FunctionUtils.getColumnDataType(_functionInvoker.getResultClass());
+
+    boolean isTypeMatched = functionCall.getDataType() == 
_resultType.toDataType();
+    Preconditions.checkState(isTypeMatched, "Mismatch function data type and 
result type");

Review Comment:
   Pinot's FunctionInvoker largely depending on the next operator's 
FunctionInvoker parameter type casting 
   (see: 
https://github.com/apache/pinot/blob/d1227e466dc6e350214485334cdf4eedc7502d67/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionInvoker.java#L115)
   however we are not guaranteed to have another function invoker chained after.
   
   For this i think we can use `functionCall.getDataType()` and try to use it 
to convert `_resultType` similar to the link above. (it would have performance 
issues but a good starting point)
   
   please comment on the issue and ask for some specific repo examples so we 
can add to the test cases
   



-- 
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