The join node need project operation to remove unnecessary columns from the output tuples. For SetOperationNode output tuple and input tuple is consistent and do not need project, but the children of SetOperationNode may be join nodes, so the children of the SetOperationNode need to do the project operation.