apache/seatunnel · error · SeaTunnelRuntimeException

COMMON-19

COMMON-19

Error message

'${identifier}' unsupported convert SeaTunnel data type '${dataType}' of '${field}' to connector data type.

What it means

RedshiftTypeConverter.reconvert() throws this when reverse-mapping a SeaTunnel column to a Redshift type; after handling local cases it delegates to super.reconvert, and any failure is rethrown as CommonError.convertToConnectorTypeError with DatabaseIdentifier.REDSHIFT. Types unsupported by both the Redshift switch and the base converter trigger it.

Source

Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/redshift/RedshiftTypeConverter.java:403

                            column.getScale(),
                            MAX_TIMESTAMP_SCALE,
                            timestampTzScale);
                }
                builder.columnType(REDSHIFT_TIMESTAMPTZ);
                builder.dataType(REDSHIFT_TIMESTAMPTZ);
                builder.scale(timestampTzScale);
                break;
            case MAP:
            case ARRAY:
            case ROW:
                builder.columnType(REDSHIFT_SUPER);
                builder.dataType(REDSHIFT_SUPER);
                break;
            default:
                try {
                    return super.reconvert(column);
                } catch (SeaTunnelRuntimeException e) {
                    throw CommonError.convertToConnectorTypeError(
                            DatabaseIdentifier.REDSHIFT,
                            column.getDataType().getSqlType().name(),
                            column.getName());
                }
        }
        return builder.build();
    }
}

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Pre-create the Redshift table (e.g. use SUPER for complex data) and disable auto-create-table
  2. Convert complex columns to strings/JSON before the sink
  3. Extend RedshiftTypeConverter.reconvert to map the type (e.g. to SUPER)

Example fix

// before: auto-create with MAP column
// after: convert to JSON string then map to SUPER
source/transform produce JSON strings; sink { Jdbc { auto_create_table = false } }
Defensive patterns

Strategy: validation

Validate before calling

// Ensure all sink columns have Redshift mappings before auto-create:
for (CatalogColumn col : schema.getColumns()) {
    SqlType t = col.getDataType().getSqlType();
    if (t == SqlType.MAP || t == SqlType.ROW) {
    throw new IllegalStateException("Pre-create SUPER column for: " + col.getName());
    }
}

Try / catch

try {
    return super.reconvert(column);
} catch (SeaTunnelRuntimeException e) {
    LOG.warn("No Redshift mapping for {}: {}", column.getDataType(), e.getMessage());
    // pre-create table with SUPER or stringify the column
}

Prevention

When it happens

Trigger: Auto-create-table on a Redshift sink where the SeaTunnel column type (e.g. MAP, ROW, certain time/byte types) has no Redshift mapping in either reconvert level — outer default.

Common situations: Sinking complex-type payloads into Redshift with auto-create enabled; Redshift lacks native MAP/ROW so schema generation fails at startup.

Related errors


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