apache/seatunnel · warning

Column {} does not exist in table {}. Skipping drop column o

Error message

Column {} does not exist in table {}. Skipping drop column operation. event: {}

What it means

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.

Source

Thrown at seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/util/SchemaUtils.java:103

                }
                applySchemaChange(connection, tablePath, changeColumnEvent);
            } else if (event instanceof AlterTableModifyColumnEvent) {
                applySchemaChange(connection, tablePath, (AlterTableModifyColumnEvent) event);
            } else if (event instanceof AlterTableAddColumnEvent) {
                AlterTableAddColumnEvent addColumnEvent = (AlterTableAddColumnEvent) event;
                if (columnExists(connection, tablePath, addColumnEvent.getColumn().getName())) {
                    log.warn(
                            "Column {} already exists in table {}. Skipping add column operation. event: {}",
                            addColumnEvent.getColumn().getName(),
                            tablePath.getFullName(),
                            event);
                    return;
                }
                applySchemaChange(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;
                }
                applySchemaChange(connection, tablePath, dropColumnEvent);
            } else if (event instanceof AlterTableCommentEvent
                    || event instanceof AlterColumnCommentEvent) {
                // Comment-only changes are not supported by StarRocks sink, safely ignore
                log.info(
                        "Ignoring comment change event for table {} - StarRocks sink does not support comment sync: {}",
                        tablePath.getFullName(),
                        event.getEventType());
            } else {
                throw new SeaTunnelException(
                        "Unsupported schemaChangeEvent : " + event.getEventType());
            }

View on GitHub (pinned to cf67b549a7)

Solutions

  1. No action required if the column was intentionally removed — the skip is the correct behavior.
  2. Confirm the column name in the event matches the StarRocks column exactly (case, quoting); fix the source schema mapping if names diverge.
  3. If the drop must take effect, verify you are connected to the correct database/table via TablePath and apply the DROP COLUMN manually.
Defensive patterns

Strategy: validation

Validate before calling

// before applying drop-column event
try (Statement st = connection.createStatement();
     ResultSet rs = st.executeQuery("DESC " + tablePath.getFullName())) {
    boolean found = false;
    while (rs.next()) {
        if (rs.getString("Field").equalsIgnoreCase(dropColumnEvent.getColumn())) { found = true; break; }
    }
    if (!found) { log.info("column absent, drop is a no-op"); }
}

Prevention

When it happens

Trigger: 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).

Common situations: 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.

Related errors


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