@@ -699,7 +699,8 @@ TExprNode::TPtr TAggregateExpander::TryGenerateBlockCombineAllOrHashed() {
699
699
} else {
700
700
stream = AggList;
701
701
}
702
- auto blocks = MakeInputBlocks (stream, keyIdxs, outputColumns, aggs, false , false );
702
+
703
+ TExprNode::TPtr blocks = MakeInputBlocks (stream, keyIdxs, outputColumns, aggs, false , false );
703
704
if (!blocks) {
704
705
return nullptr ;
705
706
}
@@ -708,22 +709,30 @@ TExprNode::TPtr TAggregateExpander::TryGenerateBlockCombineAllOrHashed() {
708
709
if (hashed) {
709
710
aggWideFlow = Ctx.Builder (Node->Pos ())
710
711
.Callable (" WideFromBlocks" )
711
- .Callable (0 , " BlockCombineHashed" )
712
- .Add (0 , blocks)
713
- .Callable (1 , " Void" )
712
+ .Callable (0 , " ToFlow" )
713
+ .Callable (0 , " BlockCombineHashed" )
714
+ .Callable (0 , " FromFlow" )
715
+ .Add (0 , blocks)
716
+ .Seal ()
717
+ .Callable (1 , " Void" )
718
+ .Seal ()
719
+ .Add (2 , Ctx.NewList (Node->Pos (), std::move (keyIdxs)))
720
+ .Add (3 , Ctx.NewList (Node->Pos (), std::move (aggs)))
714
721
.Seal ()
715
- .Add (2 , Ctx.NewList (Node->Pos (), std::move (keyIdxs)))
716
- .Add (3 , Ctx.NewList (Node->Pos (), std::move (aggs)))
717
722
.Seal ()
718
723
.Seal ()
719
724
.Build ();
720
725
} else {
721
726
aggWideFlow = Ctx.Builder (Node->Pos ())
722
- .Callable (" BlockCombineAll" )
723
- .Add (0 , blocks)
724
- .Callable (1 , " Void" )
727
+ .Callable (" ToFlow" )
728
+ .Callable (0 , " BlockCombineAll" )
729
+ .Callable (0 , " FromFlow" )
730
+ .Add (0 , blocks)
731
+ .Seal ()
732
+ .Callable (1 , " Void" )
733
+ .Seal ()
734
+ .Add (2 , Ctx.NewList (Node->Pos (), std::move (aggs)))
725
735
.Seal ()
726
- .Add (2 , Ctx.NewList (Node->Pos (), std::move (aggs)))
727
736
.Seal ()
728
737
.Build ();
729
738
}
@@ -2891,23 +2900,31 @@ TExprNode::TPtr TAggregateExpander::TryGenerateBlockMergeFinalizeHashed() {
2891
2900
TExprNode::TPtr aggBlocks;
2892
2901
if (!isMany) {
2893
2902
aggBlocks = Ctx.Builder (Node->Pos ())
2894
- .Callable (" BlockMergeFinalizeHashed" )
2895
- .Add (0 , blocks)
2896
- .Add (1 , Ctx.NewList (Node->Pos (), std::move (keyIdxs)))
2897
- .Add (2 , Ctx.NewList (Node->Pos (), std::move (aggs)))
2903
+ .Callable (" ToFlow" )
2904
+ .Callable (0 , " BlockMergeFinalizeHashed" )
2905
+ .Callable (0 , " FromFlow" )
2906
+ .Add (0 , blocks)
2907
+ .Seal ()
2908
+ .Add (1 , Ctx.NewList (Node->Pos (), std::move (keyIdxs)))
2909
+ .Add (2 , Ctx.NewList (Node->Pos (), std::move (aggs)))
2910
+ .Seal ()
2898
2911
.Seal ()
2899
2912
.Build ();
2900
2913
} else {
2901
2914
auto manyStreamsSetting = GetSetting (*Node->Child (3 ), " many_streams" );
2902
2915
YQL_ENSURE (manyStreamsSetting, " Missing many_streams setting" );
2903
2916
2904
2917
aggBlocks = Ctx.Builder (Node->Pos ())
2905
- .Callable (" BlockMergeManyFinalizeHashed" )
2906
- .Add (0 , blocks)
2907
- .Add (1 , Ctx.NewList (Node->Pos (), std::move (keyIdxs)))
2908
- .Add (2 , Ctx.NewList (Node->Pos (), std::move (aggs)))
2909
- .Atom (3 , ToString (streamIdxColumn))
2910
- .Add (4 , manyStreamsSetting->TailPtr ())
2918
+ .Callable (" ToFlow" )
2919
+ .Callable (0 , " BlockMergeManyFinalizeHashed" )
2920
+ .Callable (0 , " FromFlow" )
2921
+ .Add (0 , blocks)
2922
+ .Seal ()
2923
+ .Add (1 , Ctx.NewList (Node->Pos (), std::move (keyIdxs)))
2924
+ .Add (2 , Ctx.NewList (Node->Pos (), std::move (aggs)))
2925
+ .Atom (3 , ToString (streamIdxColumn))
2926
+ .Add (4 , manyStreamsSetting->TailPtr ())
2927
+ .Seal ()
2911
2928
.Seal ()
2912
2929
.Build ();
2913
2930
}
0 commit comments