encode the data type into byte array.
encode the data type into byte array. Note that it is a naive implementation with the data type byte appending to the head of the serialized byte array.
the byte array with the first byte indicating the data type.
The function performing real filtering operations.
The function performing real filtering operations. The format of filterBytes depends on the implementation of the BytesEncoder.
true: the record satisfies the predicates false: the record does not satisfy the predicates.
Evaluate the java primitive type and return the BoundRanges.
Evaluate the java primitive type and return the BoundRanges. For one value, it may have multiple output ranges because of the inconsistency of order between java primitive type and its byte array order.
For short, integer, and long, the order of number is consistent with byte array order if two number has the same sign bit. But the negative number is larger than positive number in byte array.
For double and float, the order of positive number is consistent with its byte array order. But the order of negative number is the reverse order of byte array. Please refer to IEEE-754 and https://en.wikipedia.org/wiki/Single-precision_floating-point_format
This is the naive non-order preserving encoder/decoder. Due to the inconsistency of the order between java primitive types and their bytearray. The data type has to be passed in so that the filter can work correctly, which is done by wrapping the type into the first byte of the serialized array.