apache/seatunnel · error · SeaTunnelException

Unsupported AlterTableColumnEvent type: {event.getClass().ge

Error message

Unsupported AlterTableColumnEvent type: {event.getClass().getName()}

What it means

Private applySchemaChange(connection, tablePath, event) overload dispatches AlterTableColumnEvent subtypes (add/modify/rename/drop column) and throws when the event matches none. The grouped AlterTableColumnsEvent path delegates each column event here, so one unsupported event aborts the batch.

Source

Thrown at seatunnel-connectors-v2/connector-databend/src/main/java/org/apache/seatunnel/connectors/seatunnel/databend/schema/SchemaChangeManager.java:142

                        addColumnEvent.getColumn().getName(),
                        tablePath.getFullName(),
                        event);
                return;
            }
            applyAddColumn(connection, tablePath, addColumnEvent);
        } else if (event instanceof AlterTableDropColumnEvent) {
            AlterTableDropColumnEvent dropColumnEvent = (AlterTableDropColumnEvent) event;
            if (!columnExists(connection, tablePath, dropColumnEvent.getColumn())) {
                log.warn(
                        "Column {} does not exist in table {}. Skipping drop column operation. event: {}",
                        dropColumnEvent.getColumn(),
                        tablePath.getFullName(),
                        event);
                return;
            }
            applyDropColumn(connection, tablePath, dropColumnEvent);
        } else {
            throw new SeaTunnelException(
                    "Unsupported AlterTableColumnEvent type: " + event.getClass().getName());
        }
    }

    /**
     * Applies each column event in a grouped schema change.
     *
     * <p>The resolver wraps column-comment changes in {@link AlterTableColumnsEvent}, so the
     * per-column dispatcher must handle comment events before structural column events.
     */
    void applySchemaChange(Connection connection, TablePath tablePath, AlterTableColumnsEvent event)
            throws SQLException, IOException {
        for (AlterTableColumnEvent columnEvent : event.getEvents()) {
            applySchemaChange(connection, tablePath, columnEvent);
        }
    }

    private void applyRenameColumn(

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Align the seatunnel schema-change API version with the connector version (rebuild with matching versions)
  2. Filter unsupported column events upstream before applying changes
  3. Add a handler for the event type if you own the connector code
Defensive patterns

Strategy: try-catch

Try / catch

try {
    applySchemaChange(event);
} catch (SeaTunnelException e) {
    if (e.getMessage().startsWith("Unsupported AlterTableColumnEvent")) {
        log.warn("Skipping unsupported column event: " + e.getMessage());
    } else { throw e; }
}

Prevention

When it happens

Trigger: An AlterTableColumnEvent whose concrete class is not one of the supported add/modify/rename/drop column event types reaches the dispatcher — typically from a newer API version or a custom event.

Common situations: Version mismatch between the schema-change API jar and the Databend connector; a source emitting a newly introduced column-event subtype.

Related errors


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