int count = joinInfo.getJoinIds().length;
boolean cont = true;
for (int i = 0; i < count; i++) {
if (!(joinInfo.earlyEvaluation()[i]))
continue;
ImmutableBytesPtr key = TupleUtil.getConcatenatedValue(tuple, joinInfo.getJoinExpressions()[i]);
tempTuples[i] = hashCaches[i].get(key);
JoinType type = joinInfo.getJoinTypes()[i];
if (type == JoinType.Inner && (tempTuples[i] == null || tempTuples[i].isEmpty())) {
cont = false;
break;
}
}
if (cont) {
KeyValueSchema schema = joinInfo.getJoinedSchema();
resultQueue.offer(tuple);
for (int i = 0; i < count; i++) {
boolean earlyEvaluation = joinInfo.earlyEvaluation()[i];
if (earlyEvaluation &&
(tempTuples[i] == null || tempTuples[i].isEmpty()))
continue;
int j = resultQueue.size();
while (j-- > 0) {
ProjectedValueTuple lhs = resultQueue.poll();
if (!earlyEvaluation) {
ImmutableBytesPtr key = TupleUtil.getConcatenatedValue(lhs, joinInfo.getJoinExpressions()[i]);
tempTuples[i] = hashCaches[i].get(key);
if (tempTuples[i] == null || tempTuples[i].isEmpty()) {
if (joinInfo.getJoinTypes()[i] != JoinType.Inner) {
resultQueue.offer(lhs);
}