aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangfei <wangfei1@huawei.com>2015-05-05 14:24:37 -0700
committerReynold Xin <rxin@databricks.com>2015-05-05 14:24:37 -0700
commit3059291e2027fb3ebbb2d3376610ce450f7c15a3 (patch)
tree300fbb039c4df9048764234ecb2a1fd2262dc6f3
parentfec7b29f5566b8a46b86f706c64c7823f95e0729 (diff)
downloadspark-3059291e2027fb3ebbb2d3376610ce450f7c15a3.tar.gz
spark-3059291e2027fb3ebbb2d3376610ce450f7c15a3.tar.bz2
spark-3059291e2027fb3ebbb2d3376610ce450f7c15a3.zip
[SQL][Minor] make StringComparison extends ExpectsInputTypes
make StringComparison extends ExpectsInputTypes and added expectedChildTypes, so do not need override expectedChildTypes in each subclass Author: wangfei <wangfei1@huawei.com> Closes #5905 from scwf/ExpectsInputTypes and squashes the following commits: b374ddf [wangfei] make stringcomparison extends ExpectsInputTypes
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala13
1 files changed, 6 insertions, 7 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala
index d6f23df30f..7683e0990c 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala
@@ -154,7 +154,7 @@ case class Lower(child: Expression) extends UnaryExpression with CaseConversionE
}
/** A base trait for functions that compare two strings, returning a boolean. */
-trait StringComparison {
+trait StringComparison extends ExpectsInputTypes {
self: BinaryExpression =>
def compare(l: UTF8String, r: UTF8String): Boolean
@@ -163,6 +163,8 @@ trait StringComparison {
override def nullable: Boolean = left.nullable || right.nullable
+ override def expectedChildTypes: Seq[DataType] = Seq(StringType, StringType)
+
override def eval(input: Row): Any = {
val leftEval = left.eval(input)
if(leftEval == null) {
@@ -183,27 +185,24 @@ trait StringComparison {
* A function that returns true if the string `left` contains the string `right`.
*/
case class Contains(left: Expression, right: Expression)
- extends BinaryExpression with Predicate with StringComparison with ExpectsInputTypes {
+ extends BinaryExpression with Predicate with StringComparison {
override def compare(l: UTF8String, r: UTF8String): Boolean = l.contains(r)
- override def expectedChildTypes: Seq[DataType] = Seq(StringType, StringType)
}
/**
* A function that returns true if the string `left` starts with the string `right`.
*/
case class StartsWith(left: Expression, right: Expression)
- extends BinaryExpression with Predicate with StringComparison with ExpectsInputTypes {
+ extends BinaryExpression with Predicate with StringComparison {
override def compare(l: UTF8String, r: UTF8String): Boolean = l.startsWith(r)
- override def expectedChildTypes: Seq[DataType] = Seq(StringType, StringType)
}
/**
* A function that returns true if the string `left` ends with the string `right`.
*/
case class EndsWith(left: Expression, right: Expression)
- extends BinaryExpression with Predicate with StringComparison with ExpectsInputTypes {
+ extends BinaryExpression with Predicate with StringComparison {
override def compare(l: UTF8String, r: UTF8String): Boolean = l.endsWith(r)
- override def expectedChildTypes: Seq[DataType] = Seq(StringType, StringType)
}
/**