public static ExprNodeColumnDesc findTableOriginColExpr(ExprNodeColumnDesc colName, Operator<?> start, Operator<?> end)
      throws SemanticException {
    ExprNodeDesc res = ExprNodeDescUtils.backtrack(colName, start, end, false, true);
    return (res != null) ? ExprNodeDescUtils.getColumnExpr(res) : null;
  }
Given start, end operators and a colName, look for the original TS colExpr
that it originates from. This method checks column Expr mappings (aliases)
from the start operator and its parents up to the end operator.
It then returns the unwrapped Expr found within a ExprNodeGenericFuncDesc (if any).
@param colName colName to backtrack
@param start start backtracking from this Op
@param end end backtracking at this Op
@return the original column name or null if not found
ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java