private static List<ExprNodeDesc> mapColumns(List<ExprNodeDesc> columns, Map<String, ExprNodeDesc>
          colExprMap) {

    if (colExprMap == null) {
      return new ArrayList<>(0);
    }
    final List<ExprNodeDesc> mappedColumns = new ArrayList<>();
    for (ExprNodeDesc column : columns) {
      final String columnName = column.getExprString();
      if (colExprMap.containsKey(columnName)) {
        mappedColumns.add(colExprMap.get(columnName));
      }
    }
    return mappedColumns;
  }
Push through Project if expression(s) in TopNKey can be mapped to expression(s) based on Project input.

@param topNKey TopNKey operator to push
@throws SemanticException when removeChildAndAdoptItsChildren was not successful in the method pushdown
ql/src/java/org/apache/hadoop/hive/ql/optimizer/topnkey/TopNKeyPushdownProcessor.java