@Override
  public MixedFormatDynamicSink createDynamicTableSink(Context context) {
    CatalogTable catalogTable = context.getCatalogTable();

    ObjectIdentifier identifier = context.getObjectIdentifier();
    Map<String, String> options = catalogTable.getOptions();

    MixedFormatTableLoader tableLoader =
        createTableLoader(
            new ObjectPath(identifier.getDatabaseName(), identifier.getObjectName()),
            internalCatalogName,
            internalCatalogBuilder,
            options);

    MixedTable table = MixedFormatUtils.loadMixedTable(tableLoader);
    return new MixedFormatDynamicSink(catalogTable, tableLoader, table.isKeyedTable());
  }
A factory generates {@link MixedFormatDynamicSource} and {@link MixedFormatDynamicSink}
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/table/MixedDynamicTableFactory.java