{"record":{"id":"d0363637f4958677","repo":"apache/seatunnel","slug":"column-does-not-exist-in-table-skipping-dro","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-databend/src/main/java/org/apache/seatunnel/connectors/seatunnel/databend/schema/SchemaChangeManager.java","lineNumber":133,"sourceCode":"            }\n        } else if (event instanceof AlterTableModifyColumnEvent) {\n            applyModifyColumn(connection, tablePath, (AlterTableModifyColumnEvent) event);\n        } else if (event instanceof AlterTableAddColumnEvent) {\n            // handle column\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            applyAddColumn(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            applyDropColumn(connection, tablePath, dropColumnEvent);\n        } else {\n            throw new SeaTunnelException(\n                    \"Unsupported AlterTableColumnEvent type: \" + event.getClass().getName());\n        }\n    }\n\n    /**\n     * Applies each column event in a grouped schema change.\n     *\n     * <p>The resolver wraps column-comment changes in {@link AlterTableColumnsEvent}, so the\n     * per-column dispatcher must handle comment events before structural column events.","sourceCodeStart":115,"sourceCodeEnd":151,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-databend/src/main/java/org/apache/seatunnel/connectors/seatunnel/databend/schema/SchemaChangeManager.java#L115-L151","documentation":"Databend's SchemaChangeManager handles AlterTableDropColumnEvent. If the column to drop does not exist in the target table, the drop is skipped with this warning instead of failing, making the DDL idempotent. The table is left unchanged.","triggerScenarios":"Applying a drop-column event for a column already removed — due to event replay after restart, a prior manual drop, or the upstream source column having been dropped earlier.","commonSituations":"CDC pipelines replaying DDL after failure/restart; columns dropped manually in Databend; upstream schema evolution that already removed the column before the event arrived.","solutions":["No action needed — the target state (column absent) is already achieved; verify remaining schema matches the source","If the column should exist (event was wrong), re-add it and fix the upstream schema-change source","Suppress duplicate replays with idempotent event handling to reduce log noise"],"exampleFix":"// before\n-- replayed: ALTER TABLE db.t DROP COLUMN old_col; (already dropped)\n// after — connector skips automatically; confirm schema convergence downstream","handlingStrategy":"retry","validationCode":"// Pre-check before applying drop column\nif (!columnExists(conn, tablePath, columnName)) { /* already dropped; skip */ }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat drop-column DDL as idempotent; always check existence first","Avoid manual DDL on tables managed by CDC schema evolution","Reconcile schema drift between source and target periodically"],"tags":["databend","schema-change","idempotency","ddl"],"backgroundTag":"resource-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"}