From 002c361a0cf73187a12355cc916593a36ec2e555 Mon Sep 17 00:00:00 2001 From: Cheng Hao Date: Sat, 18 Apr 2015 02:03:54 +0800 Subject: [PATCH] change the rule of resolved for Generate --- .../org/apache/spark/sql/catalyst/analysis/Analyzer.scala | 2 +- .../spark/sql/catalyst/expressions/namedExpressions.scala | 3 +-- .../spark/sql/catalyst/plans/logical/basicOperators.scala | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala index 35c3c82551f36..dbbaa76074d02 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala @@ -495,7 +495,7 @@ class Analyzer( generatorOutput: Seq[Attribute]): Seq[Attribute] = { val elementTypes = generator.elementTypes - if (generatorOutput.size == elementTypes.size) { + if (generatorOutput.length == elementTypes.length) { generatorOutput.zip(elementTypes).map { case (a, (t, nullable)) if !a.resolved => AttributeReference(a.name, t, nullable)() diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala index afcb2ce8b9cb4..6dd770933856d 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala @@ -112,8 +112,7 @@ case class Alias(child: Expression, name: String)( extends NamedExpression with trees.UnaryNode[Expression] { override type EvaluatedType = Any - // Alias(Generator, xx) need to be transformed into Generate(generator, ...) - override lazy val resolved = childrenResolved && !child.isInstanceOf[Generator] + override lazy val resolved = childrenResolved override def eval(input: Row): Any = child.eval(input) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala index fbe76503d4b96..bbc94a7ab3398 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala @@ -61,6 +61,7 @@ case class Generate( override lazy val resolved: Boolean = { generator.resolved && childrenResolved && + generator.elementTypes.length == generatorOutput.length && !generatorOutput.exists(!_.resolved) }