Github user geetikagupta16 commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/1650#discussion_r158903934
--- 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 --
Can you please provide scenario for the same
---