private Map<String, Operator<? extends OperatorDesc>> getTopOps(
      Operator<? extends OperatorDesc> op) {
      // Must be deterministic order map for consistent q-test output across
      // Java versions
      Map<String, Operator<? extends OperatorDesc>> topOps =
        new LinkedHashMap<String, Operator<? extends OperatorDesc>>();
      if (op.getParentOperators() == null || op.getParentOperators().size() == 0) {
        topOps.put(((TableScanOperator)op).getConf().getAlias(), op);
      } else {
        for (Operator<? extends OperatorDesc> parent : op.getParentOperators()) {
          if (parent != null) {
            topOps.putAll(getTopOps(parent));
          }
        }
      }
      return topOps;
    }
Converts the skewedValue available as a string in the metadata to the appropriate object
by using the type of the column from the join key.
@param skewedValue
@param keyCol
@return an expression node descriptor of the appropriate constant
ql/src/java/org/apache/hadoop/hive/ql/optimizer/SkewJoinOptimizer.java