{"record":{"id":"038a149bcee080b5","repo":"apache/seatunnel","slug":"column-does-not-exist-in-table-skipping-dro-038a14","errorCode":null,"errorMessage":"Column {} does not exist in table {}. Skipping drop column operation. event: {}","messagePattern":"Column (.+?) does not exist in table (.+?)\\. Skipping drop column operation\\. event: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/util/SchemaUtils.java","lineNumber":103,"sourceCode":"                }\n                applySchemaChange(connection, tablePath, changeColumnEvent);\n            } else if (event instanceof AlterTableModifyColumnEvent) {\n                applySchemaChange(connection, tablePath, (AlterTableModifyColumnEvent) event);\n            } else if (event instanceof AlterTableAddColumnEvent) {\n                AlterTableAddColumnEvent addColumnEvent = (AlterTableAddColumnEvent) event;\n                if (columnExists(connection, tablePath, addColumnEvent.getColumn().getName())) {\n                    log.warn(\n                            \"Column {} already exists in table {}. Skipping add column operation. event: {}\",\n                            addColumnEvent.getColumn().getName(),\n                            tablePath.getFullName(),\n                            event);\n                    return;\n                }\n                applySchemaChange(connection, tablePath, addColumnEvent);\n            } else if (event instanceof AlterTableDropColumnEvent) {\n                AlterTableDropColumnEvent dropColumnEvent = (AlterTableDropColumnEvent) event;\n                if (!columnExists(connection, tablePath, dropColumnEvent.getColumn())) {\n                    log.warn(\n                            \"Column {} does not exist in table {}. Skipping drop column operation. event: {}\",\n                            dropColumnEvent.getColumn(),\n                            tablePath.getFullName(),\n                            event);\n                    return;\n                }\n                applySchemaChange(connection, tablePath, dropColumnEvent);\n            } else if (event instanceof AlterTableCommentEvent\n                    || event instanceof AlterColumnCommentEvent) {\n                // Comment-only changes are not supported by StarRocks sink, safely ignore\n                log.info(\n                        \"Ignoring comment change event for table {} - StarRocks sink does not support comment sync: {}\",\n                        tablePath.getFullName(),\n                        event.getEventType());\n            } else {\n                throw new SeaTunnelException(\n                        \"Unsupported schemaChangeEvent : \" + event.getEventType());\n            }","sourceCodeStart":85,"sourceCodeEnd":121,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/util/SchemaUtils.java#L85-L121","documentation":"SchemaUtils.applySchemaChange logs this warning when an AlterTableDropColumnEvent arrives for a column that does not exist in the StarRocks table. columnExists() is checked first and, when false, the ALTER TABLE DROP COLUMN statement is skipped and the method returns instead of throwing SQLException. This makes drop-column events idempotent.","triggerScenarios":"applySchemaChange(connection, tablePath, AlterTableDropColumnEvent) is called and columnExists(connection, tablePath, dropColumnEvent.getColumn()) returns false — the column is absent from the StarRocks table (or the database/table does not resolve).","commonSituations":"Replayed drop events after job restart; the column was already dropped manually or by another tool; a case-sensitivity/name mismatch between the CDC event column name and the actual StarRocks column name causes the existence check to miss it.","solutions":["No action required if the column was intentionally removed — the skip is the correct behavior.","Confirm the column name in the event matches the StarRocks column exactly (case, quoting); fix the source schema mapping if names diverge.","If the drop must take effect, verify you are connected to the correct database/table via TablePath and apply the DROP COLUMN manually."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// before applying drop-column event\ntry (Statement st = connection.createStatement();\n     ResultSet rs = st.executeQuery(\"DESC \" + tablePath.getFullName())) {\n    boolean found = false;\n    while (rs.next()) {\n        if (rs.getString(\"Field\").equalsIgnoreCase(dropColumnEvent.getColumn())) { found = true; break; }\n    }\n    if (!found) { log.info(\"column absent, drop is a no-op\"); }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Ensure column-name case/quoting matches between CDC events and StarRocks","Check TablePath points to the intended database/table","Verify manually applied DDL doesn't conflict with pipeline-managed schema changes"],"tags":["starrocks","schema-change","idempotency"],"backgroundTag":"column-not-found","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"}