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

Function cross_join_grouping_sets

datafusion/expr/src/utils.rs:165–180  ·  view source on GitHub ↗

Compute the cross product of two grouping_sets # Example ```text [(A, B), (C, D)], [(E), (F)] -> [(A, B, E), (A, B, F), (C, D, E), (C, D, F)] ``` # Error - [`DataFusionError`]: The number of group_expression in grouping_set exceeds the maximum limit - [`DataFusionError`]: The number of grouping_set in grouping_sets exceeds the maximum limit [`DataFusionError`]: datafusion_common::DataFusionErro

(
    left: &[Vec<T>],
    right: &[Vec<T>],
)

Source from the content-addressed store, hash-verified

163///
164/// [`DataFusionError`]: datafusion_common::DataFusionError
165fn cross_join_grouping_sets<T: Clone>(
166 left: &[Vec<T>],
167 right: &[Vec<T>],
168) -> Result<Vec<Vec<T>>> {
169 let grouping_sets_size = left.len() * right.len();
170
171 check_grouping_sets_size_limit(grouping_sets_size)?;
172
173 let mut result = Vec::with_capacity(grouping_sets_size);
174 for le in left {
175 for re in right {
176 result.push(merge_grouping_set(le, re)?);
177 }
178 }
179 Ok(result)
180}
181
182/// Convert multiple grouping expressions into one [`GroupingSet::GroupingSets`],\
183/// if the grouping expression does not contain [`Expr::GroupingSet`] or only has one expression,\

Callers 1

enumerate_grouping_setsFunction · 0.85

Calls 4

merge_grouping_setFunction · 0.85
lenMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…