protected void addPruningPred(Map<TableScanOperator, Map<String, ExprNodeDesc>> opToPrunner,
        TableScanOperator top, ExprNodeDesc new_pruner_pred, Partition part)
        throws SemanticException {
      Map<String, ExprNodeDesc> oldPartToPruner = opToPrunner.get(top);
      Map<String, ExprNodeDesc> partToPruner = null;
      ExprNodeDesc pruner_pred = null;
      if (oldPartToPruner == null) {
        pruner_pred = new_pruner_pred;
        // create new mapping
        partToPruner = new HashMap<String, ExprNodeDesc>();
      } else {
        partToPruner = oldPartToPruner;
        ExprNodeDesc old_pruner_pred = oldPartToPruner.get(part.getName());
        if (old_pruner_pred != null) {
          // or the old_pruner_pred and the new_ppr_pred
          pruner_pred = ExprNodeTypeCheck.getExprNodeDefaultExprProcessor().getFuncExprNodeDesc(
              "OR", old_pruner_pred, new_pruner_pred);
        } else {
          pruner_pred = new_pruner_pred;
        }
      }

      // Put the mapping from part to pruner_pred
      partToPruner.put(part.getName(), pruner_pred);

      // Put the mapping from table scan operator to part-pruner map
      opToPrunner.put(top, partToPruner);

      return;
    }
Add pruning predicate.

@param opToPrunner
@param top
@param new_pruner_pred
@param part
@throws UDFArgumentException
ql/src/java/org/apache/hadoop/hive/ql/optimizer/PrunerOperatorFactory.java