@Override
  public ConnectorOutputTableHandle beginCreateTable(
      ConnectorSession session,
      ConnectorTableMetadata tableMetadata,
      Optional<ConnectorTableLayout> layout,
      RetryMode retryMode) {
    verify(transaction == null, "transaction already set");
    String schemaName = tableMetadata.getTable().getSchemaName();
    if (!schemaExists(session, schemaName)) {
      throw new SchemaNotFoundException(schemaName);
    }
    transaction = newCreateTableTransaction(catalog, tableMetadata, session);
    String location = transaction.table().location();
    TrinoFileSystem fileSystem = fileSystemFactory.create(session);
    try {
      if (fileSystem.listFiles(location).hasNext()) {
        throw new TrinoException(
            ICEBERG_FILESYSTEM_ERROR,
            format(
                "Cannot create a table on a non-empty location:"
                    + " %s, set 'iceberg.unique-table-location=true' in your Iceberg catalog properties "
                    + "to use unique table locations for every table.",
                location));
      }
      return newWritableTableHandle(tableMetadata.getTable(), transaction.table(), retryMode);
    } catch (IOException e) {
      throw new TrinoException(
          ICEBERG_FILESYSTEM_ERROR, "Failed checking new table's location: " + location, e);
    }
  }
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