MCPcopy Create free account
hub / github.com/apache/datafusion / sort

Method sort

datafusion/functions-aggregate/src/array_agg.rs:978–998  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

976 }
977
978 fn sort(&mut self) {
979 let sort_options = self
980 .ordering_req
981 .iter()
982 .map(|sort_expr| sort_expr.options)
983 .collect::<Vec<_>>();
984 let mut values = take(&mut self.values)
985 .into_iter()
986 .zip(take(&mut self.ordering_values))
987 .collect::<Vec<_>>();
988 let mut delayed_cmp_err = Ok(());
989 values.sort_by(|(_, left_ordering), (_, right_ordering)| {
990 compare_rows(left_ordering, right_ordering, &sort_options).unwrap_or_else(
991 |err| {
992 delayed_cmp_err = Err(err);
993 Ordering::Equal
994 },
995 )
996 });
997 (self.values, self.ordering_values) = values.into_iter().unzip();
998 }
999
1000 fn evaluate_orderings(&self) -> Result<ScalarValue> {
1001 let fields = ordering_fields(&self.ordering_req, &self.datatypes[1..]);

Callers 8

some_str_sortedFunction · 0.45
merge_batchMethod · 0.45
stateMethod · 0.45
evaluateMethod · 0.45
no_duplicates_distinctFunction · 0.45
duplicates_distinctFunction · 0.45

Calls 5

compare_rowsFunction · 0.85
mapMethod · 0.45
iterMethod · 0.45
into_iterMethod · 0.45
sort_byMethod · 0.45