return RELATION_FACTORY;
}
public QueryEngine createQueryEngine() {
Project project = new ProjectImpl(TUPLE_FACTORY, RELATION_FACTORY);
TupleEngine joinTupleEngine = new NaturalJoinEngine(TUPLE_FACTORY, RELATION_HELPER);
SortMergeJoin sortMergeJoin = new SortMergeJoinImpl(joinTupleEngine, NODE_COMPARATOR, RELATION_FACTORY,
RELATION_HELPER, TUPLE_FACTORY);
MultiSortMergeJoinImpl multiSortMergeJoin = new MultiSortMergeJoinImpl(sortMergeJoin, NODE_COMPARATOR);
TupleEngine optJoinTupleEngine = new SortMergeNaturalJoinEngine(RELATION_HELPER, joinTupleEngine,
multiSortMergeJoin);
TupleEngine unionTupleEngine = new OuterUnionEngine(RELATION_HELPER);
NadicJoin join = new NadicJoinImpl(RELATION_PROCESSOR, optJoinTupleEngine);
BooleanEvaluator evaluator = new BooleanEvaluatorImpl(NODE_COMPARATOR);
Restrict restrict = new RestrictImpl(RELATION_FACTORY, TUPLE_COMPARATOR, evaluator);
Union union = new OuterUnionImpl(RELATION_PROCESSOR, unionTupleEngine);
DyadicJoin leftOuterJoin = getLeftOuterJoin(unionTupleEngine, join);