{"record":{"id":"6ec0c24e0b950804","repo":"apache/seatunnel","slug":"unsupported-altertablecolumnevent-event","errorCode":null,"errorMessage":"Unsupported AlterTableColumnEvent: ${event}","messagePattern":"Unsupported AlterTableColumnEvent: (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleDialect.java","lineNumber":456,"sourceCode":"                log.info(\"Executing modify column SQL: {}\", sql);\n                statement.execute(sql);\n            }\n        }\n    }\n\n    private String buildUpdateColumnSQL(\n            Connection connection, TablePath tablePath, AlterTableColumnEvent event)\n            throws SQLException {\n        String actionType;\n        Column column;\n        if (event instanceof AlterTableModifyColumnEvent) {\n            actionType = \"MODIFY\";\n            column = ((AlterTableModifyColumnEvent) event).getColumn();\n        } else if (event instanceof AlterTableAddColumnEvent) {\n            actionType = \"ADD\";\n            column = ((AlterTableAddColumnEvent) event).getColumn();\n        } else {\n            throw new IllegalArgumentException(\"Unsupported AlterTableColumnEvent: \" + event);\n        }\n        String sourceDialectName = event.getSourceDialectName();\n        boolean sameCatalog = StringUtils.equals(dialectName(), sourceDialectName);\n        BasicTypeDefine typeDefine = getTypeConverter().reconvert(column);\n        String columnType = sameCatalog ? column.getSourceType() : typeDefine.getColumnType();\n        StringBuilder sqlBuilder =\n                new StringBuilder()\n                        .append(\"ALTER TABLE  \")\n                        .append(tableIdentifier(tablePath))\n                        .append(\" \")\n                        .append(actionType)\n                        .append(\" \")\n                        .append(quoteIdentifier(column.getName()))\n                        .append(\" \")\n                        .append(columnType);\n        // Only decorate with default value when source dialect is same as sink dialect\n        // Todo Support for cross-database default values for ddl statements\n        if (column.getDefaultValue() != null && sameCatalog) {","sourceCodeStart":438,"sourceCodeEnd":474,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleDialect.java#L438-L474","documentation":"buildUpdateColumnSQL only knows how to translate AlterTableModifyColumnEvent and AlterTableAddColumnEvent into Oracle ALTER TABLE DDL; any other AlterTableColumnEvent subclass reaches the else branch and throws IllegalArgumentException. It guards the schema-evolution event dispatch from being silently ignored.","triggerScenarios":"applySchemaChange is invoked with an AlterTableColumnEvent that is neither AlterTableModifyColumnEvent nor AlterTableAddColumnEvent, e.g. a rename-column or drop-column event from a CDC source.","commonSituations":"Schema evolution enabled with a connector that emits unsupported event types (RENAME/DROP); a newer event type added upstream but not handled by the Oracle dialect; event routed to the wrong dialect.","solutions":["Check the emitted event type before enabling schema evolution to Oracle; only ADD/MODIFY column events are supported","Convert or filter unsupported events (rename -> modify or drop+add) in the sink schema-change handling","Upgrade SeaTunnel if support for the event type was added in a newer version","If you control the event source, emit AlterTableAddColumnEvent/AlterTableModifyColumnEvent instead of the unsupported subtype"],"exampleFix":"// before\nif (event instanceof AlterTableRenameColumnEvent) {\n    applySchemaChange(conn, event); // hits IllegalArgumentException\n}\n// after\nif (event instanceof AlterTableAddColumnEvent || event instanceof AlterTableModifyColumnEvent) {\n    applySchemaChange(conn, event);\n} else {\n    log.warn(\"Skipping unsupported schema change event: {}\", event);\n}","handlingStrategy":"validation","validationCode":"if (!(event instanceof AlterTableAddColumnEvent) && !(event instanceof AlterTableModifyColumnEvent)) {\n    throw new IllegalArgumentException(\"Event not supported by Oracle dialect: \" + event.getClass().getSimpleName());\n}","typeGuard":"boolean supported = event instanceof AlterTableAddColumnEvent || event instanceof AlterTableModifyColumnEvent;","tryCatchPattern":"try {\n    applySchemaChange(conn, event);\n} catch (IllegalArgumentException e) {\n    log.warn(\"Unsupported schema change skipped: {}\", e.getMessage());\n}","preventionTips":["Only enable schema evolution with sources emitting ADD/MODIFY column events","Map rename/drop events to supported events before applying","Test schema-change pipelines against the target dialect","Pin SeaTunnel versions and review dialect event support before upgrading sources"],"tags":["jdbc","oracle","schema-evolution","unsupported-event"],"backgroundTag":"unsupported-enum-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}