@Override
  public T next() {
    T row;
    if (deleteHolder.isEmpty() && insertHolder.isNotEmpty()) {
      row =
          changeActionTransformer.apply(
              ChangeActionTrans.of(insertHolder.nextRow, insertHolder.changeAction));
      insertHolder.clean();
    } else if (deleteHolder.isNotEmpty() && insertHolder.isEmpty()) {
      row =
          changeActionTransformer.apply(
              ChangeActionTrans.of(deleteHolder.nextRow, deleteHolder.changeAction));
      deleteHolder.clean();
    } else if (deleteHolder.equalTo(insertHolder)) {
      row =
          changeActionTransformer.apply(ChangeActionTrans.of(deleteHolder.nextRow, UPDATE_BEFORE));
      insertHolder.changeAction = UPDATE_AFTER;
      deleteHolder.clean();
    } else if (deleteHolder.lesser(insertHolder)) {
      row =
          changeActionTransformer.apply(
              ChangeActionTrans.of(deleteHolder.nextRow, deleteHolder.changeAction));
      deleteHolder.clean();
    } else {
      row =
          changeActionTransformer.apply(
              ChangeActionTrans.of(insertHolder.nextRow, insertHolder.changeAction));
      insertHolder.clean();
    }

    return mixedFormatMetaColumnRemover.apply(row);
  }
This is a change log data iterator that replays the change log data appended to mixed-format
change table with ordered.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/read/source/ChangeLogDataIterator.java