protected void finishLeftSemi(VectorizedRowBatch batch,
      int allMatchCount, int spillCount,
      VectorMapJoinHashTableResult[] hashTableResults) throws HiveException, IOException {

    // Get rid of spills before we start modifying the batch.
    if (spillCount > 0) {
      spillHashMapBatch(batch, hashTableResults,
          spills, spillHashMapResultIndices, spillCount);
    }

    /*
     * Optimize by running value expressions only over the matched rows.
     */
    if (allMatchCount > 0 && bigTableValueExpressions != null) {
      performValueExpressions(batch, allMatches, allMatchCount);
    }

    int numSel = generateHashSetResults(batch, allMatches, allMatchCount);
    batch.size = numSel;
    batch.selectedInUse = true;
  }
Generate the left semi join output results for one vectorized row batch.

@param batch
         The big table batch with any matching and any non matching rows both as
         selected in use.
@param allMatchCount
         Number of matches in allMatches.
@param spillCount
         Number of spills in spills.
@param hashTableResults
         The array of all hash table results for the batch. We need the
         VectorMapJoinHashTableResult for the spill information.
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiGenerateResultOperator.java