apache/seatunnel · warning

Unsupported SQL type

Error message

Unsupported SQL type: {}, fallback to STRING

What it means

DatabendTypeConverter.mapToDatabendType converts a SeaTunnel catalog type to a Databend SQL type string. When the SeaTunnelDataType does not match any known case it logs this warning and falls back to the Databend STRING type. The schema generated for a sink table (or type expression) will therefore use STRING for that column, which may not match the intended upstream types.

Solutions

  1. Inspect the logged sqlType to see which SeaTunnel type fell through.
  2. Explicitly cast/restructure the column in your pipeline to a supported type (STRING, ARRAY, MAP, primitives).
  3. Extend the converter's switch if you own the code, adding the missing SeaTunnelType mapping.
  4. Verify the sink schema with a manual CREATE TABLE and adjust the upstream catalog accordingly.

Example fix

// before
// converter falls through to STRING for the unsupported type
// after
SeaTunnelRowType schema = new SeaTunnelRowType(
    new String[]{"payload"},
    new SeaTunnelDataType<?>[]{BasicType.STRING_TYPE}); // cast upstream ROW -> STRING
Defensive patterns

Strategy: validation

Validate before calling

SeaTunnelDataType<?> t = catalogColumn.getColumnType();
if (t instanceof SeaTunnelRowType || t instanceof SeaTunnelMapType) {
    // confirm the converter handles this type or cast to STRING upstream
}

Type guard

if (sqlType instanceof BasicType || sqlType instanceof ArrayType || sqlType instanceof MapType) { /* handled path */ }

Prevention

When it happens

Trigger: A sink catalog containing a SeaTunnel type with no explicit Databend mapping (e.g. certain ARRAY/MAP element combos or ROW besides the handled NULL/ROW cases) reaches the default branch while building the CREATE TABLE or type expression via databendType().

Common situations: Schemas inferred from sources with types Databend cannot represent directly; upstream CDC or transforms producing SeaTunnel ROW/MAP types; version drift between SeaTunnel API types and the converter's switch.

Understand the failure class

Background: Type mismatch errors: IllegalArgumentException, TypeError and type guards across 150 open-source libraries — this error's family across 150 libraries.

Related errors


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

Appendix: source

Thrown at seatunnel-connectors-v2/connector-databend/src/main/java/org/apache/seatunnel/connectors/seatunnel/databend/util/DatabendTypeConverter.java:85

                        "DECIMAL(%d,%d)", decimalType.getPrecision(), decimalType.getScale());
            case DATE:
                return "DATE";
            case TIME:
                return "TIME";
            case TIMESTAMP:
                return "TIMESTAMP";
            case BYTES:
                return "VARBINARY";
            case ARRAY:
                return "ARRAY(STRING)";
            case MAP:
                return "MAP(STRING, STRING)";
            case NULL:
                return "NULL";
            case ROW:
                return "STRING";
            default:
                log.warn("Unsupported SQL type: {}, fallback to STRING", sqlType);
                return "STRING";
        }
    }
}

View on GitHub (pinned to cf67b549a7)