protected void generateFullOuterMultiKeySmallTableNoMatches() throws HiveException {

    VectorMapJoinBytesHashMap hashMap = (VectorMapJoinBytesHashMap) vectorMapJoinHashTable;

    VectorMapJoinNonMatchedIterator nonMatchedIterator =
        hashMap.createNonMatchedIterator(matchTracker);
    nonMatchedIterator.init();
    while (nonMatchedIterator.findNextNonMatched()) {

      nonMatchedIterator.readNonMatchedBytesKey();
      byte[] keyBytes = nonMatchedIterator.getNonMatchedBytes();
      final int keyOffset = nonMatchedIterator.getNonMatchedBytesOffset();
      final int keyLength = nonMatchedIterator.getNonMatchedBytesLength();

      VectorMapJoinHashMapResult hashMapResult = nonMatchedIterator.getNonMatchedHashMapResult();

      ByteSegmentRef byteSegmentRef = hashMapResult.first();
      while (byteSegmentRef != null) {

        // NOTE: Big Table result columns were marked repeating NULL already.

        if (smallTableKeyOuterVectorDeserializeRow != null) {
          doSmallTableKeyDeserializeRow(overflowBatch, overflowBatch.size,
              keyBytes, keyOffset, keyLength);
        }

        if (smallTableValueVectorDeserializeRow != null) {

          doSmallTableValueDeserializeRow(overflowBatch, overflowBatch.size,
              byteSegmentRef, hashMapResult);
        }

        overflowBatch.size++;
        if (overflowBatch.size == overflowBatch.DEFAULT_SIZE) {
          forwardOverflow();
          markBigTableColumnsAsNullRepeating();
        }
        byteSegmentRef = hashMapResult.next();
      }
    }

    // NOTE: We don't have to deal with FULL OUTER All-NULL key values like we do for single-column
    // LONG and STRING because we do store them in the hash map...
  }
Generate the non-match outer join output results for the whole repeating vectorized
row batch.

Each row will get nulls for all small table values.

@param batch
         The big table batch.
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterGenerateResultOperator.java