DyadicJoin leftOuterJoin = getLeftOuterJoin(unionTupleEngine, join);
return new OptimizingQueryEngineImpl(project, join, restrict, union, leftOuterJoin);
}
private DyadicJoin getLeftOuterJoin(TupleEngine unionTupleEngine, NadicJoin join) {
SubsumptionEngine subsumptionEngine = new SubsumptionEngine(TUPLE_FACTORY, RELATION_HELPER);
Union minUnion = new MinimumUnionImpl(RELATION_PROCESSOR, unionTupleEngine, subsumptionEngine);
return new MinimumUnionLeftOuterJoinImpl(join, minUnion);
}