risingwavelabs/risingwave · error · ConnectorError

MULTI LINE STRING type not supported

Error message

MULTI LINE STRING type not supported

What it means

MULTILINESTRING is not representable in RisingWave's CDC schema mapping, so the mapper raises this error during type conversion. It prevents the table/source from being created with unsupported geometry.

Source

Thrown at src/connector/src/source/cdc/external/mysql.rs:438

            return Err(anyhow!("SET type not supported").into());
        }
        ColumnType::Geometry(_) => {
            return Err(anyhow!("GEOMETRY type not supported").into());
        }
        ColumnType::Point(_) => {
            return Err(anyhow!("POINT type not supported").into());
        }
        ColumnType::LineString(_) => {
            return Err(anyhow!("LINE string type not supported").into());
        }
        ColumnType::Polygon(_) => {
            return Err(anyhow!("POLYGON type not supported").into());
        }
        ColumnType::MultiPoint(_) => {
            return Err(anyhow!("MULTI POINT type not supported").into());
        }
        ColumnType::MultiLineString(_) => {
            return Err(anyhow!("MULTI LINE STRING type not supported").into());
        }
        ColumnType::MultiPolygon(_) => {
            return Err(anyhow!("MULTI POLYGON type not supported").into());
        }
        ColumnType::GeometryCollection(_) => {
            return Err(anyhow!("GEOMETRY COLLECTION type not supported").into());
        }
        ColumnType::Unknown(_) => {
            return Err(anyhow!("Unknown MySQL data type").into());
        }
    };

    Ok(dtype)
}

pub struct MySqlExternalTableReader {
    rw_schema: Schema,
    pk_indices: Vec<usize>,

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Drop the column from the replicated table.
  2. Serialize to WKT text upstream and replicate the text form.
  3. Use a batch/non-CDC connector for geometry-heavy tables.
  4. Check RisingWave releases for spatial support.

Example fix

// before
CREATE TABLE networks (id INT PRIMARY KEY, lines MULTILINESTRING);
// after
CREATE TABLE networks (id INT PRIMARY KEY, lines_wkt TEXT AS (ST_AsText(lines)));
Defensive patterns

Strategy: validation

Validate before calling

if col.data_type.eq_ignore_ascii_case("MULTILINESTRING") {
    return Err(format!("column '{}' is MULTILINESTRING; unsupported for MySQL CDC", col.name));
}

Try / catch

match create_mysql_cdc_table().await {
    Err(e) if e.to_string().contains("MULTI LINE STRING") => eprintln!("Convert MULTILINESTRING to WKT text upstream"),
    other => other?,
}

Prevention

When it happens

Trigger: parse_schema_change or connect sees a MULTILINESTRING column in the MySQL table schema.

Common situations: Route networks, river/highway sets in GIS tables; CDC pipeline fails at creation or when such a column is added upstream.

Related errors


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/fbe60ad699e7df7d. Report an issue: GitHub.