@@ -1040,16 +1040,13 @@ fn expr_normalize(
10401040
10411041 e @ Expr :: QualifiedWildcard { .. } => Ok ( Box :: new ( e. clone ( ) ) ) ,
10421042
1043- Expr :: GroupingSet ( grouping_set) => {
1044- let grouping_set = grouping_set_normalize (
1045- optimizer,
1046- grouping_set,
1047- schema,
1048- remapped_columns,
1049- optimizer_config,
1050- ) ?;
1051- Ok ( Box :: new ( Expr :: GroupingSet ( grouping_set) ) )
1052- }
1043+ Expr :: GroupingSet ( grouping_set) => grouping_set_normalize (
1044+ optimizer,
1045+ grouping_set,
1046+ schema,
1047+ remapped_columns,
1048+ optimizer_config,
1049+ ) ,
10531050 }
10541051}
10551052
@@ -1112,50 +1109,64 @@ fn grouping_set_normalize(
11121109 schema : & DFSchema ,
11131110 remapped_columns : & HashMap < Column , Column > ,
11141111 optimizer_config : & OptimizerConfig ,
1115- ) -> Result < GroupingSet > {
1112+ ) -> Result < Box < Expr > > {
11161113 match grouping_set {
11171114 GroupingSet :: Rollup ( exprs) => {
11181115 let exprs = exprs
11191116 . iter ( )
11201117 . map ( |expr| {
1121- expr_normalize ( optimizer, expr, schema, remapped_columns, optimizer_config)
1118+ expr_normalize_stacked (
1119+ optimizer,
1120+ expr,
1121+ schema,
1122+ remapped_columns,
1123+ optimizer_config,
1124+ )
11221125 } )
11231126 . collect :: < Result < Vec < _ > > > ( ) ?;
1124- Ok ( GroupingSet :: Rollup ( exprs. into_iter ( ) . map ( |e| * e) . collect ( ) ) )
1127+
1128+ Ok ( Box :: new ( Expr :: GroupingSet ( GroupingSet :: Rollup ( exprs) ) ) )
11251129 }
11261130
11271131 GroupingSet :: Cube ( exprs) => {
11281132 let exprs = exprs
11291133 . iter ( )
11301134 . map ( |expr| {
1131- expr_normalize ( optimizer, expr, schema, remapped_columns, optimizer_config)
1135+ expr_normalize_stacked (
1136+ optimizer,
1137+ expr,
1138+ schema,
1139+ remapped_columns,
1140+ optimizer_config,
1141+ )
11321142 } )
11331143 . collect :: < Result < Vec < _ > > > ( ) ?;
1134- Ok ( GroupingSet :: Cube ( exprs. into_iter ( ) . map ( |e| * e) . collect ( ) ) )
1144+
1145+ Ok ( Box :: new ( Expr :: GroupingSet ( GroupingSet :: Cube ( exprs) ) ) )
11351146 }
11361147
11371148 GroupingSet :: GroupingSets ( exprs) => {
11381149 let exprs = exprs
11391150 . iter ( )
11401151 . map ( |exprs| {
1141- Ok ( exprs
1152+ exprs
11421153 . iter ( )
11431154 . map ( |expr| {
1144- expr_normalize (
1155+ expr_normalize_stacked (
11451156 optimizer,
11461157 expr,
11471158 schema,
11481159 remapped_columns,
11491160 optimizer_config,
11501161 )
11511162 } )
1152- . collect :: < Result < Vec < _ > > > ( ) ?
1153- . into_iter ( )
1154- . map ( |e| * e)
1155- . collect ( ) )
1163+ . collect :: < Result < Vec < _ > > > ( )
11561164 } )
11571165 . collect :: < Result < Vec < _ > > > ( ) ?;
1158- Ok ( GroupingSet :: GroupingSets ( exprs) )
1166+
1167+ Ok ( Box :: new ( Expr :: GroupingSet ( GroupingSet :: GroupingSets (
1168+ exprs,
1169+ ) ) ) )
11591170 }
11601171 }
11611172}
0 commit comments