protected UnkeyedTable createUnKeyedTable(
      TableMeta tableMeta,
      Schema schema,
      PrimaryKeySpec primaryKeySpec,
      PartitionSpec partitionSpec) {
    TableIdentifier tableIdentifier = TableIdentifier.of(tableMeta.getTableIdentifier());
    String tableLocation = checkLocation(tableMeta, MetaTableProperties.LOCATION_KEY_TABLE);
    String baseLocation = checkLocation(tableMeta, MetaTableProperties.LOCATION_KEY_BASE);

    fillTableProperties(tableMeta);
    Table table =
        tableMetaStore.doAs(
            () -> {
              try {
                return tables.create(
                    schema, partitionSpec, tableMeta.getProperties(), baseLocation);
              } catch (Exception e) {
                throw new IllegalStateException("create table failed", e);
              }
            });
    AuthenticatedFileIO fileIO =
        AuthenticatedFileIOs.buildRecoverableHadoopFileIO(
            tableIdentifier,
            tableLocation,
            tableMeta.getProperties(),
            tableMetaStore,
            catalogProperties);
    return new BasicUnkeyedTable(
        tableIdentifier,
        MixedFormatCatalogUtil.useMixedTableOperations(
            table, baseLocation, fileIO, tableMetaStore.getConfiguration()),
        fileIO,
        catalogProperties);
  }
TODO: this class will be removed when we support using restCatalog as base store for
InternalCatalog
amoro-format-iceberg/src/test/java/org/apache/amoro/catalog/MixedTables.java