@Override
  protected void generateFullOuterSmallTableNoMatches(byte smallTablePos,
      MapJoinTableContainer substituteSmallTable) throws HiveException {

    /*
     * For dynamic partition hash join, both the Big Table and Small Table are partitioned (sent)
     * to the Reducer using the key hash code.  So, we can generate the non-match Small Table
     * results locally.
     *
     * Scan the Small Table for keys that didn't match and generate the non-matchs into the
     * overflowBatch.
     */

    /*
     * If there were no matched keys sent, we need to do our common initialization.
     */
    if (needCommonSetup) {

      // Our one time process method initialization.
      commonSetup();

      needCommonSetup = false;
    }

    if (needHashTableSetup) {

      // Setup our hash table specialization.  It will be the first time the process
      // method is called, or after a Hybrid Grace reload.

      hashTableSetup();

      needHashTableSetup = false;
    }

    /*
     * To support fancy NULL repeating columns, let's flush the overflowBatch if it has anything.
     */
    if (overflowBatch.size > 0) {
      forwardOverflow();
    }
    markBigTableColumnsAsNullRepeating();

    switch (hashTableKeyType) {
    case BOOLEAN:
    case BYTE:
    case SHORT:
    case INT:
    case LONG:
      generateFullOuterLongKeySmallTableNoMatches();
      break;
    case STRING:
      generateFullOuterStringKeySmallTableNoMatches();
      break;
    case MULTI_KEY:
      generateFullOuterMultiKeySmallTableNoMatches();
      break;
    default:
      throw new RuntimeException("Unexpected hash table key type " + hashTableKeyType);
    }
  }
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