Chundong Wang
11/10/2020, 9:16 PMNullPointerException
is thrown when query with aggregation on top of groovy functions.
Should we expect aggregation to work on top of groovy as it’s treated as transform function?Chundong Wang
11/10/2020, 9:20 PMoperatorLatch.countDown();
Which doesn’t make a lot sense to me as it should never be NULL…Chinmay Soman
11/10/2020, 10:10 PMNeha Pawar
select DestState, avg(groovy('{"returnType":"DOUBLE","isSingleValue":true}', 'arg0 > arg1 ? arg0.toDouble() : arg1.toDouble()', ActualElapsedTime, AirTime)) as theAvg from airlineStats where ActualElapsedTime>0 and AirTime>0 group by DestState limit 10
Neha Pawar
Neha Pawar
Neha Pawar
_indexedTable.finish(false);
Neha Pawar
Chundong Wang
11/10/2020, 11:50 PMNeha Pawar
Chundong Wang
11/10/2020, 11:58 PMNeha Pawar
Chundong Wang
11/11/2020, 12:00 AMNeha Pawar
Chundong Wang
11/11/2020, 12:36 AMjava.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Double
at org.apache.pinot.core.operator.transform.function.GroovyTransformFunction.transformToDoubleValuesSV(GroovyTransformFunction.java:280)
at org.apache.pinot.core.operator.docvalsets.TransformBlockValSet.getDoubleValuesSV(TransformBlockValSet.java:85)
at org.apache.pinot.core.query.aggregation.function.AvgAggregationFunction.aggregateGroupBySV(AvgAggregationFunction.java:103)
at org.apache.pinot.core.query.aggregation.groupby.DefaultGroupByExecutor.aggregate(DefaultGroupByExecutor.java:143)
at org.apache.pinot.core.query.aggregation.groupby.DefaultGroupByExecutor.process(DefaultGroupByExecutor.java:130)
at org.apache.pinot.core.operator.query.AggregationGroupByOrderByOperator.getNextBlock(AggregationGroupByOrderByOperator.java:106)
at org.apache.pinot.core.operator.query.AggregationGroupByOrderByOperator.getNextBlock(AggregationGroupByOrderByOperator.java:38)
at org.apache.pinot.core.operator.BaseOperator.nextBlock(BaseOperator.java:49)
at org.apache.pinot.core.operator.combine.GroupByOrderByCombineOperator$1.runJob(GroupByOrderByCombineOperator.java:137)
at org.apache.pinot.core.util.trace.TraceRunnable.run(TraceRunnable.java:40)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_265]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_265]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_265]
at shaded.com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:111)
at shaded.com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:58)
at shaded.com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:75)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_265]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_265]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_265]
Chundong Wang
11/11/2020, 12:36 AMNeha Pawar
toDouble()
on them
2. AVG, SUM functions expect double (i think)Neha Pawar
Chundong Wang
11/11/2020, 12:39 AMChundong Wang
11/11/2020, 12:39 AMChundong Wang
11/11/2020, 12:42 AMtoDouble()
i think. Let me play around with it a bit. Thanks for the help!!
java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Double
at org.apache.pinot.core.operator.transform.function.GroovyTransformFunction.transformToDoubleValuesSV(GroovyTransformFunction.java:280)
at org.apache.pinot.core.operator.docvalsets.TransformBlockValSet.getDoubleValuesSV(TransformBlockValSet.java:85)
at org.apache.pinot.core.query.aggregation.function.AvgAggregationFunction.aggregateGroupBySV(AvgAggregationFunction.java:103)
Chundong Wang
11/11/2020, 1:27 AMdouble
so need to convert the all possible return values to double
;
2. I have a number literal, 0.0
, which I thought would make it double but actually is bigDecimal. So instead I used 0d
and second exception is gone.Neha Pawar
Chundong Wang
11/11/2020, 1:33 AMChundong Wang
11/11/2020, 1:33 AM