@@ -23,7 +23,7 @@ use crate::planner::{
23
23
} ;
24
24
use crate :: utils:: {
25
25
check_columns_satisfy_exprs, extract_aliases, rebase_expr, resolve_aliases_to_exprs,
26
- resolve_columns, resolve_positions_to_exprs, transform_bottom_unnest ,
26
+ resolve_columns, resolve_positions_to_exprs, transform_bottom_unnests ,
27
27
} ;
28
28
29
29
use datafusion_common:: tree_node:: { TreeNode , TreeNodeRecursion } ;
@@ -318,20 +318,12 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
318
318
// - unnest(struct_col) will be transformed into unnest(struct_col).field1, unnest(struct_col).field2
319
319
// - unnest(array_col) will be transformed into unnest(array_col).element
320
320
// - unnest(array_col) + 1 will be transformed into unnest(array_col).element +1
321
- let outer_projection_exprs: Vec < Expr > = intermediate_select_exprs
322
- . iter ( )
323
- . map ( |expr| {
324
- transform_bottom_unnest (
325
- & intermediate_plan,
326
- & mut unnest_columns,
327
- & mut inner_projection_exprs,
328
- expr,
329
- )
330
- } )
331
- . collect :: < Result < Vec < _ > > > ( ) ?
332
- . into_iter ( )
333
- . flatten ( )
334
- . collect ( ) ;
321
+ let outer_projection_exprs = transform_bottom_unnests (
322
+ & intermediate_plan,
323
+ & mut unnest_columns,
324
+ & mut inner_projection_exprs,
325
+ & intermediate_select_exprs,
326
+ ) ?;
335
327
336
328
// No more unnest is possible
337
329
if unnest_columns. is_empty ( ) {
@@ -417,20 +409,12 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
417
409
let mut unnest_columns = vec ! [ ] ;
418
410
let mut inner_projection_exprs = vec ! [ ] ;
419
411
420
- let outer_projection_exprs: Vec < Expr > = intermediate_select_exprs
421
- . iter ( )
422
- . map ( |expr| {
423
- transform_bottom_unnest (
424
- & intermediate_plan,
425
- & mut unnest_columns,
426
- & mut inner_projection_exprs,
427
- expr,
428
- )
429
- } )
430
- . collect :: < Result < Vec < _ > > > ( ) ?
431
- . into_iter ( )
432
- . flatten ( )
433
- . collect ( ) ;
412
+ let outer_projection_exprs = transform_bottom_unnests (
413
+ & intermediate_plan,
414
+ & mut unnest_columns,
415
+ & mut inner_projection_exprs,
416
+ & intermediate_select_exprs,
417
+ ) ?;
434
418
435
419
if unnest_columns. is_empty ( ) {
436
420
break ;
0 commit comments