private static QueryIterator joinWorkerN(QueryIterator left, Table right, JoinType joinType, ExprList conditions, ExecutionContext execCxt) {
// We could hash the right except we don't know much about columns.
List<Binding> out = new ArrayList<Binding>() ;
for ( ; left.hasNext() ; ) {
Binding bindingLeft = left.next() ;
int count = 0 ;
for (Iterator<Binding> iter = right.rows() ; iter.hasNext();) {
Binding bindingRight = iter.next() ;
Binding r = Algebra.merge(bindingLeft, bindingRight) ;
if ( r == null )
continue ;
// This does the conditional part. Theta-join.
if ( conditions == null || conditions.isSatisfied(r, execCxt) ) {