alamb commented on code in PR #14038:
URL: https://github.com/apache/datafusion/pull/14038#discussion_r1905987391
##########
datafusion/physical-expr-common/src/sort_expr.rs:
##########
@@ -409,6 +409,22 @@ impl LexOrdering {
.map(PhysicalSortExpr::from)
.collect()
}
+
+ /// Collapse a `LexOrdering` into a new duplicate-free `LexOrdering` based
on expression.
+ ///
+ /// This function filters duplicate entries that have same physical
+ /// expression inside, ignoring [`SortOptions`]. For example:
+ ///
+ /// `vec![a ASC, a DESC]` collapses to `vec![a ASC]`.
+ pub fn collapse(self) -> Self {
+ let mut output = LexOrdering::default();
+ for item in self {
+ if !output.iter().any(|req| req.expr.eq(&item.expr)) {
+ output.push(item);
Review Comment:
In the original code this was `item.clone()` -- though it is only cloning an
Arc so the performance benefit is likely minimal
--
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]