in tablestore/src/main/java/com/alicloud/openservices/tablestore/ecosystem/TablestoreSplit.java [638:686]
private List<Range> mergeSubRange(List<Range> range1, Range subRange, PrimaryKey begin, PrimaryKey end) {
List<Range> retRange = new ArrayList<Range>();
for (Range range : range1) {
LOGGER.info("rangeBegin: {}, rangeEnd: {}, rangeEqual: {}, subRangeBegin: {}, subRangeEnd: {}, subRangeEqual: {}",
range.begin, range.end, range.equal, subRange.begin, subRange.end, subRange.equal);
if (range.equal != null) {
return range1;
} else if (subRange.equal != null) {
List<Range> rangeList = new ArrayList<Range>();
rangeList.add(subRange);
return rangeList;
} else {
PrimaryKeyColumn pkcBegin = range.begin;
PrimaryKeyColumn pkcEnd = range.end;
if (subRange.begin.getName().equals(pkcBegin.getName())) {
if (pkcEnd.getValue().compareTo(subRange.begin.getValue()) < 0 ||
pkcBegin.getValue().compareTo(subRange.end.getValue()) > 0) {
continue;
}
if (pkcBegin.getValue().compareTo(subRange.begin.getValue()) > 0
&& pkcBegin.getValue().compareTo(subRange.end.getValue()) < 0
&& pkcEnd.getValue().compareTo(subRange.end.getValue()) > 0) {
range.setEnd(subRange.end);
range.setRightOpen(subRange.isRightOpen);
} else if (pkcBegin.getValue().compareTo(subRange.begin.getValue()) < 0
&& pkcEnd.getValue().compareTo(subRange.begin.getValue()) > 0) {
if (pkcEnd.getValue().compareTo(subRange.end.getValue()) > 0) {
range.setEnd(subRange.end);
range.setRightOpen(subRange.isRightOpen);
range.setBegin(subRange.begin);
}
if (pkcEnd.getValue().compareTo(subRange.end.getValue()) <= 0) {
range.setBegin(subRange.begin);
}
}
retRange.add(range);
/* else if (pkcBegin.getValue().compareTo(subRange.end.getValue()) == 0) {
}*/
} else {
return range1;
}
}
}
return retRange;
}