Description
The rule `CoalesceShufflePartitions` can only coalesce paritition if
- leaf node is ShuffleQueryStage
- all shuffle have same partition number
With `Union`, it might break the assumption. Let's say we have such plan
Union HashAggregate ShuffleQueryStage FileScan
`CoalesceShufflePartitions` can not optimize it and the result partition would be `shuffle partition + FileScan partition` which can be quite lagre.
It's better to support partial optimize with `Union`.