in iotdb-collector/collector-core/src/main/java/org/apache/iotdb/collector/utils/sorter/PipeTableModelTabletEventSorter.java [181:223]
public void sortAndDeduplicateByTimestampIfNecessary() {
if (tablet == null || tablet.getRowSize() == 0) {
return;
}
long[] timestamps = tablet.getTimestamps();
for (int i = 1, size = tablet.getRowSize(); i < size; ++i) {
final long currentTimestamp = timestamps[i];
final long previousTimestamp = timestamps[i - 1];
if (currentTimestamp < previousTimestamp) {
isUnSorted = true;
break;
}
if (currentTimestamp == previousTimestamp) {
hasDuplicates = true;
}
}
if (!isUnSorted && !hasDuplicates) {
return;
}
index = new Integer[tablet.getRowSize()];
for (int i = 0, size = tablet.getRowSize(); i < size; i++) {
index[i] = i;
}
if (isUnSorted) {
sortTimestamps();
// Do deduplicate anyway.
// isDeduplicated may be false positive when isUnSorted is true.
deduplicateTimestamps();
hasDuplicates = false;
}
if (hasDuplicates) {
deduplicateTimestamps();
}
sortAndDeduplicateValuesAndBitMapsIgnoreTimestamp();
}