The v1 patch attached is enough to fix the immediate issue, but there's another thing not to like, which is that we're also discarding the costs associated with the initplans. That's strictly cosmetic given that all the planning decisions are already made, but it still seems potentially annoying if you're trying to understand EXPLAIN output. So I'm inclined to instead do something like v2 attached, which deals with that as well. (On the other hand, we aren't bothering to fix up costs when we move initplans around in materialize_finished_plan or standard_planner ... so maybe that should be left for a patch that fixes those things too.)
+1 to the v2 patch.
* Should we likewise set the parallel_safe flag for topmost plan in SS_attach_initplans?
* In standard_planner around line 443, we move any initPlans from top_plan to the new added Gather node. But since we know that the top_plan is parallel_safe here, shouldn't it have no initPlans?