{"record":{"id":"a17550db93e14249","repo":"risingwavelabs/risingwave","slug":"don-t-support-map","errorCode":null,"errorMessage":"Don't support Map","messagePattern":"Don't support Map","errorType":"validation","errorClass":"SinkError::BigQuery","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/big_query.rs","lineNumber":1013,"sourceCode":"            return Ok((field, Some(sub_proto)));\n        }\n        DataType::List(l) => {\n            let (mut field, proto) = build_protobuf_field(l.elem(), index, name)?;\n            field.label = Some(field_descriptor_proto::Label::Repeated.into());\n            return Ok((field, proto));\n        }\n        DataType::Bytea => field.r#type = Some(field_descriptor_proto::Type::Bytes.into()),\n        DataType::Jsonb => field.r#type = Some(field_descriptor_proto::Type::String.into()),\n        DataType::Variant => {\n            return Err(SinkError::BigQuery(anyhow::anyhow!(\"Don't support Variant\")));\n        }\n        DataType::Serial => field.r#type = Some(field_descriptor_proto::Type::Int64.into()),\n        DataType::Float32 | DataType::Int256 => {\n            return Err(SinkError::BigQuery(anyhow::anyhow!(\n                \"Don't support Float32 and Int256\"\n            )));\n        }\n        DataType::Map(_) => return Err(SinkError::BigQuery(anyhow::anyhow!(\"Don't support Map\"))),\n        DataType::Vector(_) => {\n            return Err(SinkError::BigQuery(anyhow::anyhow!(\"Don't support Vector\")));\n        }\n    }\n    Ok((field, None))\n}\n\n#[cfg(test)]\nmod test {\n\n    use std::assert_matches;\n    use std::collections::HashMap;\n\n    use risingwave_common::catalog::{Field, Schema};\n    use risingwave_common::types::{DataType, StructType};\n\n    use crate::connector_common::AwsAuthProps;\n    use crate::sink::big_query::{","sourceCodeStart":995,"sourceCodeEnd":1031,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/big_query.rs#L995-L1031","documentation":"The BigQuery sink maps each RisingWave column type to a protobuf field when building the row-encoding schema. MAP columns have no representation in this flat protobuf message, so build_protobuf_field rejects them with this error at sink creation time.","triggerScenarios":"BigQuerySinkWriter::new -> build_protobuf_schema encounters a column of DataType::Map (e.g. MAP<VARCHAR, VARCHAR>) in the sink schema.","commonSituations":"Sinking a table with map-typed columns (common with nested/complex sources like Debezium); upstream type change introducing a map column.","solutions":["Remove or flatten the MAP column before sinking (extract needed keys into scalar columns).","Cast the MAP to VARCHAR: `CAST(map_col AS varchar)` in the sink query to store it as a JSON string.","Create an upstream MV that reshapes the data (unnest/row expand) and sink that instead.","Request MAP support in the BigQuery connector if flat scalars are not viable."],"exampleFix":"// before\nCREATE SINK s FROM mv;  -- mv.attrs is map<varchar,varchar>\n// after\nCREATE SINK s AS SELECT id, CAST(attrs AS varchar) AS attrs FROM mv;","handlingStrategy":"validation","validationCode":"-- Reject Map columns before CREATE SINK:\n-- any MAP<..> column must be flattened or CAST to varchar before sinking to BigQuery.","typeGuard":null,"tryCatchPattern":"match sink_creation {\n    Err(SinkError::BigQuery(e)) if e.to_string().contains(\"Don't support Map\") => {\n        // flatten the map or CAST it to varchar in the sink SELECT and retry\n    }\n    other => other?,\n}","preventionTips":["Flatten MAP columns into scalar columns in an upstream MV before sinking.","Store maps as JSON strings (CAST(map AS varchar)) when structure is not needed in BigQuery.","Check column types in the MV schema before CREATE SINK.","Avoid connecting complex nested sources directly to the BigQuery sink without reshaping."],"tags":["bigquery","unsupported-type","schema","rust"],"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"}