@Override
    public boolean matches(RelOptRuleCall call) {
      LOGGER.debug("MyUpperJoinFilterFilter.matches has been called");

      final HiveFilter filter = call.rel(0);
      final HiveJoin join = call.rel(1);
      final HiveJdbcConverter conv = call.rel(2);

      RexNode joinCond = join.getCondition();
      SqlDialect dialect = conv.getJdbcDialect();

      return canSplitFilter(filter.getCondition(), dialect)
        && JDBCRexCallValidator.isValidJdbcOperation(joinCond, dialect);
    }
JDBCSplitFilterAboveJoinRule split splitter above a HiveJoin operator, so we could push it into the HiveJoin.
ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/jdbc/JDBCAbstractSplitFilterRule.java