[ https://issues.apache.org/jira/browse/PHOENIX-5307?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
chenglei updated PHOENIX-5307: ------------------------------ Description: I noticed {{HashJoinMoreIT.testBug2961}} always failed after PHOENIX-5262, which is different from this JIRA: {code} java.lang.AssertionError at org.apache.phoenix.end2end.join.HashJoinMoreIT.testBug2961(HashJoinMoreIT.java:908) {code} I think this problem is caused by following line 453 modified in PHOENIX-5262: {code} 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 } {code} It did not consider the case that last field is variable length and is DESC, when the last field is variable length and is DESC, the trailiing 0xFF is not removed, so for such field, we should not set lastInclusiveUpperSingleKey back to false. > Fix HashJoinMoreIT.testBug2961 failed after PHOENIX-5262 > -------------------------------------------------------- > > Key: PHOENIX-5307 > URL: https://issues.apache.org/jira/browse/PHOENIX-5307 > Project: Phoenix > Issue Type: Bug > Affects Versions: 4.15.0 > Reporter: chenglei > Priority: Major > > I noticed {{HashJoinMoreIT.testBug2961}} always failed after PHOENIX-5262, > which is different from this JIRA: > {code} > java.lang.AssertionError > at > org.apache.phoenix.end2end.join.HashJoinMoreIT.testBug2961(HashJoinMoreIT.java:908) > {code} > I think this problem is caused by following line 453 modified in PHOENIX-5262: > {code} > 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 } > {code} > It did not consider the case that last field is variable length and is DESC, > when the last field is variable length and is DESC, the trailiing 0xFF is not > removed, so > for such field, we should not set lastInclusiveUpperSingleKey back to false. -- This message was sent by Atlassian JIRA (v7.6.3#76005)