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>],
)
| 163 | /// |
| 164 | /// [`DataFusionError`]: datafusion_common::DataFusionError |
| 165 | fn 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,\ |
no test coverage detected
searching dependent graphs…