apache/seatunnel · warning

Skipping unsupported default value for column {} in table {}

Error message

Skipping unsupported default value for column {} in table {}.

What it means

This is a log warning emitted while building ALTER TABLE DDL in the Dameng dialect's applySchemaChange. When the sink is not the same catalog and the column's default value is a 'special' default (dialect-specific expression unsupported by Dameng, e.g. CURRENT_TIMESTAMP from another dialect), the dialect omits the DEFAULT clause and only logs. The column will be created/altered without the default value.

Source

Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/dm/DmdbDialect.java:335

        // Handle null constraints
        // DamengDB does not direct support modifying the NULL to NOT-NUll constraint directly.
        // if supported, need update null value to defaultvalue, then modify the column to NOT NULL.
        // this is a high-risk operation, so we do not support it.
        boolean targetColumnNullable = columnIsNullable(connection, tablePath, column.getName());
        if (column.isNullable() != targetColumnNullable && !targetColumnNullable) {
            sqlBuilder.append(" NULL ");
        }

        // Handle default value
        if (column.getDefaultValue() != null) {
            if (sameCatalog
                    || !isSpecialDefaultValue(typeDefine.getDefaultValue(), sourceDialectName)) {
                String defaultValueClause =
                        sqlClauseWithDefaultValue(typeDefine, sourceDialectName);
                sqlBuilder.append(" ").append(defaultValueClause);
            } else {
                log.warn(
                        "Skipping unsupported default value for column {} in table {}.",
                        column.getName(),
                        tablePath.getFullName());
            }
        }
        List<String> ddlSQL = new ArrayList<>();
        ddlSQL.add(sqlBuilder.toString());
        // Process column comment
        if (column.getComment() != null) {
            ddlSQL.add(buildColumnCommentSQL(tablePath, column));
        }
        // Execute the DDL statement
        executeDDL(connection, ddlSQL);
    }

    @Override
    public boolean needsQuotesWithDefaultValue(BasicTypeDefine columnDefine) {
        String dmDataType = columnDefine.getDataType();

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Set the desired DEFAULT explicitly on the Dameng column with a manual ALTER TABLE statement after the sync DDL
  2. Translate the source default to a Dameng-supported expression in the upstream table definition
  3. Keep the same catalog (in-DM replication) so defaults are preserved verbatim
  4. Adjust isSpecialDefaultValue/sqlClauseWithDefaultValue handling or use a custom dialect subclass to map supported defaults

Example fix

// before: default dropped by sync
CREATE TABLE t (created DATETIME);
// after: apply default manually on Dameng
ALTER TABLE t MODIFY created DATETIME DEFAULT SYSDATE;
Defensive patterns

Strategy: validation

Validate before calling

// check default value compatibility before sync
if (isSpecialDefaultValue(column.getDefaultValue(), sourceDialectName)) {
    // plan a manual ALTER TABLE ... DEFAULT ... on Dameng
}

Prevention

When it happens

Trigger: applySchemaChange on a cross-dialect sync (e.g. MySQL->Dameng) where a column carries a source-dialect default value that isSpecialDefaultValue(..., sourceDialectName) classifies as unsupported for Dameng.

Common situations: Replicating MySQL tables with DEFAULT CURRENT_TIMESTAMP or other vendor-specific defaults into Dameng; schema evolution enabled; users noticing the DM column lacks the default after DDL is applied.

Related errors


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