risingwavelabs/risingwave · error · ConnectorError

POINT type not supported

Error message

POINT type not supported

What it means

mysql_type_to_rw_type maps MySQL column types to RisingWave types and refuses types RW cannot represent or consume from CDC. When the MySQL schema contains a POINT (spatial) column, the mapper aborts with this error instead of producing a DataType. The type is rejected early so table creation/schema-change parsing fails before any data flows.

Source

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

        ColumnType::Binary(_) | ColumnType::Varbinary(_) => DataType::Bytea,
        ColumnType::Text(_)
        | ColumnType::TinyText(_)
        | ColumnType::MediumText(_)
        | ColumnType::LongText(_) => DataType::Varchar,
        ColumnType::Blob(_)
        | ColumnType::TinyBlob
        | ColumnType::MediumBlob
        | ColumnType::LongBlob => DataType::Bytea,
        ColumnType::Enum(_) => DataType::Varchar,
        ColumnType::Json => DataType::Jsonb,
        ColumnType::Set(_) => {
            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());

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Drop or exclude the POINT column from the CDC table definition (create a view/replica table without spatial columns and CDC that).
  2. Cast the POINT column to a textual form upstream (e.g. ST_AsText(geom) via generated column) so it maps to VARCHAR.
  3. If spatial support is needed, file/vote for a RisingWave feature request; alternatively land the data via a non-CDC connector that serializes geometry to WKT.
  4. Check for a newer RisingWave release that may have added spatial type support for MySQL CDC.

Example fix

// before (upstream MySQL)
CREATE TABLE places (id INT PRIMARY KEY, loc POINT NOT NULL);
// after
CREATE TABLE places (id INT PRIMARY KEY, loc TEXT AS (ST_AsText(loc)));
Defensive patterns

Strategy: validation

Validate before calling

// Before creating a MySQL CDC table, check the upstream schema:
let unsupported = ["POINT", "GEOMETRY", "LINESTRING", "POLYGON", "MULTIPOINT", "MULTILINESTRING", "MULTIPOLYGON", "GEOMETRYCOLLECTION"];
for col in mysql_columns {
    if unsupported.iter().any(|t| col.data_type.eq_ignore_ascii_case(t)) {
        return Err(format!("column {} has unsupported spatial type {}", col.name, col.data_type));
    }
}

Try / catch

match create_mysql_cdc_table().await {
    Err(e) if e.to_string().contains("type not supported") => {
        eprintln!("Drop or convert spatial column before CDC: {e}");
    }
    Err(e) => return Err(e),
    Ok(t) => t,
}

Prevention

When it happens

Trigger: Creating a CDC table or shared source whose upstream MySQL table has a column of MySQL type POINT (or running parse_schema_change over such a DDL); also triggered by the test path test_mysql_serial_maps_as_unsigned_bigint if a POINT column is present.

Common situations: Upstream MySQL tables using spatial features (e.g. location/geofencing tables with POINT columns from ORM migrations like Django GeoDjango or Rails with postgis-style geometry); users attempt `CREATE TABLE ... WITH ( connector = 'mysql-cdc' )` against such tables.

Related errors


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