@Override
  public OptionalLong executeDelete(ConnectorSession session, ConnectorTableHandle tableHandle) {
    IcebergTableHandle handle = (IcebergTableHandle) tableHandle;

    Table icebergTable = loadTable(session, handle.getSchemaTableName());

    DeleteFiles deleteFiles =
        icebergTable
            .newDelete()
            .deleteFromRowFilter(toIcebergExpression(handle.getEnforcedPredicate()));
    commit(deleteFiles, session);

    Map<String, String> summary = icebergTable.currentSnapshot().summary();
    String deletedRowsStr = summary.get(DELETED_RECORDS_PROP);
    if (deletedRowsStr == null) {
      // TODO Iceberg should guarantee this is always present
      // (https://github.com/apache/iceberg/issues/4647)
      return OptionalLong.empty();
    }
    long deletedRecords = Long.parseLong(deletedRowsStr);
    long removedPositionDeletes =
        Long.parseLong(summary.getOrDefault(REMOVED_POS_DELETES_PROP, "0"));
    long removedEqualityDeletes =
        Long.parseLong(summary.getOrDefault(REMOVED_EQ_DELETES_PROP, "0"));
    return OptionalLong.of(deletedRecords - removedPositionDeletes - removedEqualityDeletes);
  }
Iceberg original metadata has some problems for mixed-format table, such as iceberg version,
table type. So copy from IcebergMetadata and made some change
amoro-format-mixed/amoro-mixed-trino/src/main/java/org/apache/amoro/trino/unkeyed/IcebergMetadata.java