@Override
  public void seek(int startingFileOffset, long startingRecordOffset) {
    // startingFileOffset is not used, because we only have one file per task
    Preconditions.checkNotNull(iterator, "iterator is null in the MergeOnReadDataIterator.");
    // skip records within the file
    for (long i = 0; i < startingRecordOffset; ++i) {
      if (hasNext()) {
        next();
      } else {
        throw new IllegalStateException(
            String.format(
                "Invalid starting record offset %d for file %d from KeyedTableScanTask.",
                startingRecordOffset, startingFileOffset));
      }
    }
    this.fileOffset = startingFileOffset;
    this.recordOffset = startingRecordOffset;
  }
Iterator for reading data in a Merge on Read (MOR) way. This iterator handles reading data from
an Amoro mix-format table while keeping track of file and record offsets for efficient data
retrieval.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/read/source/MergeOnReadDataIterator.java