peter-toth commented on code in PR #9876:
URL: https://github.com/apache/arrow-datafusion/pull/9876#discussion_r1549898856
##########
datafusion/common/src/tree_node.rs:
##########
@@ -551,22 +551,48 @@ impl<I: Iterator> TransformedIterator for I {
) -> Result<Transformed<Vec<Self::Item>>> {
let mut tnr = TreeNodeRecursion::Continue;
let mut transformed = false;
- let data = self
- .map(|item| match tnr {
- TreeNodeRecursion::Continue | TreeNodeRecursion::Jump => {
- f(item).map(|result| {
- tnr = result.tnr;
- transformed |= result.transformed;
- result.data
- })
- }
- TreeNodeRecursion::Stop => Ok(item),
- })
- .collect::<Result<Vec<_>>>()?;
- Ok(Transformed::new(data, transformed, tnr))
+ self.map(|item| match tnr {
+ TreeNodeRecursion::Continue | TreeNodeRecursion::Jump => {
+ f(item).map(|result| {
+ tnr = result.tnr;
+ transformed |= result.transformed;
+ result.data
+ })
+ }
+ TreeNodeRecursion::Stop => Ok(item),
+ })
+ .collect::<Result<Vec<_>>>()
+ .map(|data| Transformed::new(data, transformed, tnr))
}
}
+/// Transformation helper to process sequence of tree node containing
expressions.
+/// This macro is very similar to
[TransformedIterator::map_until_stop_and_collect] to
+/// process nodes that are siblings, but it accepts an initial transformation
and a
+/// sequence of pairs of an expression and its transformation.
Review Comment:
Sure, let me fix these and come back yo you.
--
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]