private static Set<TableScanOperator> findTableScanOperators(Operator<?> current,
      Set<TableScanOperator> found) {
    if (current instanceof TableScanOperator) {
      found.add((TableScanOperator) current);
      return found;
    }
    if (current instanceof ReduceSinkOperator || current.getNumParent() == 0) {
      return found;
    }
    for (Operator<?> parent : current.getParentOperators()) {
      findTableScanOperators(parent, found);
    }
    return found;
  }
Search the query plan tree from startPoint to the bottom. If there is no ReduceSinkOperator
between startPoint and the corresponding TableScanOperator, return the corresponding
TableScanOperator. Otherwise, return null.
@param startPoint the operator which the search will start at
@return the TableScanOperator traced from startPoint. Null, if the search encounters any
ReduceSinkOperator.
ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationUtilities.java