The failures were due to two subtle bugs in the branch. In Buffer#split there was a conditional statement missing a condition needed to correctly set a flag. The incorrectly set flag caused FastIndex#insertKeyBlock to misbehave.
But, the other bug is that the FastIndex should not have been recomputed in Buffer#putValue. The previous version of this branch did so by using a call to getFastIndex() rather than simply using the field value.
Finally, these issues were discovered in IndexHistogramIT because that test inserts both null- and String-valued key segments. This behavior leads to a sequence of keys having different data types and therefore differeing in their first byte. We need to add unit and stress tests to cover this; at the moment all Persistit tests have keys with the same data type in their first key segment.
The failures were due to two subtle bugs in the branch. In Buffer#split there was a conditional statement missing a condition needed to correctly set a flag. The incorrectly set flag caused FastIndex# insertKeyBlock to misbehave.
But, the other bug is that the FastIndex should not have been recomputed in Buffer#putValue. The previous version of this branch did so by using a call to getFastIndex() rather than simply using the field value.
Finally, these issues were discovered in IndexHistogramIT because that test inserts both null- and String-valued key segments. This behavior leads to a sequence of keys having different data types and therefore differeing in their first byte. We need to add unit and stress tests to cover this; at the moment all Persistit tests have keys with the same data type in their first key segment.