apache/seatunnel · error · UnsupportedOperationException

Fluss source does not support partitioned tables yet: %s.%s

Error message

Fluss source does not support partitioned tables yet: %s.%s

What it means

The Fluss source connector throws this UnsupportedOperationException during catalog table construction when the target Fluss table is partitioned. Partitioned table reading is not yet implemented in the connector, so it fails fast with the database and table name rather than returning incomplete schema metadata.

Source

Thrown at seatunnel-connectors-v2/connector-fluss/src/main/java/org/apache/seatunnel/connectors/seatunnel/fluss/source/FlussSourceConfig.java:74

        this.database = readonlyConfig.get(FlussSourceOptions.DATABASE);
        this.table = readonlyConfig.get(FlussSourceOptions.TABLE);
        this.pollTimeoutMs = readonlyConfig.get(FlussSourceOptions.POLL_TIMEOUT_MS);
        this.startMode = readonlyConfig.get(FlussSourceOptions.START_MODE);
        TableInfo tableInfo = loadTableInfo();
        this.catalogTable = toCatalogTable(tableInfo);
        this.flussRowType = tableInfo.getRowType();
    }

    private TableInfo loadTableInfo() {
        try (FlussAdminClient adminClient =
                new FlussAdminClient(buildFlussConfig(), getTablePath().getFullName())) {
            return adminClient.getTableInfo(getTablePath());
        }
    }

    private CatalogTable toCatalogTable(TableInfo tableInfo) {
        if (tableInfo.isPartitioned()) {
            throw new UnsupportedOperationException(
                    String.format(
                            "Fluss source does not support partitioned tables yet: %s.%s",
                            database, table));
        }
        RowType rowType = tableInfo.getRowType();
        TableSchema.Builder schemaBuilder = TableSchema.builder();
        for (DataField field : rowType.getFields()) {
            DataType fieldType = field.getType();
            schemaBuilder.column(
                    PhysicalColumn.of(
                            field.getName(),
                            FlussTypeConverter.toSeaTunnelType(field.getName(), fieldType),
                            FlussTypeConverter.columnLength(fieldType),
                            FlussTypeConverter.columnScale(fieldType),
                            fieldType.isNullable(),
                            null,
                            field.getDescription().orElse(null)));
        }

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Use a non-partitioned Fluss table as the source, e.g. a materialized/denormalized copy of the partitioned table
  2. Read from a specific non-partitioned log table or replica that holds the data
  3. Implement/extend the connector to support partitioned tables (handle PartitionInfo in toCatalogTable and split assignment)
  4. Check the Fluss connector release notes for partitioned-table support before upgrading

Example fix

// before
source {
  Fluss {
    database = "mydb"
    table = "events_partitioned"
  }
}
// after
source {
  Fluss {
    database = "mydb"
    table = "events"   // non-partitioned table
  }
}
Defensive patterns

Strategy: validation

Validate before calling

TableInfo info = adminClient.getTableInfo(TablePath.of(database, table));
if (info.isPartitioned()) {
  throw new IllegalArgumentException(
    "Configure a non-partitioned Fluss table; partitioned tables are unsupported: " + database + "." + table);
}

Prevention

When it happens

Trigger: FlussSourceConfig.toCatalogTable() calls tableInfo.isPartitioned() on the TableInfo fetched via AdminClient.getTableInfo(getTablePath()); any partitioned Fluss table used as a source triggers the throw during source initialization.

Common situations: A developer points a SeaTunnel Fluss source at a table that was created with PARTITION BY (e.g. date-partitioned log tables) and the job fails during startup before any data is read.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/a56878c4afbd5859. Report an issue: GitHub.