private ITupleIterator computeSimpleCartesianProduct( ITupleIterator leftTuples, ITupleIterator rightTuples) { List<Tuple> result = new ArrayList<Tuple>(); while (leftTuples.hasNext()) { Tuple leftTuple = leftTuples.next(); if (logger.isDebugEnabled()) logger.debug("Left tuple in cartesian product: " + leftTuple); while (rightTuples.hasNext()) { Tuple rightTuple = rightTuples.next(); if (logger.isDebugEnabled()) logger.debug("Right tuple in cartesian product: " + rightTuple); Tuple joinedTuple = joinTuples(leftTuple, rightTuple); result.add(joinedTuple); } rightTuples.reset(); } leftTuples.reset(); return new ListTupleIterator(result); }