{"record":{"id":"7906a4da7839523e","repo":"risingwavelabs/risingwave","slug":"unsupported-postgres-type","errorCode":null,"errorMessage":"unsupported postgres type: {}","messagePattern":"unsupported postgres type: (.+?)","errorType":"validation","errorClass":"ConnectorError","httpStatus":null,"severity":"error","filePath":"src/connector/src/source/cdc/external/postgres.rs","lineNumber":975,"sourceCode":"        PgType::NUMERIC_ARRAY => DataType::Decimal.list(),\n        PgType::VARCHAR_ARRAY => DataType::Varchar.list(),\n        PgType::TEXT_ARRAY => DataType::Varchar.list(),\n        PgType::BYTEA_ARRAY => DataType::Bytea.list(),\n        PgType::DATE_ARRAY => DataType::Date.list(),\n        PgType::TIME_ARRAY => DataType::Time.list(),\n        PgType::TIMESTAMP_ARRAY => DataType::Timestamp.list(),\n        PgType::TIMESTAMPTZ_ARRAY => DataType::Timestamptz.list(),\n        PgType::INTERVAL_ARRAY => DataType::Interval.list(),\n        PgType::JSON_ARRAY => DataType::Jsonb.list(),\n        PgType::JSONB_ARRAY => DataType::Jsonb.list(),\n        PgType::UUID_ARRAY => DataType::Varchar.list(),\n        PgType::OID => DataType::Int64,\n        PgType::OID_ARRAY => DataType::Int64.list(),\n        PgType::MONEY_ARRAY => DataType::Decimal.list(),\n        // Debezium does not implement POINT_ARRAY schema conversion.\n        // https://github.com/debezium/debezium/blob/main/debezium-connector-postgres/src/main/java/io/debezium/connector/postgresql/PostgresValueConverter.java#L339-L348\n        PgType::POINT_ARRAY => {\n            return Err(anyhow::anyhow!(\"unsupported postgres type: {}\", pg_type).into());\n        }\n        _ => {\n            return Err(anyhow::anyhow!(\"unsupported postgres type: {}\", pg_type).into());\n        }\n    };\n    Ok(data_type)\n}\n\n#[cfg(test)]\nmod tests {\n    use std::cmp::Ordering;\n    use std::collections::HashMap;\n\n    use futures::pin_mut;\n    use futures_async_stream::for_await;\n    use maplit::{convert_args, hashmap};\n    use risingwave_common::catalog::{ColumnDesc, ColumnId, Field, Schema};\n    use risingwave_common::row::OwnedRow;","sourceCodeStart":957,"sourceCodeEnd":993,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/source/cdc/external/postgres.rs#L957-L993","documentation":"`pg_type_to_rw_type` maps Postgres column types to RisingWave `DataType`s when parsing schema (including schema changes). `POINT_ARRAY` has an explicit error arm because Debezium does not implement array-of-point schema conversion, so RisingWave cannot mirror it. The error is a deliberate 'known unsupported' case, separate from the generic fallback arm.","triggerScenarios":"Calling `pg_type_to_rw_type` (via `parse_schema_change`) on a table column of Postgres type `POINT[]`, or a schema-change event introducing such a column.","commonSituations":"CDC-enabled Postgres tables using PostGIS/geometry point arrays; adding a `POINT[]` column during a cdc source's lifetime; upstream applications storing coordinates as arrays of points.","solutions":["Store points as a different representation, e.g. `TEXT`, `JSONB`, or two `DOUBLE PRECISION` columns.","Exclude the unsupported column from the CDC table if possible (view or narrower table).","Handle the schema-change event by ignoring/dropping the column upstream.","Await/impl Debezium support for POINT_ARRAY and extend the mapping in `pg_type_to_rw_type`."],"exampleFix":"// before\nALTER TABLE places ADD COLUMN vertices POINT[];\n// after\nALTER TABLE places ADD COLUMN vertices JSONB;","handlingStrategy":"validation","validationCode":"-- Ensure no POINT[] columns exist before enabling CDC on a Postgres table\nSELECT column_name FROM information_schema.columns\n WHERE table_schema = ? AND table_name = ? AND udt_name = 'point';","typeGuard":null,"tryCatchPattern":"match pg_type_to_rw_type(pg_type) {\n    Err(e) if e.to_string().contains(\"unsupported postgres type\") => {\n        // skip or remap the column, or abort schema parsing deliberately\n    },\n    r => r,\n}","preventionTips":["Avoid PostGIS point arrays on CDC-replicated tables.","Prefer JSONB or paired float columns for coordinate data.","Screen table schemas for Debezium-unsupported types before enabling CDC."],"tags":["cdc","postgres","unsupported-type","schema"],"backgroundTag":"unsupported-enum-value","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}