From cc0204564edc4b4ba59a88e744dac8d4166e7da2 Mon Sep 17 00:00:00 2001 From: Wenchen Fan Date: Fri, 15 May 2015 14:40:16 +0800 Subject: [PATCH] consider elements length equal --- .../apache/spark/sql/catalyst/expressions/Expression.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala index 04c209f674064..b981adba82882 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala @@ -77,11 +77,14 @@ abstract class Expression extends TreeNode[Expression] { }.toString } - def semanticEquals(other: Expression): Boolean = this.getClass == other.getClass && - this.productIterator.zip(other.asInstanceOf[Product].productIterator).forall { + def semanticEquals(other: Expression): Boolean = this.getClass == other.getClass && { + val elements1 = this.productIterator.toSeq + val elements2 = other.asInstanceOf[Product].productIterator.toSeq + elements1.length == elements2.length && elements1.zip(elements2).forall { case (e1: Expression, e2: Expression) => e1 semanticEquals e2 case (i1, i2) => i1 == i2 } + } } abstract class BinaryExpression extends Expression with trees.BinaryNode[Expression] {