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