{
fixedDriverStrat = new SortMergeJoinDescriptor(this.keys1, this.keys2);
} else if (PactCompiler.HINT_LOCAL_STRATEGY_HASH_BUILD_FIRST.equals(localStrategy)) {
fixedDriverStrat = new HashJoinBuildFirstProperties(this.keys1, this.keys2);
} else if (PactCompiler.HINT_LOCAL_STRATEGY_HASH_BUILD_SECOND.equals(localStrategy)) {
fixedDriverStrat = new HashJoinBuildSecondProperties(this.keys1, this.keys2);
} else {
throw new CompilerException("Invalid local strategy hint for match contract: " + localStrategy);
}
ArrayList<OperatorDescriptorDual> list = new ArrayList<OperatorDescriptorDual>();
list.add(fixedDriverStrat);
return list;
} else {
ArrayList<OperatorDescriptorDual> list = new ArrayList<OperatorDescriptorDual>();
list.add(new SortMergeJoinDescriptor(this.keys1, this.keys2));
list.add(new HashJoinBuildFirstProperties(this.keys1, this.keys2));
list.add(new HashJoinBuildSecondProperties(this.keys1, this.keys2));
return list;
}
}