You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ja...@apache.org on 2016/07/19 14:13:34 UTC

[1/2] incubator-carbondata git commit: Pushdown greaterthan and lessthan filters to carbon

Repository: incubator-carbondata
Updated Branches:
  refs/heads/master e5ed64bbe -> d3d2e338d


Pushdown greaterthan and lessthan filters to carbon

Rebased code


Project: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/commit/175a21fb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/tree/175a21fb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/diff/175a21fb

Branch: refs/heads/master
Commit: 175a21fb37e1dc9fafcbdc28a299eae9e86c056c
Parents: e5ed64b
Author: ravipesala <ra...@gmail.com>
Authored: Thu Jul 14 00:56:59 2016 +0530
Committer: jackylk <ja...@huawei.com>
Committed: Tue Jul 19 22:11:20 2016 +0800

----------------------------------------------------------------------
 .../org/carbondata/spark/CarbonFilters.scala    | 97 +++++++++++++++++++-
 1 file changed, 95 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/175a21fb/integration/spark/src/main/scala/org/carbondata/spark/CarbonFilters.scala
----------------------------------------------------------------------
diff --git a/integration/spark/src/main/scala/org/carbondata/spark/CarbonFilters.scala b/integration/spark/src/main/scala/org/carbondata/spark/CarbonFilters.scala
index a7a8313..fd0ccaf 100644
--- a/integration/spark/src/main/scala/org/carbondata/spark/CarbonFilters.scala
+++ b/integration/spark/src/main/scala/org/carbondata/spark/CarbonFilters.scala
@@ -34,12 +34,12 @@ import org.carbondata.scan.expression.logical.{AndExpression, OrExpression}
 import org.carbondata.spark.util.CarbonScalaUtil
 
 /**
- * All filter coversions are done here.
+ * All filter conversions are done here.
  */
 object CarbonFilters {
 
   /**
-   * Converts data sources filters to Parquet filter predicates.
+   * Converts data sources filters to carbon filter predicates.
    */
   def createCarbonFilter(schema: StructType,
       predicate: sources.Filter): Option[CarbonExpression] = {
@@ -62,6 +62,19 @@ object CarbonFilters {
           Some(new NotEqualsExpression(getCarbonExpression(name),
             getCarbonLiteralExpression(name, value)))
 
+        case sources.GreaterThan(name, value) =>
+          Some(new GreaterThanExpression(getCarbonExpression(name),
+            getCarbonLiteralExpression(name, value)))
+        case sources.LessThan(name, value) =>
+          Some(new LessThanExpression(getCarbonExpression(name),
+            getCarbonLiteralExpression(name, value)))
+        case sources.GreaterThanOrEqual(name, value) =>
+          Some(new GreaterThanEqualToExpression(getCarbonExpression(name),
+            getCarbonLiteralExpression(name, value)))
+        case sources.LessThanOrEqual(name, value) =>
+          Some(new LessThanEqualToExpression(getCarbonExpression(name),
+            getCarbonLiteralExpression(name, value)))
+
         case sources.In(name, values) =>
           Some(new InExpression(getCarbonExpression(name),
             new ListExpression(values.map(f => getCarbonLiteralExpression(name, f)).toList.asJava)))
@@ -153,6 +166,42 @@ object CarbonFilters {
           val hSet = list.map(e => e.eval(EmptyRow))
           Some(sources.In(a.name, hSet.toArray))
 
+        case GreaterThan(a: Attribute, Literal(v, t)) =>
+          Some(sources.GreaterThan(a.name, v))
+        case GreaterThan(Literal(v, t), a: Attribute) =>
+          Some(sources.LessThan(a.name, v))
+        case GreaterThan(Cast(a: Attribute, _), Literal(v, t)) =>
+          Some(sources.GreaterThan(a.name, v))
+        case GreaterThan(Literal(v, t), Cast(a: Attribute, _)) =>
+          Some(sources.LessThan(a.name, v))
+
+        case LessThan(a: Attribute, Literal(v, t)) =>
+          Some(sources.LessThan(a.name, v))
+        case LessThan(Literal(v, t), a: Attribute) =>
+          Some(sources.GreaterThan(a.name, v))
+        case LessThan(Cast(a: Attribute, _), Literal(v, t)) =>
+          Some(sources.LessThan(a.name, v))
+        case LessThan(Literal(v, t), Cast(a: Attribute, _)) =>
+          Some(sources.GreaterThan(a.name, v))
+
+        case GreaterThanOrEqual(a: Attribute, Literal(v, t)) =>
+          Some(sources.GreaterThanOrEqual(a.name, v))
+        case GreaterThanOrEqual(Literal(v, t), a: Attribute) =>
+          Some(sources.LessThanOrEqual(a.name, v))
+        case GreaterThanOrEqual(Cast(a: Attribute, _), Literal(v, t)) =>
+          Some(sources.GreaterThanOrEqual(a.name, v))
+        case GreaterThanOrEqual(Literal(v, t), Cast(a: Attribute, _)) =>
+          Some(sources.LessThanOrEqual(a.name, v))
+
+        case LessThanOrEqual(a: Attribute, Literal(v, t)) =>
+          Some(sources.LessThanOrEqual(a.name, v))
+        case LessThanOrEqual(Literal(v, t), a: Attribute) =>
+          Some(sources.GreaterThanOrEqual(a.name, v))
+        case LessThanOrEqual(Cast(a: Attribute, _), Literal(v, t)) =>
+          Some(sources.LessThanOrEqual(a.name, v))
+        case LessThanOrEqual(Literal(v, t), Cast(a: Attribute, _)) =>
+          Some(sources.GreaterThanOrEqual(a.name, v))
+
         case others =>
           if (!or) {
             others.collect {
@@ -221,6 +270,50 @@ object CarbonFilters {
           Some(new InExpression(transformExpression(a).get,
             new ListExpression(list.map(transformExpression(_).get).asJava)))
 
+        case GreaterThan(a: Attribute, l@Literal(v, t)) =>
+          Some(new GreaterThanExpression(transformExpression(a).get, transformExpression(l).get))
+        case GreaterThan(Cast(a: Attribute, _), l@Literal(v, t)) =>
+          Some(new GreaterThanExpression(transformExpression(a).get, transformExpression(l).get))
+        case GreaterThan(l@Literal(v, t), a: Attribute) =>
+          Some(new LessThanExpression(transformExpression(a).get, transformExpression(l).get))
+        case GreaterThan(l@Literal(v, t), Cast(a: Attribute, _)) =>
+          Some(new LessThanExpression(transformExpression(a).get, transformExpression(l).get))
+
+        case LessThan(a: Attribute, l@Literal(v, t)) =>
+          Some(new LessThanExpression(transformExpression(a).get, transformExpression(l).get))
+        case LessThan(Cast(a: Attribute, _), l@Literal(v, t)) =>
+          Some(new LessThanExpression(transformExpression(a).get, transformExpression(l).get))
+        case LessThan(l@Literal(v, t), a: Attribute) =>
+          Some(new GreaterThanExpression(transformExpression(a).get, transformExpression(l).get))
+        case LessThan(l@Literal(v, t), Cast(a: Attribute, _)) =>
+          Some(new GreaterThanExpression(transformExpression(a).get, transformExpression(l).get))
+
+        case GreaterThanOrEqual(a: Attribute, l@Literal(v, t)) =>
+          Some(new GreaterThanEqualToExpression(transformExpression(a).get,
+            transformExpression(l).get))
+        case GreaterThanOrEqual(Cast(a: Attribute, _), l@Literal(v, t)) =>
+          Some(new GreaterThanEqualToExpression(transformExpression(a).get,
+            transformExpression(l).get))
+        case GreaterThanOrEqual(l@Literal(v, t), a: Attribute) =>
+          Some(new LessThanEqualToExpression(transformExpression(a).get,
+            transformExpression(l).get))
+        case GreaterThanOrEqual(l@Literal(v, t), Cast(a: Attribute, _)) =>
+          Some(new LessThanEqualToExpression(transformExpression(a).get,
+            transformExpression(l).get))
+
+        case LessThanOrEqual(a: Attribute, l@Literal(v, t)) =>
+          Some(new LessThanEqualToExpression(transformExpression(a).get,
+            transformExpression(l).get))
+        case LessThanOrEqual(Cast(a: Attribute, _), l@Literal(v, t)) =>
+          Some(new LessThanEqualToExpression(transformExpression(a).get,
+            transformExpression(l).get))
+        case LessThanOrEqual(l@Literal(v, t), a: Attribute) =>
+          Some(new GreaterThanEqualToExpression(transformExpression(a).get,
+            transformExpression(l).get))
+        case LessThanOrEqual(l@Literal(v, t), Cast(a: Attribute, _)) =>
+          Some(new GreaterThanEqualToExpression(transformExpression(a).get,
+            transformExpression(l).get))
+
         case AttributeReference(name, dataType, _, _) =>
           Some(new CarbonColumnExpression(name,
             CarbonScalaUtil.convertSparkToCarbonDataType(


[2/2] incubator-carbondata git commit: [CARBONDATA-37] Pushdown greaterthan and lessthan filters to carbon This closes #37

Posted by ja...@apache.org.
[CARBONDATA-37] Pushdown greaterthan and lessthan filters to carbon This closes #37


Project: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/commit/d3d2e338
Tree: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/tree/d3d2e338
Diff: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/diff/d3d2e338

Branch: refs/heads/master
Commit: d3d2e338d59c23184cfba163b64c1c0f234df539
Parents: e5ed64b 175a21f
Author: jackylk <ja...@huawei.com>
Authored: Tue Jul 19 22:12:46 2016 +0800
Committer: jackylk <ja...@huawei.com>
Committed: Tue Jul 19 22:12:46 2016 +0800

----------------------------------------------------------------------
 .../org/carbondata/spark/CarbonFilters.scala    | 97 +++++++++++++++++++-
 1 file changed, 95 insertions(+), 2 deletions(-)
----------------------------------------------------------------------