maryannxue commented on a change in pull request #23531:
URL: https://github.com/apache/spark/pull/23531#discussion_r416872953
##########
File path:
sql/core/src/main/scala/org/apache/spark/sql/execution/basicPhysicalOperators.scala
##########
@@ -253,6 +257,143 @@ case class FilterExec(condition: Expression, child:
SparkPlan)
}
}
+/**
+ * Physical plan node for a recursive relation that encapsulates the physical
plan of the anchor
+ * term and the logical plan of the recursive term.
+ *
+ * Anchor is used to initialize the query in the first run.
+ * Recursive term is used to extend the result with new rows, They are logical
plans and contain
+ * references to the result of the previous iteration or to the so far
accumulated result. These
+ * references are updated with new statistics and data and then compiled to
physical plan before
+ * execution.
+ *
+ * The execution terminates once the anchor term or an iteration of the
recursive term return no
+ * rows.
+ *
+ * @param cteName the name of the recursive relation
+ * @param anchorTerm this child is used for initializing the query
+ * @param output the attributes of the recursive relation
+ */
+case class RecursiveRelationExec(
+ cteName: String,
+ anchorTerm: SparkPlan,
+ output: Seq[Attribute]) extends SparkPlan {
+ @transient
+ lazy val logicalRecursiveTerm =
logicalLink.get.asInstanceOf[RecursiveRelation].recursiveTerm
Review comment:
I think a `transient` member would do
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]