carbondata-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sounakr <...@git.apache.org>
Subject [GitHub] carbondata pull request #1650: [CARBONDATA-1703] Refactored code for creatio...
Date Wed, 27 Dec 2017 15:26:40 GMT
Github user sounakr commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/1650#discussion_r158827952
  
    --- Diff: integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonFilters.scala
---
    @@ -78,13 +78,25 @@ object CarbonFilters {
               Some(new LessThanEqualToExpression(getCarbonExpression(name),
                 getCarbonLiteralExpression(name, value)))
             case sources.In(name, values) =>
    -          Some(new InExpression(getCarbonExpression(name),
    -            new ListExpression(
    -              convertToJavaList(values.map(f => getCarbonLiteralExpression(name, f)).toList))))
    +          if (values.length == 1 && values(0) == null) {
    +            Some(new InExpression(getCarbonExpression(name),
    +              new ListExpression(
    +                convertToJavaList(values.map(filterValues =>
    +                  getCarbonLiteralExpression(name, filterValues)).toList))))
    +          } else {
    +            Some(new InExpression(getCarbonExpression(name),
    +              new ListExpression(
    +                convertToJavaList(values.filterNot(_ == null)
    +                  .map(filterValues => getCarbonLiteralExpression(name, filterValues)).toList))))
    +          }
             case sources.Not(sources.In(name, values)) =>
    -          Some(new NotInExpression(getCarbonExpression(name),
    -            new ListExpression(
    -              convertToJavaList(values.map(f => getCarbonLiteralExpression(name, f)).toList))))
    +          if (values.contains(null)) {
    +            Some(new FalseExpression(getCarbonExpression(name)))
    +          } else {
    +            Some(new NotInExpression(getCarbonExpression(name),
    --- End diff --
    
    I think similar changes are required in transformExpression also. In case Cast is not
resolved by Spark then transformExpression will handle those expression. But prior doing any
changes we need supporting test cases.


---

Mime
View raw message