@Override
  public boolean isSame(OperatorDesc other) {
    if (getClass().getName().equals(other.getClass().getName())) {
      JoinDesc otherDesc = (JoinDesc) other;
      return Objects.equals(getKeysString(), otherDesc.getKeysString()) &&
          Objects.equals(getFiltersStringMap(), otherDesc.getFiltersStringMap()) &&
          Objects.equals(getOutputColumnNames(), otherDesc.getOutputColumnNames()) &&
          Objects.equals(getCondsList(), otherDesc.getCondsList()) &&
          Objects.equals(getResidualFilterExprsString(), otherDesc.getResidualFilterExprsString()) &&
          getHandleSkewJoin() == otherDesc.getHandleSkewJoin() &&
          getFkJoinTableIndex() == otherDesc.getFkJoinTableIndex() &&
          isNonFkSideIsFiltered() == otherDesc.isNonFkSideIsFiltered() &&
          Objects.equals(getNullSafeString(), otherDesc.getNullSafeString());
    }
    return false;
  }
@param skewKeysValuesTables
         set the table desc for storing skew keys and their corresponding
         value;
ql/src/java/org/apache/hadoop/hive/ql/plan/JoinDesc.java