@Override
  public void createTable(ObjectPath tablePath, CatalogBaseTable table, boolean ignoreIfExists)
      throws TableAlreadyExistException, DatabaseNotExistException, CatalogException {
    Configuration configuration = new Configuration();
    table.getOptions().forEach(configuration::setString);
    TableFormat format = TableFormat.valueOf(configuration.get(TABLE_FORMAT));
    TableIdentifier tableIdentifier =
        TableIdentifier.of(
            unifiedCatalog.name(), tablePath.getDatabaseName(), tablePath.getObjectName());
    String errorMessage =
        String.format(
            "Can't decide table format of table %s, Please specify 'table.format' "
                + "in table properties",
            tableIdentifier);

    Preconditions.checkNotNull(format, errorMessage);
    try {
      unifiedCatalog.loadTable(tableIdentifier.getDatabase(), tableIdentifier.getTableName());
      if (!ignoreIfExists) {
        throw new TableAlreadyExistException(getName(), tablePath);
      }
      return;
    } catch (NoSuchTableException e) {
      // do nothing
    }

    final TableFormat catalogFormat = format;
    AbstractCatalog catalog =
        getOriginalCatalog(format)
            .orElseGet(() -> createOriginalCatalog(tableIdentifier, catalogFormat));
    catalog.createTable(tablePath, table, ignoreIfExists);
  }
Available Flink catalogs for Unified Catalog.

<p>May include: Iceberg, Mixed and Paimon Catalogs, etc.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/catalog/FlinkUnifiedCatalog.java