aokolnychyi commented on code in PR #47943:
URL: https://github.com/apache/spark/pull/47943#discussion_r1765719062


##########
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/v2Commands.scala:
##########
@@ -1571,3 +1576,61 @@ case class SetVariable(
   override protected def withNewChildInternal(newChild: LogicalPlan): 
SetVariable =
     copy(sourceQuery = newChild)
 }
+
+/**
+ * The logical plan of the CALL statement.
+ */
+case class Call(
+    procedure: LogicalPlan,
+    args: Seq[Expression],
+    execute: Boolean = true)
+  extends UnaryNode with ExecutableDuringAnalysis {
+
+  override def output: Seq[Attribute] = Nil
+
+  override def child: LogicalPlan = procedure
+
+  def bound: Boolean = procedure match {

Review Comment:
   I was debating this. It looks like we have a few methods like `resolved` and 
`foldable` that skip `is` in the boolean methods. I wasn't sure what's the 
convention here. I went for `bound` to have consistent naming with `resolved`.
   
   ```
   case c: Call if c.resolved && c.bound && c.execute =>
    ...
   ```
   
   That said, I can update. Let me know what you think, @cloud-fan.



-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to