aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorTakuya UESHIN <ueshin@happy-camper.st>2014-07-15 22:35:34 -0700
committerReynold Xin <rxin@apache.org>2014-07-15 22:35:34 -0700
commit9b38b7c71352bb5e6d359515111ad9ca33299127 (patch)
tree135b507a642d42e9b21adf49ecbf034f44aeb780 /sql
parent90ca532a0fd95dc85cff8c5722d371e8368b2687 (diff)
downloadspark-9b38b7c71352bb5e6d359515111ad9ca33299127.tar.gz
spark-9b38b7c71352bb5e6d359515111ad9ca33299127.tar.bz2
spark-9b38b7c71352bb5e6d359515111ad9ca33299127.zip
[SPARK-2509][SQL] Add optimization for Substring.
`Substring` including `null` literal cases could be added to `NullPropagation`. Author: Takuya UESHIN <ueshin@happy-camper.st> Closes #1428 from ueshin/issues/SPARK-2509 and squashes the following commits: d9eb85f [Takuya UESHIN] Add Substring cases to NullPropagation.
Diffstat (limited to 'sql')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala3
1 files changed, 3 insertions, 0 deletions
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 a142310c50..714e2cdac2 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)