Subtle difference for the ptr.getLength() == 0 case. Return true in this case as an indication that the expression was able to be evaluated, but the answer was null (as opposed to returning false which means that you weren't able to evaluate the result because you don't have enough information). Often both cases end up evaluating to null, but during filter evaluation on the server side, where we're operating on partial data, it'll cause the expression not to continue to be evaluated as we see more key/values for a row.