@@ -64,7 +64,8 @@ private AstStage RenderProjectStage(
64
64
out IBsonSerializer < TOutput > outputSerializer )
65
65
{
66
66
var partiallyEvaluatedOutput = ( Expression < Func < TGrouping , TOutput > > ) PartialEvaluator . EvaluatePartially ( _output ) ;
67
- var context = TranslationContext . Create ( translationOptions ) ;
67
+ var parameter = partiallyEvaluatedOutput . Parameters . Single ( ) ;
68
+ var context = TranslationContext . Create ( partiallyEvaluatedOutput , initialNode : parameter , initialSerializer : inputSerializer , translationOptions : translationOptions ) ;
68
69
var outputTranslation = ExpressionToAggregationExpressionTranslator . TranslateLambdaBody ( context , partiallyEvaluatedOutput , inputSerializer , asRoot : true ) ;
69
70
var ( projectStage , projectSerializer ) = ProjectionHelper . CreateProjectStage ( outputTranslation ) ;
70
71
outputSerializer = ( IBsonSerializer < TOutput > ) projectSerializer ;
@@ -106,7 +107,8 @@ protected override AstStage RenderGroupingStage(
106
107
out IBsonSerializer < IGrouping < TValue , TInput > > groupingOutputSerializer )
107
108
{
108
109
var partiallyEvaluatedGroupBy = ( Expression < Func < TInput , TValue > > ) PartialEvaluator . EvaluatePartially ( _groupBy ) ;
109
- var context = TranslationContext . Create ( translationOptions ) ;
110
+ var parameter = partiallyEvaluatedGroupBy . Parameters . Single ( ) ;
111
+ var context = TranslationContext . Create ( partiallyEvaluatedGroupBy , initialNode : parameter , initialSerializer : inputSerializer , translationOptions : translationOptions ) ;
110
112
var groupByTranslation = ExpressionToAggregationExpressionTranslator . TranslateLambdaBody ( context , partiallyEvaluatedGroupBy , inputSerializer , asRoot : true ) ;
111
113
112
114
var valueSerializer = ( IBsonSerializer < TValue > ) groupByTranslation . Serializer ;
@@ -150,7 +152,8 @@ protected override AstStage RenderGroupingStage(
150
152
out IBsonSerializer < IGrouping < AggregateBucketAutoResultId < TValue > , TInput > > groupingOutputSerializer )
151
153
{
152
154
var partiallyEvaluatedGroupBy = ( Expression < Func < TInput , TValue > > ) PartialEvaluator . EvaluatePartially ( _groupBy ) ;
153
- var context = TranslationContext . Create ( translationOptions ) ;
155
+ var parameter = partiallyEvaluatedGroupBy . Parameters . Single ( ) ;
156
+ var context = TranslationContext . Create ( partiallyEvaluatedGroupBy , initialNode : parameter , initialSerializer : inputSerializer , translationOptions : translationOptions ) ;
154
157
var groupByTranslation = ExpressionToAggregationExpressionTranslator . TranslateLambdaBody ( context , partiallyEvaluatedGroupBy , inputSerializer , asRoot : true ) ;
155
158
156
159
var valueSerializer = ( IBsonSerializer < TValue > ) groupByTranslation . Serializer ;
@@ -188,7 +191,8 @@ protected override AstStage RenderGroupingStage(
188
191
out IBsonSerializer < IGrouping < TValue , TInput > > groupingOutputSerializer )
189
192
{
190
193
var partiallyEvaluatedGroupBy = ( Expression < Func < TInput , TValue > > ) PartialEvaluator . EvaluatePartially ( _groupBy ) ;
191
- var context = TranslationContext . Create ( translationOptions ) ;
194
+ var parameter = partiallyEvaluatedGroupBy . Parameters . Single ( ) ;
195
+ var context = TranslationContext . Create ( partiallyEvaluatedGroupBy , initialNode : parameter , initialSerializer : inputSerializer , translationOptions : translationOptions ) ;
192
196
var groupByTranslation = ExpressionToAggregationExpressionTranslator . TranslateLambdaBody ( context , partiallyEvaluatedGroupBy , inputSerializer , asRoot : true ) ;
193
197
var pushElements = AstExpression . AccumulatorField ( "_elements" , AstUnaryAccumulatorOperator . Push , AstExpression . RootVar ) ;
194
198
var groupBySerializer = ( IBsonSerializer < TValue > ) groupByTranslation . Serializer ;
0 commit comments