risingwavelabs/risingwave · error
unsupported data type: {}, set to null
Error message
unsupported data type: {}, set to null What it means
Raised in `mysql_datum_to_rw_datum` when the RisingWave source column's DataType is one the MySQL datum decoder does not support (Vector, Interval, Struct, List, Int256, Serial, Map). The message notes the value is 'set to null' downstream, but the error itself signals that the declared source schema contains a type not mappable from MySQL CDC data.
Source
Thrown at src/connector/src/parser/mysql.rs:245
))),
},
DataType::Jsonb => {
handle_data_type!(
mysql_row,
mysql_datum_index,
column_name,
serde_json::Value,
JsonbVal
)
}
DataType::Variant
| DataType::Vector(_)
| DataType::Interval
| DataType::Struct(_)
| DataType::List(_)
| DataType::Int256
| DataType::Serial
| DataType::Map(_) => Err(anyhow!(
"unsupported data type: {}, set to null",
rw_data_type
)),
}
}
pub fn mysql_row_to_owned_row(mysql_row: &mut MysqlRow, schema: &Schema) -> OwnedRow {
let mut datums = vec![];
for i in 0..schema.fields.len() {
let rw_field = &schema.fields[i];
let name = rw_field.name.as_str();
let datum = match mysql_datum_to_rw_datum(mysql_row, i, name, &rw_field.data_type) {
Ok(val) => val,
Err(e) => {
log_error!(name, e, "parse column failed");
None
}
};View on GitHub (pinned to 6469eb736d)
Solutions
- Remove or change unsupported columns in the source DDL to MySQL-representable types (INT, VARCHAR, etc.).
- Replace SERIAL with an explicit BIGINT/AUTO_INCREMENT-mapped column; encode nested data as JSON/VARCHAR instead of STRUCT/LIST.
- Recreate the source with a supported schema and let unsupported columns be omitted.
Example fix
// before: unsupported types in MySQL CDC source tags STRUCT<a INT, b TEXT>, // after: use JSON/varchar representation tags JSONB, -- or VARCHAR storing serialized JSON
Defensive patterns
Strategy: validation
Validate before calling
-- Before CREATE SOURCE, ensure all column types are MySQL-decodable: -- supported: BOOLEAN, INT16/32/64, FLOAT32/64, DECIMAL, VARCHAR, DATE, TIME, -- TIMESTAMP, TIMESTAMPTZ, BYTEA. Reject STRUCT/LIST/INTERVAL/SERIAL/Int256/MAP.
Prevention
- Restrict MySQL CDC source DDL to supported primitive types.
- Serialize nested data as JSONB/VARCHAR instead of STRUCT/LIST.
- Review type mappings in the RisingWave MySQL CDC docs before designing schemas.
When it happens
Trigger: Creating a MySQL CDC source/table whose DDL includes an unsupported column type (e.g. STRUCT, LIST, INTERVAL, SERIAL), then ingesting rows so the decoder hits the unsupported arm of the type match.
Common situations: Copy-pasting RisingWave DDL with exotic types into a MySQL CDC source; using SERIAL/Int256 columns in an upstream-backed table; schema evolution introducing an unsupported type mid-stream.
Related errors
- unsupported PostgreSQL snapshot data type {data_type} for co
- MySQL table doesn't define the primary key
- BIT({}) type not supported
- SET type not supported
- GEOMETRY type not supported
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/cbe7d702e4cbdf53.
Report an issue: GitHub.