gstvg commented on code in PR #21323:
URL: https://github.com/apache/datafusion/pull/21323#discussion_r3180264221
##########
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>,
+ ) -> Self {
+ let fields = match &captures {
+ Some(batch) => batch
+ .schema_ref()
+ .fields()
+ .iter()
+ .cloned()
+ .chain(params.clone())
+ .collect(),
+ None => params.clone(),
+ };
+
+ let schema = Arc::new(Schema::new(fields));
+
Self {
params,
body,
schema,
+ captures,
}
}
/// Evaluate this lambda
/// `args` should evaluate to the value of each parameter
/// of the correspondent lambda returned in
[HigherOrderUDF::lambda_parameters].
+ ///
+ /// `adjust` should adjust the captured columns of this
+ /// lambda, if any, relative to it's parameters
Review Comment:
I reworded the comment at
https://github.com/apache/datafusion/pull/21323/changes/26bc71371532bb67be450314193c500cc354bfb6,
WDYT?
--
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]