private void removePossibleSemiJoin(
      @Nullable Map<Integer, LogicalJoin> possibleDimensions,
      Integer factIdx,
      Integer dimIdx) {
    // dimension table may not have a corresponding semijoin if it
    // wasn't indexable
    if (possibleDimensions == null) {
      return;
    }
    possibleDimensions.remove(dimIdx);
    if (possibleDimensions.isEmpty()) {
      possibleSemiJoins.remove(factIdx);
    } else {
      possibleSemiJoins.put(factIdx, possibleDimensions);
    }
  }
Removes a dimension table from a fact table's list of possible semi-joins.

@param possibleDimensions possible dimension tables associated with the
fact table
@param factIdx index corresponding to fact table
@param dimIdx index corresponding to dimension table
ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveLoptSemiJoinOptimizer.java