jon-wei opened a new issue #9140: NPE with SQL-compatible null handling in 
LongSumAggregator compare
URL: https://github.com/apache/druid/issues/9140
 
 
   I observed the following NPE when running a TopN query with 
`druid.generic.useDefaultValueForNull=false`, when ordering by a long column 
that contains nulls:
   
   ```
   java.lang.NullPointerException: null
        at 
org.apache.druid.query.aggregation.LongSumAggregator$1.compare(LongSumAggregator.java:36)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.topn.TopNNumericResultBuilder.lambda$new$0(TopNNumericResultBuilder.java:96)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
java.util.PriorityQueue.siftUpUsingComparator(PriorityQueue.java:670) 
~[?:1.8.0_202]
        at java.util.PriorityQueue.siftUp(PriorityQueue.java:646) ~[?:1.8.0_202]
        at java.util.PriorityQueue.offer(PriorityQueue.java:345) ~[?:1.8.0_202]
        at java.util.PriorityQueue.add(PriorityQueue.java:322) ~[?:1.8.0_202]
        at 
org.apache.druid.query.topn.TopNNumericResultBuilder.addEntry(TopNNumericResultBuilder.java:178)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.topn.TopNNumericResultBuilder.addEntry(TopNNumericResultBuilder.java:43)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.topn.PooledTopNAlgorithm.updateResults(PooledTopNAlgorithm.java:745)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.topn.PooledTopNAlgorithm.updateResults(PooledTopNAlgorithm.java:53)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.topn.BaseTopNAlgorithm.runWithCardinalityKnown(BaseTopNAlgorithm.java:122)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.topn.BaseTopNAlgorithm.run(BaseTopNAlgorithm.java:83) 
~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at org.apache.druid.query.topn.TopNMapFn.apply(TopNMapFn.java:67) 
~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.topn.TopNQueryEngine$1.apply(TopNQueryEngine.java:97) 
~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.topn.TopNQueryEngine$1.apply(TopNQueryEngine.java:90) 
~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.MappingAccumulator.accumulate(MappingAccumulator.java:40)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.FilteringAccumulator.accumulate(FilteringAccumulator.java:41)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.MappingAccumulator.accumulate(MappingAccumulator.java:40)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.BaseSequence.accumulate(BaseSequence.java:44)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.MappedSequence.accumulate(MappedSequence.java:43)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence$1.get(WrappingSequence.java:50)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence.accumulate(WrappingSequence.java:45)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.FilteredSequence.accumulate(FilteredSequence.java:45)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.MappedSequence.accumulate(MappedSequence.java:43)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.FilteredSequence.accumulate(FilteredSequence.java:45)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence$1.get(WrappingSequence.java:50)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence.accumulate(WrappingSequence.java:45)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.LazySequence.accumulate(LazySequence.java:40)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence$1.get(WrappingSequence.java:50)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence.accumulate(WrappingSequence.java:45)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.LazySequence.accumulate(LazySequence.java:40)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence$1.get(WrappingSequence.java:50)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence.accumulate(WrappingSequence.java:45)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.spec.SpecificSegmentQueryRunner$1.accumulate(SpecificSegmentQueryRunner.java:79)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence$1.get(WrappingSequence.java:50)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.spec.SpecificSegmentQueryRunner.doNamed(SpecificSegmentQueryRunner.java:163)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.spec.SpecificSegmentQueryRunner.access$100(SpecificSegmentQueryRunner.java:42)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.spec.SpecificSegmentQueryRunner$2.wrap(SpecificSegmentQueryRunner.java:145)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence.accumulate(WrappingSequence.java:45)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence$1.get(WrappingSequence.java:50)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.CPUTimeMetricQueryRunner$1.wrap(CPUTimeMetricQueryRunner.java:74)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.WrappingSequence.accumulate(WrappingSequence.java:45)
 ~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.java.util.common.guava.Sequence.toList(Sequence.java:85) 
~[druid-core-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.ChainedExecutionQueryRunner$1$1.call(ChainedExecutionQueryRunner.java:124)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
org.apache.druid.query.ChainedExecutionQueryRunner$1$1.call(ChainedExecutionQueryRunner.java:114)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
~[?:1.8.0_202]
        at 
org.apache.druid.query.PrioritizedListenableFutureTask.run(PrioritizedExecutorService.java:247)
 ~[druid-processing-0.18.0-SNAPSHOT.jar:0.18.0-SNAPSHOT]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
~[?:1.8.0_202]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
~[?:1.8.0_202]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_202]
   ```

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to