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


##########
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:
   `PhysicalExpr` usually don't know the schema on creation which mean that now 
the API is a little weird, since captures requires you to know the names which 
also mean any tree transformation that will rename will now no longer work 
since the captures are not updated.



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