apache/seatunnel · warning
old: {{}-{}} and new: {{}-{}} belongs to the same type famil
Error message
old: {{}-{}} and new: {{}-{}} belongs to the same type family, but old type has higher precision than new type. Ignore this convert request. What it means
AlterPaimonTableSchemaEventHandler.updateColumn decides whether an existing column can be widened to the requested new SeaTunnel type. When old and new types share a family (e.g. INT->TINYINT direction, DECIMAL narrower) but the old type has HIGHER precision than the new, narrowing is unsafe, the handler marks it IGNORE and logs this warning instead of altering the table.
Source
Thrown at seatunnel-connectors-v2/connector-paimon/src/main/java/org/apache/seatunnel/connectors/seatunnel/paimon/sink/schema/handler/AlterPaimonTableSchemaEventHandler.java:175
private void updateColumn(
Column newColumn, String oldColumnName, Identifier identifier, String afterTheColumn) {
BasicTypeDefine<DataType> reconvertColumn = PaimonTypeMapper.INSTANCE.reconvert(newColumn);
int idx = sinkPaimonTableSchema.fieldNames().indexOf(oldColumnName);
Preconditions.checkState(
idx >= 0,
"Field name " + oldColumnName + " does not exist in table. This is unexpected.");
DataType newDataType = reconvertColumn.getNativeType();
DataField dataField = sinkPaimonTableSchema.fields().get(idx);
DataType oldDataType = dataField.type();
switch (canConvert(oldDataType, newDataType)) {
case CONVERT:
paimonCatalog.alterTable(
identifier,
SchemaChange.updateColumnType(oldColumnName, newDataType),
false);
break;
case IGNORE:
log.warn(
"old: {{}-{}} and new: {{}-{}} belongs to the same type family, but old type has higher precision than new type. Ignore this convert request.",
dataField.name(),
oldDataType,
reconvertColumn.getName(),
newDataType);
break;
case EXCEPTION:
throw new UnsupportedOperationException(
String.format(
"Cannot convert field %s from type %s to %s of Paimon table %s.",
oldColumnName, oldDataType, newDataType, identifier.getFullName()));
}
if (StringUtils.isNotBlank(afterTheColumn)) {
paimonCatalog.alterTable(
identifier,
SchemaChange.updateColumnPosition(
SchemaChange.Move.after(oldColumnName, afterTheColumn)),
false);View on GitHub (pinned to cf67b549a7)
Solutions
- Verify the narrowing is intended; if not, fix the upstream event to send an equal-or-wider type.
- If truly intended, alter the Paimon table manually: ALTER TABLE ... ALTER COLUMN c TYPE new_type, or drop/re-add the column.
- Set the schema-evolution handler policy to allow/upper-type if your pipeline tolerates widening only.
- Skip the event by filtering it in the schema-change producer so the warning disappears.
Example fix
// before ALTER COLUMN amount TYPE DECIMAL(10,2) // table column is DECIMAL(20,4) // after ALTER COLUMN amount TYPE DECIMAL(20,4) // equal or wider type, change applied
Defensive patterns
Strategy: validation
Validate before calling
if (newType.getPrecision() < oldType.getPrecision()) log.warn("narrowing request will be ignored for column " + col); Prevention
- Only emit widening type changes from upstream
- Align schema-registry DDL with table DDL
- Manually alter table when narrowing is truly required
When it happens
Trigger: applySingleSchemaChangeEvent with an AlterTableColumn event whose new column type converts (via reconvert) into the same Paimon type family but with lower precision — resolution is IGNORE.
Common situations: Upstream schema evolution sends DECIMAL(20,4) where table has DECIMAL(30,6); source changed BIGINT back to INT; automated schema-sync tools pushing older DDL.
Understand the failure class
Background: Type mismatch errors: IllegalArgumentException, TypeError and type guards across 150 open-source libraries — this error's family across 150 libraries.
Related errors
- Cannot convert field %s from type %s to %s of Paimon table %
- ColumnAlreadyExistException: {}
- ColumnNotExistException: {}
- Unsupported alter table event: ${event}
- Unsupported convert %s to Map, typeDefine: %s
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/0fd5d67cf7624c58.
Report an issue: GitHub.