risingwavelabs/risingwave · error · ConnectorError
unsupported postgres type: {}
Error message
unsupported postgres type: {} What it means
`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.
Source
Thrown at src/connector/src/source/cdc/external/postgres.rs:975
PgType::NUMERIC_ARRAY => DataType::Decimal.list(),
PgType::VARCHAR_ARRAY => DataType::Varchar.list(),
PgType::TEXT_ARRAY => DataType::Varchar.list(),
PgType::BYTEA_ARRAY => DataType::Bytea.list(),
PgType::DATE_ARRAY => DataType::Date.list(),
PgType::TIME_ARRAY => DataType::Time.list(),
PgType::TIMESTAMP_ARRAY => DataType::Timestamp.list(),
PgType::TIMESTAMPTZ_ARRAY => DataType::Timestamptz.list(),
PgType::INTERVAL_ARRAY => DataType::Interval.list(),
PgType::JSON_ARRAY => DataType::Jsonb.list(),
PgType::JSONB_ARRAY => DataType::Jsonb.list(),
PgType::UUID_ARRAY => DataType::Varchar.list(),
PgType::OID => DataType::Int64,
PgType::OID_ARRAY => DataType::Int64.list(),
PgType::MONEY_ARRAY => DataType::Decimal.list(),
// Debezium does not implement POINT_ARRAY schema conversion.
// https://github.com/debezium/debezium/blob/main/debezium-connector-postgres/src/main/java/io/debezium/connector/postgresql/PostgresValueConverter.java#L339-L348
PgType::POINT_ARRAY => {
return Err(anyhow::anyhow!("unsupported postgres type: {}", pg_type).into());
}
_ => {
return Err(anyhow::anyhow!("unsupported postgres type: {}", pg_type).into());
}
};
Ok(data_type)
}
#[cfg(test)]
mod tests {
use std::cmp::Ordering;
use std::collections::HashMap;
use futures::pin_mut;
use futures_async_stream::for_await;
use maplit::{convert_args, hashmap};
use risingwave_common::catalog::{ColumnDesc, ColumnId, Field, Schema};
use risingwave_common::row::OwnedRow;View on GitHub (pinned to 6469eb736d)
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`.
Example fix
// before ALTER TABLE places ADD COLUMN vertices POINT[]; // after ALTER TABLE places ADD COLUMN vertices JSONB;
Defensive patterns
Strategy: validation
Validate before calling
-- Ensure no POINT[] columns exist before enabling CDC on a Postgres table SELECT column_name FROM information_schema.columns WHERE table_schema = ? AND table_name = ? AND udt_name = 'point';
Try / catch
match pg_type_to_rw_type(pg_type) {
Err(e) if e.to_string().contains("unsupported postgres type") => {
// skip or remap the column, or abort schema parsing deliberately
},
r => r,
} Prevention
- 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.
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- unsupported PostgreSQL snapshot data type {data_type} for co
- Postgres table should define the primary key for non-append-
- {:?} data type is not supported
- unsupported data type: {}, set to null
- unsupported PostgreSQL snapshot list element type {elem}
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/7906a4da7839523e.
Report an issue: GitHub.