From 6541ec4bf5560b480c74bd402a913622a2fda0fc Mon Sep 17 00:00:00 2001 From: scwf Date: Fri, 15 May 2015 11:55:21 +0800 Subject: [PATCH 1/2] added union check rule --- .../spark/sql/catalyst/analysis/CheckAnalysis.scala | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala index f104e742c90f..964b58973759 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala @@ -105,6 +105,18 @@ trait CheckAnalysis { cleaned.foreach(checkValidAggregateExpression) + case u @ Union(left, right) if left.output.size != right.output.size => + failAnalysis( + s"union's left child and right child have different output size. " + + s"union node: $u left output size: ${left.output.size}, " + + s"right output size: ${right.output.size}") + + case u @ Union(left, right) if left.output.zip(right.output).exists(z => z._1.dataType != z._2.dataType) => + failAnalysis( + s"union's left child and right child have different output types." + + s"union node: $u. left output datatypes: ${left.output.map(_.dataType)}, " + + s"right output datatypes: ${right.output.map(_.dataType)}") + case _ => // Fallbacks to the following checks } From cf1475aa417623df54e7fb4b7296e43fbd86b2af Mon Sep 17 00:00:00 2001 From: Fei Wang Date: Fri, 15 May 2015 14:11:02 +0800 Subject: [PATCH 2/2] Update CheckAnalysis.scala --- .../apache/spark/sql/catalyst/analysis/CheckAnalysis.scala | 6 ------ 1 file changed, 6 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala index 964b58973759..b51880dceaf5 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala @@ -111,12 +111,6 @@ trait CheckAnalysis { s"union node: $u left output size: ${left.output.size}, " + s"right output size: ${right.output.size}") - case u @ Union(left, right) if left.output.zip(right.output).exists(z => z._1.dataType != z._2.dataType) => - failAnalysis( - s"union's left child and right child have different output types." + - s"union node: $u. left output datatypes: ${left.output.map(_.dataType)}, " + - s"right output datatypes: ${right.output.map(_.dataType)}") - case _ => // Fallbacks to the following checks }