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
- Use a non-partitioned Fluss table as the source, e.g. a materialized/denormalized copy of the partitioned table
- Read from a specific non-partitioned log table or replica that holds the data
- Implement/extend the connector to support partitioned tables (handle PartitionInfo in toCatalogTable and split assignment)
- 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
- Check tableInfo.isPartitioned() before configuring the Fluss source
- Maintain non-partitioned mirror tables for SeaTunnel reads
- Audit Fluss table DDL (PARTITION BY clauses) before wiring up the connector
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
- getProducedCatalogTables method has not been implemented.
- The Factory has not been implemented and the deprecated Plug
- Option 'field_delimiter' cannot be empty
- Option 'batch_size' must be between 1 and 32
- Option 'visibility_timeout_seconds' must be between 1 and 60
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/a56878c4afbd5859.
Report an issue: GitHub.