3f7323cbb regenerates its Param for each SubPlan by traversing the targetlist. But ignore one point: initplan is not in targetlist. This will result in a failed assertion, or an error like "unexpected PARAM_MULTIEXPR ID: 131074"
Since initplan SubPlans do not have args lists, I think it's OK for them to share output parameters. So maybe we do not need to do the SS_make_multiexprs_unique trick for initplan SubPlans?
If I consider it correctly, can we fix the initplan SubPlan issue simply as below?
+ /* + * It's OK for initplan SubPlans to share output parameters, so we do not + * need to generate new Param nodes for them. + */ + if (new_multiexpr_params == NIL) + return; + /* * Now we must find the Param nodes that reference the MULTIEXPR outputs * and update their sublink IDs so they'll reference the new outputs.