protected void generateFullOuterStringKeySmallTableNoMatches() throws HiveException {

    final BytesColumnVector singleSmallTableKeyOutputColumnVector;
    if (allSmallTableKeyColumnIncluded[0]) {
      singleSmallTableKeyOutputColumnVector =
        (BytesColumnVector) overflowBatch.cols[allSmallTableKeyColumnNums[0]];
    } else {
      singleSmallTableKeyOutputColumnVector = null;
    }

    VectorMapJoinBytesHashMap hashMap = (VectorMapJoinBytesHashMap) vectorMapJoinHashTable;

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

      final byte[] keyBytes;
      final int keyOffset;
      final int keyLength;
      boolean isKeyNull = !nonMatchedIterator.readNonMatchedBytesKey();
      if (!isKeyNull) {
        keyBytes = nonMatchedIterator.getNonMatchedBytes();
        keyOffset = nonMatchedIterator.getNonMatchedBytesOffset();
        keyLength = nonMatchedIterator.getNonMatchedBytesLength();
      } else {
        keyBytes = null;
        keyOffset = 0;
        keyLength = 0;
      }

      VectorMapJoinHashMapResult hashMapResult = nonMatchedIterator.getNonMatchedHashMapResult();

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

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

        if (singleSmallTableKeyOutputColumnVector != null) {
          if (isKeyNull) {
            singleSmallTableKeyOutputColumnVector.isNull[overflowBatch.size] = true;
            singleSmallTableKeyOutputColumnVector.noNulls = false;
          } else {
            singleSmallTableKeyOutputColumnVector.setVal(
                overflowBatch.size,
                keyBytes, keyOffset, keyLength);
            singleSmallTableKeyOutputColumnVector.isNull[overflowBatch.size] = false;
          }
        }

        if (smallTableValueVectorDeserializeRow != null) {

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

        overflowBatch.size++;
        if (overflowBatch.size == overflowBatch.DEFAULT_SIZE) {
          forwardOverflow();
          markBigTableColumnsAsNullRepeating();
        }
        byteSegmentRef = hashMapResult.next();
      }
    }
  }
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