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(-)
----------------------------------------------------------------------