You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by rx...@apache.org on 2014/07/16 07:35:38 UTC
git commit: [SPARK-2509][SQL] Add optimization for Substring.
Repository: spark
Updated Branches:
refs/heads/master 90ca532a0 -> 9b38b7c71
[SPARK-2509][SQL] Add optimization for Substring.
`Substring` including `null` literal cases could be added to `NullPropagation`.
Author: Takuya UESHIN <ue...@happy-camper.st>
Closes #1428 from ueshin/issues/SPARK-2509 and squashes the following commits:
d9eb85f [Takuya UESHIN] Add Substring cases to NullPropagation.
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/9b38b7c7
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/9b38b7c7
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/9b38b7c7
Branch: refs/heads/master
Commit: 9b38b7c71352bb5e6d359515111ad9ca33299127
Parents: 90ca532
Author: Takuya UESHIN <ue...@happy-camper.st>
Authored: Tue Jul 15 22:35:34 2014 -0700
Committer: Reynold Xin <rx...@apache.org>
Committed: Tue Jul 15 22:35:34 2014 -0700
----------------------------------------------------------------------
.../scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/9b38b7c7/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala
----------------------------------------------------------------------
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala
index a142310..714e2cd 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala
@@ -171,6 +171,9 @@ object NullPropagation extends Rule[LogicalPlan] {
case Literal(candidate, _) if candidate == v => true
case _ => false
})) => Literal(true, BooleanType)
+ case e @ Substring(Literal(null, _), _, _) => Literal(null, e.dataType)
+ case e @ Substring(_, Literal(null, _), _) => Literal(null, e.dataType)
+ case e @ Substring(_, _, Literal(null, _)) => Literal(null, e.dataType)
// Put exceptional cases above if any
case e: BinaryArithmetic => e.children match {
case Literal(null, _) :: right :: Nil => Literal(null, e.dataType)