apache/seatunnel · error · IllegalArgumentException

Unsupported AlterTableColumnEvent: ${event}

Error message

Unsupported AlterTableColumnEvent: ${event}

What it means

Thrown by YashanDbDialect.extractColumn (called from column()) when a schema-change AlterTableColumnEvent is neither AlterTableModifyColumnEvent nor AlterTableAddColumnEvent. The dialect only supports MODIFY and ADD column events for schema evolution.

Source

Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbDialect.java:449

                        .append(columnType);

        if (column.getDefaultValue() != null && sameCatalog) {
            sqlBuilder.append(" ").append(sqlClauseWithDefaultValue(typeDefine, sourceDialectName));
        }

        // Handle nullability based on operation type
        appendNullableClause(sqlBuilder, connection, tablePath, column, event);

        return sqlBuilder.toString();
    }

    private Column extractColumn(AlterTableColumnEvent event) {
        if (event instanceof AlterTableModifyColumnEvent) {
            return ((AlterTableModifyColumnEvent) event).getColumn();
        } else if (event instanceof AlterTableAddColumnEvent) {
            return ((AlterTableAddColumnEvent) event).getColumn();
        }
        throw new IllegalArgumentException("Unsupported AlterTableColumnEvent: " + event);
    }

    private String getActionType(AlterTableColumnEvent event) {
        if (event instanceof AlterTableModifyColumnEvent) {
            return "MODIFY";
        } else if (event instanceof AlterTableAddColumnEvent) {
            return "ADD";
        }
        throw new IllegalArgumentException("Unsupported AlterTableColumnEvent: " + event);
    }

    private void appendNullableClause(
            StringBuilder sqlBuilder,
            Connection connection,
            TablePath tablePath,
            Column column,
            AlterTableColumnEvent event)
            throws SQLException {

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Only enable schema evolution for ADD/MODIFY column changes when sinking to YashanDB
  2. Handle/drop unsupported events upstream before they reach the sink
  3. Extend YashanDbDialect to support the missing event types (implement DROP/RENAME handling)
  4. Check the event class name in the message and confirm it is expected for your pipeline
Defensive patterns

Strategy: type-guard

Validate before calling

// Filter unsupported events before applying schema evolution
boolean supported = event instanceof AlterTableModifyColumnEvent
        || event instanceof AlterTableAddColumnEvent;
if (!supported) { /* skip or translate to supported event */ }

Type guard

boolean isSupportedColumnEvent(SchemaChangeEvent e) {
    return e instanceof AlterTableModifyColumnEvent || e instanceof AlterTableAddColumnEvent;
}

Try / catch

try {
    applySchemaChange(event);
} catch (IllegalArgumentException e) {
    if (e.getMessage().startsWith("Unsupported AlterTableColumnEvent")) {
        // drop or rewrite the event; log unsupported change type
    }
}

Prevention

When it happens

Trigger: Schema evolution applies an unsupported event type — e.g. AlterTableDropColumnEvent, AlterTableRenameColumnEvent, or a custom AlterTableColumnEvent — against a YashanDB sink.

Common situations: Upstream schema changes include column drops or renames and schema-evolution is enabled on the YashanDB sink; connector version does not yet support those event types for this dialect.

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/6e0788c833e977b9. Report an issue: GitHub.