Add guards for unsupported subqueries join plan, optimize the possible subqueriese

Yes. Constructor can get a Union.