gstvg commented on code in PR #21323:
URL: https://github.com/apache/datafusion/pull/21323#discussion_r3180270966


##########
datafusion/expr/src/higher_order_function.rs:
##########
@@ -224,35 +224,104 @@ pub struct LambdaArgument {
     /// per outer sublist), avoiding the per-call `Schema::new` build that
     /// includes constructing the internal name -> index map.
     schema: SchemaRef,
+    /// A RecordBatch containing the captured columns inside this lambda body, 
if any
+    ///
+    /// For example, for `array_transform([2], v -> v + a + b)`,
+    /// this will be a `RecordBatch` with two columns, `a` and `b`
+    captures: Option<RecordBatch>,
 }
 
 impl LambdaArgument {
-    pub fn new(params: Vec<FieldRef>, body: Arc<dyn PhysicalExpr>) -> Self {
-        let schema = Arc::new(Schema::new(params.clone()));
+    pub fn new(
+        params: Vec<FieldRef>,
+        body: Arc<dyn PhysicalExpr>,
+        captures: Option<RecordBatch>,

Review Comment:
   `LambdaArgument` it's not a `PhysicalExpr`, it's just a helper to the 
function implementer to encapsulate the evaluation of only the requested lambda 
parameters and merging the outer columns with the evaluated parameters. It's 
created only during execution, after I believe all tree transformation should 
have already happened
   
   
   
https://github.com/apache/datafusion/blob/0a3f2e6264a8ce69b7316a59b32a10e27f682557/datafusion/physical-expr/src/higher_order_function.rs#L348-L356
   
   [Link to the PR diff 
UI](https://github.com/apache/datafusion/pull/21323/changes#diff-82f03654507864698a026045144642b3dcda8aedc20d29aea782f28b47b9d0eaR348)



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