public void sortAndDeduplicateByTimestampIfNecessary()

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();
  }