jihoonson opened a new issue #6123: ClassCastException in groupBy when sorting on numeric columns containing nulls URL: https://github.com/apache/incubator-druid/issues/6123 Here is the sample query. ``` { "queryType": "groupBy", "dataSource": { "type": "table", "name": "wikiticker" }, "intervals": { "type": "intervals", "intervals": [ "-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z" ] }, "virtualColumns": [ { "type": "expression", "name": "d0:v", "expression": "timestamp_floor(\"__time\",'PT1H','','UTC')", "outputType": "LONG" } ], "filter": null, "granularity": { "type": "all" }, "dimensions": [ { "type": "default", "dimension": "d0:v", "outputName": "d0", "outputType": "LONG" }, { "type": "default", "dimension": "cityName", "outputName": "d1", "outputType": "STRING" } ], "aggregations": [], "postAggregations": [], "having": null, "limitSpec": { "type": "default", "columns": [ { "dimension": "d0", "direction": "descending", "dimensionOrder": { "type": "numeric" } }, { "dimension": "d1", "direction": "ascending", "dimensionOrder": { "type": "lexicographic" } } ], "limit": 5000 }, "context": { "timeout": 300000 }, "descending": false } ``` If `__time` column contains nulls, this query throws an error like below. ``` java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long at java.lang.Long.compareTo(Long.java:54) ~[?:1.8.0_163] at com.google.common.collect.NaturalOrdering.compare(NaturalOrdering.java:35) ~[guava-16.0.1.jar:?] at com.google.common.collect.NaturalOrdering.compare(NaturalOrdering.java:26) ~[guava-16.0.1.jar:?] at com.google.common.collect.NullsFirstOrdering.compare(NullsFirstOrdering.java:44) ~[guava-16.0.1.jar:?] at io.druid.query.groupby.GroupByQuery.compareDimsForLimitPushDown(GroupByQuery.java:582) ~[druid-processing-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.query.groupby.GroupByQuery.access$000(GroupByQuery.java:81) ~[druid-processing-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.query.groupby.GroupByQuery$1.compare(GroupByQuery.java:416) ~[druid-processing-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.query.groupby.GroupByQuery$1.compare(GroupByQuery.java:412) ~[druid-processing-0.12.1-iap8.jar:0.12.1-iap8] at com.google.common.collect.ComparatorOrdering.compare(ComparatorOrdering.java:38) ~[guava-16.0.1.jar:?] at io.druid.common.guava.CombiningSequence$CombiningAccumulator.accumulate(CombiningSequence.java:260) ~[druid-common-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.YieldingAccumulators$1.accumulate(YieldingAccumulators.java:35) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.MergeSequence.makeYielder(MergeSequence.java:106) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.MergeSequence.toYielder(MergeSequence.java:94) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.LazySequence.toYielder(LazySequence.java:46) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.query.RetryQueryRunner$1.toYielder(RetryQueryRunner.java:102) ~[druid-processing-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.YieldingSequenceBase.accumulate(YieldingSequenceBase.java:32) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.common.guava.CombiningSequence.accumulate(CombiningSequence.java:64) ~[druid-common-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.MappedSequence.accumulate(MappedSequence.java:43) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.query.groupby.orderby.TopNSequence$1.make(TopNSequence.java:55) ~[druid-processing-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.BaseSequence.toYielder(BaseSequence.java:65) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:87) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:83) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:82) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.MappedSequence.toYielder(MappedSequence.java:49) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:87) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:83) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.query.CPUTimeMetricQueryRunner$1.wrap(CPUTimeMetricQueryRunner.java:74) ~[druid-processing-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:82) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.java.util.common.guava.Yielders.each(Yielders.java:32) ~[java-util-0.12.1-iap8.jar:0.12.1-iap8] at io.druid.server.QueryResource.doPost(QueryResource.java:193) [druid-server-0.12.1-iap8.jar:0.12.1-iap8] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_163] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_163] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_163] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_163]2018-08-07T20:49:53,620 ``` [druid-0.12.1-iap8](https://github.com/implydata/druid/tree/druid-0.12.1-iap8) is almost same with 0.12.2.
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@druid.apache.org For additional commands, e-mail: commits-h...@druid.apache.org