public CloseableIterable<IcebergFileEntry> entries() {
    TableScan tableScan = getMetadataTable().newScan();
    if (snapshotId != null) {
      tableScan = tableScan.useSnapshot(snapshotId);
    }
    if (schema != null) {
      tableScan = tableScan.project(schema);
    }
    CloseableIterable<FileScanTask> manifestFileScanTasks = tableScan.planFiles();

    CloseableIterable<StructLike> entries =
        CloseableIterable.concat(entriesOfManifest(manifestFileScanTasks));

    CloseableIterable<IcebergFileEntry> allEntries =
        CloseableIterable.transform(
            entries,
            (entry -> {
              Long sequence =
                  entry.get(
                      entryFieldIndex(ManifestEntryFields.SEQUENCE_NUMBER.name()), Long.class);
              if (fromSequence != null && fromSequence > sequence) {
                return null;
              }
              ManifestEntryFields.Status status =
                  ManifestEntryFields.Status.of(
                      entry.get(entryFieldIndex(ManifestEntryFields.STATUS.name()), Integer.class));
              StructLike fileRecord =
                  entry.get(
                      entryFieldIndex(ManifestEntryFields.DATA_FILE_FIELD_NAME), StructLike.class);
              FileContent fileContent =
                  getFileContent(
                      fileRecord.get(dataFileFieldIndex(DataFile.CONTENT.name()), Integer.class));
              if (shouldKeep(status, fileContent)) {
                Long snapshotId =
                    entry.get(entryFieldIndex(ManifestEntryFields.SNAPSHOT_ID.name()), Long.class);
                ContentFile<?> contentFile = buildContentFile(fileContent, fileRecord);
                if (metricsEvaluator().eval(contentFile)) {
                  if (needMetrics() && !includeColumnStats) {
                    contentFile = (ContentFile<?>) contentFile.copyWithoutStats();
                  }
                  return new IcebergFileEntry(snapshotId, sequence, status, contentFile);
                }
              }
              return null;
            }));
    return CloseableIterable.filter(allEntries, Objects::nonNull);
  }
Set the sequence number, fetch all entries greater than or equal to this sequence number.

@param fromSequence nullable.
@return this for chains
amoro-format-iceberg/src/main/java/org/apache/amoro/scan/TableEntriesScan.java