Description
I noticed HashJoinMoreIT.testBug2961 always failed after PHOENIX-5262, and the error stack is different from PHOENIX-5290:
java.lang.AssertionError at org.apache.phoenix.end2end.join.HashJoinMoreIT.testBug2961(HashJoinMoreIT.java:908)
I think this problem is caused by following line 453 modified in PHOENIX-5262:
445 if ( !isFixedWidth && ( sepByte == QueryConstants.DESC_SEPARATOR_BYTE 446 || ( !exclusiveUpper 447 && (fieldIndex < schema.getMaxFields() || inclusiveUpper || exclusiveLower) ) ) ) { 448 key[offset++] = sepByte; 449 // Set lastInclusiveUpperSingleKey back to false if this is the last pk column 450 // as we don't want to increment the null byte in this case 451 // To test if this is the last pk column we need to consider the span of this slot 452 // and the field index to see if this slot considers the last column 453 lastInclusiveUpperSingleKey &= (fieldIndex + slotSpan[i]) < schema.getMaxFields()-1; 454 }
It did not consider the case that the last field is variable length and also DESC, when the last field is variable length and also DESC, the trailiing 0xFF is not removed when stored in HBASE, so for such case, we should not set lastInclusiveUpperSingleKey back to false.
Attachments
Attachments
Issue Links
- is caused by
-
PHOENIX-5262 Wrong Result on Salted table with some Variable Length PKs
- Closed