diff --git a/src/backend/executor/execExpr.c b/src/backend/executor/execExpr.c index 885da18306..6dea65f2c0 100644 --- a/src/backend/executor/execExpr.c +++ b/src/backend/executor/execExpr.c @@ -2950,8 +2950,10 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase, scratch.resnull = &trans_fcinfo->argnull[argno + 1]; ExprEvalPushStep(state, &scratch); - adjust_bailout = lappend_int(adjust_bailout, - state->steps_len - 1); + /* don't add an adjustment unless the function is strict */ + if (pertrans->deserialfn.fn_strict) + adjust_bailout = lappend_int(adjust_bailout, + state->steps_len - 1); /* restore normal settings of scratch fields */ scratch.resvalue = &state->resvalue;