{"record":{"id":"140f5b4cbd856d6d","repo":"risingwavelabs/risingwave","slug":"don-t-support-variant","errorCode":null,"errorMessage":"Don't support Variant","messagePattern":"Don't support Variant","errorType":"validation","errorClass":"SinkError::BigQuery","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/big_query.rs","lineNumber":1005,"sourceCode":"        DataType::Timestamp => field.r#type = Some(field_descriptor_proto::Type::String.into()),\n        DataType::Timestamptz => field.r#type = Some(field_descriptor_proto::Type::String.into()),\n        DataType::Interval => field.r#type = Some(field_descriptor_proto::Type::String.into()),\n        DataType::Struct(s) => {\n            field.r#type = Some(field_descriptor_proto::Type::Message.into());\n            let name = format!(\"Struct{}\", name);\n            let sub_proto = build_protobuf_schema(s.iter(), name.clone())?;\n            field.type_name = Some(name);\n            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","sourceCodeStart":987,"sourceCodeEnd":1023,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/big_query.rs#L987-L1023","documentation":"When building the protobuf schema used to encode rows for the BigQuery Storage Write API, each RisingWave column type is mapped to a protobuf field type. VARIANT has no protobuf mapping in this sink, so building the schema aborts with this error during sink creation.","triggerScenarios":"BigQuerySinkWriter::new -> build_protobuf_schema -> build_protobuf_field encounters a column of DataType::Variant in the sink schema.","commonSituations":"A source/table containing VARIANT columns is connected to a BigQuery sink; a VARIANT column was added to the MV after the sink was planned.","solutions":["Cast the VARIANT column to JSONB or VARCHAR in the sink query.","Exclude the VARIANT column via an explicit SELECT column list in `CREATE SINK ... AS SELECT`.","Use a different sink target that supports VARIANT, or file an issue to add VARIANT support to the BigQuery connector.","Validate the sink schema early in dev to catch unsupported types before production."],"exampleFix":"// before\nCREATE SINK s FROM mv;  -- mv contains a variant column\n// after\nCREATE SINK s AS SELECT id, event_data::jsonb AS event_data FROM mv;","handlingStrategy":"validation","validationCode":"-- Reject VARIANT columns before CREATE SINK:\n-- SELECT count(*) FROM <mv> ... ; or inspect the schema:\n-- any column with data_type 'variant' will fail BigQuery sink creation.","typeGuard":null,"tryCatchPattern":"match sink_creation {\n    Err(SinkError::BigQuery(e)) if e.to_string().contains(\"Don't support Variant\") => {\n        // cast the variant column to jsonb/varchar in the sink query and retry\n    }\n    other => other?,\n}","preventionTips":["Never route VARIANT columns to the BigQuery sink; cast to JSONB/VARCHAR upstream.","Check column types in the MV schema before CREATE SINK.","Re-validate sinks after adding columns to upstream MVs.","Keep a list of supported types (BigQuery sink rejects Variant, Float32, Int256, Map, Vector)."],"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"}