@Override
  public IcebergTableHandle getTableHandle(ConnectorSession session, SchemaTableName tableName) {
    IcebergTableName name = IcebergTableName.from(tableName.getTableName());
    if (name.getTableType() != DATA) {
      // Pretend the table does not exist to produce better error message in case of table redirects
      // to Hive
      return null;
    }

    Table table;
    try {
      table =
          loadTable(session, new SchemaTableName(tableName.getSchemaName(), name.getTableName()));
    } catch (TableNotFoundException e) {
      return null;
    }
    Optional<Long> snapshotId = getCurrentSnapshotId(table);

    Map<String, String> tableProperties = table.properties();
    String nameMappingJson = tableProperties.get(TableProperties.DEFAULT_NAME_MAPPING);
    if (TableTypeUtil.isHive((MixedTable) table)) {
      return new AdaptHiveIcebergTableHandle(
          tableName.getSchemaName(),
          name.getTableName(),
          name.getTableType(),
          snapshotId,
          SchemaParser.toJson(table.schema()),
          Optional.of(table.spec()).map(PartitionSpecParser::toJson),
          ((HasTableOperations) table).operations().current().formatVersion(),
          TupleDomain.all(),
          TupleDomain.all(),
          ImmutableSet.of(),
          Optional.ofNullable(nameMappingJson),
          table.location(),
          table.properties(),
          NO_RETRIES,
          ImmutableList.of(),
          false,
          Optional.empty());
    }
    return new IcebergTableHandle(
        tableName.getSchemaName(),
        name.getTableName(),
        name.getTableType(),
        snapshotId,
        SchemaParser.toJson(table.schema()),
        Optional.of(table.spec()).map(PartitionSpecParser::toJson),
        ((HasTableOperations) table).operations().current().formatVersion(),
        TupleDomain.all(),
        TupleDomain.all(),
        ImmutableSet.of(),
        Optional.ofNullable(nameMappingJson),
        table.location(),
        table.properties(),
        NO_RETRIES,
        ImmutableList.of(),
        false,
        Optional.empty());
  }
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