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

Reply via email to