Incompatible Changes
This document records the incompatible updates between each version. You need to check this document before you upgrade to related version.
dev
API Changes
Breaking Change: Engine REST table metrics key format
- Affected component: SeaTunnel Engine REST API (job metrics in
/job-info) - Description: To support multiple Sources/Sinks/Transforms processing the same table, the key format of table-level metrics has changed from
{tableName}to{VertexIdentifier}.{tableName}(for example,Sink[0].fake.user_table). - Impact: Existing Grafana dashboards, Prometheus alert rules, and custom monitoring integrations that reference the old keys must be updated.
Before
{
"TableSinkWriteCount": {
"fake.user_table": "15"
}
}After
{
"TableSinkWriteCount": {
"Sink[0].fake.user_table": "10",
"Sink[1].fake.user_table": "5"
}
}- Affected component: SeaTunnel Engine REST API (job metrics in
Configuration Changes
Connector Changes
- Breaking Change: Iceberg Connector — source table primary key is no longer silently inherited
- Affected component:
seatunnel-connectors-v2/connector-iceberg - Description:
SchemaUtils.toIcebergSchema()previously fell back to the CDC source table's primary key wheniceberg.table.primary-keyswas not explicitly configured. This silently setidentifier-field-idson auto-created Iceberg tables, activating equality-delete semantics and causing silent INSERT data loss in append-only CDC pipelines (see #10747). The fallback has been removed. - Impact: Jobs that set
iceberg.table.upsert-mode-enabled=truewithout an expliciticeberg.table.primary-keyswill now fail at startup with a clearIllegalArgumentException. Jobs that relied on implicit PK inheritance to drive upsert semantics must now seticeberg.table.primary-keysexplicitly. - Migration Guide:
- Upsert mode jobs: Add
iceberg.table.primary-keys = "<your key columns>"to the Iceberg sink config. - Append-only CDC jobs: No action needed — omitting
iceberg.table.primary-keysnow correctly routes writes through the pure append writer with no equality deletes. - Existing Iceberg tables that already have
identifier-field-idsstored in their Glue/Hive metastore schema are not affected at runtime; only newly auto-created tables change behavior.
- Upsert mode jobs: Add
- Affected component:
Transform Changes
[BREAKING] SQL Transform
PARSEDATETIME,TO_DATE, andIS_DATEfunctions now only accept whitelisted datetime format patterns. Custom format patterns that were previously accepted will now fail at runtime. The supported patterns are:- DateTime:
yyyy-MM-dd HH:mm:ss,yyyy-MM-dd HH:mm:ss.SSS,yyyy-MM-dd'T'HH:mm:ss,yyyy-MM-dd'T'HH:mm:ss.SSS,yyyy/MM/dd HH:mm:ss,yyyy/MM/dd HH:mm:ss.SSS,yyyyMMddHHmmss - Date:
yyyy-MM-dd,yyyy/MM/dd,yyyyMMdd - Time:
HH:mm:ss,HH:mm:ss.SSS,HHmmss
Exception Type Change: Invalid datetime format patterns now throw
SeaTunnelRuntimeExceptioninstead ofTransformException. If you have error handling or monitoring systems that catchTransformExceptionfor datetime parsing errors, you will need to update them to handleSeaTunnelRuntimeException.Migration Guide: If you are using custom datetime format patterns in
PARSEDATETIME,TO_DATE, orIS_DATEfunctions, you must update your queries to use one of the supported patterns above. If your data uses a different format, you may need to preprocess the input data to match a supported format, or use string manipulation functions to transform the format before parsing.- DateTime:
DataValidator transform: In
row_error_handle_way = ROUTE_TO_TABLEmode, the routed error rowtable_idnow includes the upstream database/schema prefix (for example,db1.ffp/db1.schema1.ffpinstead offfp).Adjusted SQL Transform date & time functions:
DATEDIFF(<start>, <end>, 'MONTH')now returns the total number of months between the two dates across years (for example, from2023-01-01to2024-03-01returns14instead of15).WEEK(<datetime>)now returns the ISO week number directly (previous behavior added an extra+1to the ISO week value).