From 0619ed47ce29846e5af224efb468bbbe610f38db Mon Sep 17 00:00:00 2001 From: sounakr Date: Fri, 26 May 2017 16:59:44 +0530 Subject: [PATCH] Inset Filter --- .../apache/spark/sql/execution/CarbonLateDecodeStrategy.scala | 4 ++++ .../scala/org/apache/spark/sql/optimizer/CarbonFilters.scala | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/execution/CarbonLateDecodeStrategy.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/execution/CarbonLateDecodeStrategy.scala index ac43a12a98f..46059146d0c 100644 --- a/integration/spark2/src/main/scala/org/apache/spark/sql/execution/CarbonLateDecodeStrategy.scala +++ b/integration/spark2/src/main/scala/org/apache/spark/sql/execution/CarbonLateDecodeStrategy.scala @@ -471,6 +471,10 @@ private[sql] class CarbonLateDecodeStrategy extends SparkStrategy { Some(CastExpr(c)) case c@In(Cast(a: Attribute, _), list) if !list.exists(!_.isInstanceOf[Literal]) => Some(CastExpr(c)) + case InSet(a: Attribute, set) => + Some(sources.In(a.name, set.toArray)) + case Not(InSet(a: Attribute, set)) => + Some(sources.Not(sources.In(a.name, set.toArray))) case GreaterThan(a: Attribute, Literal(v, t)) => Some(sources.GreaterThan(a.name, v)) case GreaterThan(Literal(v, t), a: Attribute) => diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonFilters.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonFilters.scala index 5c80618b174..1bc97d8a383 100644 --- a/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonFilters.scala +++ b/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonFilters.scala @@ -197,6 +197,10 @@ object CarbonFilters { Some(CastExpr(c)) case c@In(Cast(a: Attribute, _), list) if !list.exists(!_.isInstanceOf[Literal]) => Some(CastExpr(c)) + case InSet(a: Attribute, set) => + Some(sources.In(a.name, set.toArray)) + case Not(InSet(a: Attribute, set)) => + Some(sources.Not(sources.In(a.name, set.toArray))) case GreaterThan(a: Attribute, Literal(v, t)) => Some(sources.GreaterThan(a.name, v)) case GreaterThan(Literal(v, t), a: Attribute) =>