yashmayya commented on PR #13711:
URL: https://github.com/apache/pinot/pull/13711#issuecomment-2258219043
There's a bug in `PostAggregationHandler` that is causing the query `SELECT
AirlineID, CASE WHEN Sum(ArrDelay) < 0 THEN 0 WHEN SUM(ArrDelay) > 0 THEN
SUM(ArrDelay) END AS SumArrDelay FROM mytable GROUP BY AirlineID` to fail in
`testHardcodedQueries` with the following error:
```
java.lang.IllegalArgumentException: Unsupported function: less_than with
argument types: [DOUBLE, STRING]
at
org.apache.pinot.core.query.postaggregation.PostAggregationFunction.<init>(PostAggregationFunction.java:45)
~[classes/:?]
at
org.apache.pinot.core.query.reduce.PostAggregationHandler$PostAggregationValueExtractor.<init>(PostAggregationHandler.java:164)
~[classes/:?]
at
org.apache.pinot.core.query.reduce.PostAggregationHandler.getValueExtractor(PostAggregationHandler.java:136)
~[classes/:?]
at
org.apache.pinot.core.query.reduce.PostAggregationHandler$PostAggregationValueExtractor.<init>(PostAggregationHandler.java:160)
~[classes/:?]
at
org.apache.pinot.core.query.reduce.PostAggregationHandler.getValueExtractor(PostAggregationHandler.java:136)
~[classes/:?]
at
org.apache.pinot.core.query.reduce.PostAggregationHandler.<init>(PostAggregationHandler.java:77)
~[classes/:?]
at
org.apache.pinot.core.query.reduce.GroupByDataTableReducer.processSingleFinalResult(GroupByDataTableReducer.java:427)
~[classes/:?]
at
org.apache.pinot.core.query.reduce.GroupByDataTableReducer.reduceAndSetResults(GroupByDataTableReducer.java:121)
~[classes/:?]
at
org.apache.pinot.core.query.reduce.BrokerReduceService.reduceOnDataTable(BrokerReduceService.java:155)
~[classes/:?]
at
org.apache.pinot.broker.requesthandler.SingleConnectionBrokerRequestHandler.processBrokerRequest(SingleConnectionBrokerRequestHandler.java:144)
~[classes/:?]
at
org.apache.pinot.broker.requesthandler.BaseSingleStageBrokerRequestHandler.handleRequest(BaseSingleStageBrokerRequestHandler.java:733)
~[classes/:?]
at
org.apache.pinot.broker.requesthandler.BaseBrokerRequestHandler.handleRequest(BaseBrokerRequestHandler.java:133)
~[classes/:?]
at
org.apache.pinot.broker.requesthandler.BrokerRequestHandlerDelegate.handleRequest(BrokerRequestHandlerDelegate.java:96)
~[classes/:?]
at
org.apache.pinot.broker.api.resources.PinotClientRequest.executeSqlQuery(PinotClientRequest.java:321)
~[classes/:?]
```
This is because all literals are being parsed into string literals here -
https://github.com/apache/pinot/blob/835949b64529b8e5c0bb49474cdec2e17c9050f7/pinot-core/src/main/java/org/apache/pinot/core/query/reduce/PostAggregationHandler.java#L111
and this wasn't taken into account when
https://github.com/apache/pinot/pull/13573 updated `PostAggregationFunction` to
use argument type based function lookup instead of argument count based
function lookup. Since this is a v1 engine entity, I've updated it to go back
to argument type count based function lookup for now, until the literal
handling is updated either in https://github.com/apache/pinot/pull/13673 or in
a separate followup PR.
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]