1. we should check output set, since we will remove top project and result output size will diff with its child output size if there are dup slot in result list 2. should not return null, instead we should return rewritten plan itself, because we will use return result in many place and do not check null at all