Repository: spark
Updated Branches:
  refs/heads/master 4e9b551a0 -> 2837bf854


[SPARK-3798][SQL] Store the output of a generator in a val

This prevents it from changing during serialization, leading to corrupted 
results.

Author: Michael Armbrust <[email protected]>

Closes #2656 from marmbrus/generateBug and squashes the following commits:

efa32eb [Michael Armbrust] Store the output of a generator in a val. This 
prevents it from changing during serialization.


Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/2837bf85
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/2837bf85
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/2837bf85

Branch: refs/heads/master
Commit: 2837bf8548db7e9d43f6eefedf5a73feb22daedb
Parents: 4e9b551
Author: Michael Armbrust <[email protected]>
Authored: Thu Oct 9 17:54:02 2014 -0700
Committer: Michael Armbrust <[email protected]>
Committed: Thu Oct 9 17:54:02 2014 -0700

----------------------------------------------------------------------
 .../main/scala/org/apache/spark/sql/execution/Generate.scala    | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/2837bf85/sql/core/src/main/scala/org/apache/spark/sql/execution/Generate.scala
----------------------------------------------------------------------
diff --git 
a/sql/core/src/main/scala/org/apache/spark/sql/execution/Generate.scala 
b/sql/core/src/main/scala/org/apache/spark/sql/execution/Generate.scala
index c386fd1..38877c2 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/Generate.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/Generate.scala
@@ -39,7 +39,8 @@ case class Generate(
     child: SparkPlan)
   extends UnaryNode {
 
-  protected def generatorOutput: Seq[Attribute] = {
+  // This must be a val since the generator output expr ids are not preserved 
by serialization.
+  protected val generatorOutput: Seq[Attribute] = {
     if (join && outer) {
       generator.output.map(_.withNullability(true))
     } else {
@@ -62,7 +63,7 @@ case class Generate(
           newProjection(child.output ++ nullValues, child.output)
 
         val joinProjection =
-          newProjection(child.output ++ generator.output, child.output ++ 
generator.output)
+          newProjection(child.output ++ generatorOutput, child.output ++ 
generatorOutput)
         val joinedRow = new JoinedRow
 
         iter.flatMap {row =>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to