Looks good! Some thoughts: The way I saw the filter working was as a compliment to the regular checks that are row/(family)/qualifier/TTL. Since we are parsing the KeyValue in the matcher I thought that we would do the filter there too, so that after every regular check we would have the filter check, so we would have a
rowFilter(byte[] buffer, int offset, int length), familyFilter(byte[] buffer, int offset, int length), qualifierFilter(byte[] buffer, int offset, int length) and valueFilter(byte[] buffer, int offset, int length), to make us early out as soon as possible and don't have to reparse the KeyValue, since the filter is going to add a cost by just being there as it is. Erik
