Any predicate can be classified as an onInput predicate as long as the SQL-MapReduce function can determine that applying the predicate on the input yields the same results as applying the predicate on the output (that is, it is semantically correct to push the predicate down).
One rule of thumb to determine whether a predicate can be applied onInput is to examine all the columns in the predicate and to check if those columns are 'passthrough' columns (that is, the column values are not affected by the function). The knowledge of how the function processes the input columns to compute the output columns is necessary to determine whether the function can be pushed to the inputs.