@Override
public PlanNode optimize(PlanNode plan, Session session, Map<Symbol, Type> types, SymbolAllocator symbolAllocator, PlanNodeIdAllocator idAllocator)
{
requireNonNull(plan, "plan is null");
requireNonNull(session, "session is null");
requireNonNull(types, "types is null");
requireNonNull(symbolAllocator, "symbolAllocator is null");
requireNonNull(idAllocator, "idAllocator is null");
if (!SystemSessionProperties.isPushTableWriteThroughUnion(session)) {
return plan;
}
return SimplePlanRewriter.rewriteWith(new Rewriter(idAllocator, symbolAllocator), plan);
}