private static IndexPredicateAnalyzer newAnalyzer(Schema schema) {
    IndexPredicateAnalyzer analyzer = new IndexPredicateAnalyzer();

    // Register comparison operators which can be satisfied by Kudu predicates.
    // Note: We are unable to decompose GenericUDFOPNull, GenericUDFOPNotNull, GenericUDFIn
    // predicates even though they are pushed to Kudu because the IndexPredicateAnalyzer only
    // supports GenericUDFBaseCompare UDFs.
    // We can also handle some NOT predicates but the IndexPredicateAnalyzer also does
    // not support this.
    analyzer.addComparisonOp(GenericUDFOPEqual.class.getName());
    analyzer.addComparisonOp(GenericUDFOPEqualNS.class.getName());
    analyzer.addComparisonOp(GenericUDFOPGreaterThan.class.getName());
    analyzer.addComparisonOp(GenericUDFOPEqualOrGreaterThan.class.getName());
    analyzer.addComparisonOp(GenericUDFOPLessThan.class.getName());
    analyzer.addComparisonOp(GenericUDFOPEqualOrLessThan.class.getName());

    // Set the column names that can be satisfied.
    for (ColumnSchema col : schema.getColumns()) {
      // Skip binary columns because binary predicates are not supported. (HIVE-11370)
      if (col.getType() != Type.BINARY) {
        analyzer.allowColumnName(col.getName());
      }
    }

    return analyzer;
  }
Analyzes the predicates and return the portion of it which
cannot be evaluated by Kudu during table access.

@param predicateExpr predicate to be decomposed
@param schema the schema of the Kudu table
@return decomposed form of predicate, or null if no pushdown is possible at all
kudu-handler/src/java/org/apache/hadoop/hive/kudu/KuduPredicateHandler.java