{"record":{"id":"9e41721ee2f324d7","repo":"risingwavelabs/risingwave","slug":"variant-is-not-supported-yet","errorCode":null,"errorMessage":"variant is not supported yet","messagePattern":"variant is not supported yet","errorType":"validation","errorClass":"SinkError::DynamoDb","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/dynamodb.rs","lineNumber":364,"sourceCode":"    let attr = match data_type {\n        DataType::Int16\n        | DataType::Int32\n        | DataType::Int64\n        | DataType::Int256\n        | DataType::Float32\n        | DataType::Float64\n        | DataType::Decimal\n        | DataType::Serial => AttributeValue::N(scalar_ref.to_text_with_type(data_type)),\n        // TODO: jsonb as dynamic type (https://github.com/risingwavelabs/risingwave/issues/11699)\n        DataType::Varchar\n        | DataType::Interval\n        | DataType::Date\n        | DataType::Time\n        | DataType::Timestamp\n        | DataType::Timestamptz\n        | DataType::Jsonb => AttributeValue::S(scalar_ref.to_text_with_type(data_type)),\n        DataType::Variant => {\n            return Err(SinkError::DynamoDb(anyhow!(\"variant is not supported yet\")));\n        }\n        DataType::Boolean => AttributeValue::Bool(scalar_ref.into_bool()),\n        DataType::Bytea => AttributeValue::B(Blob::new(scalar_ref.into_bytea())),\n        DataType::List(lt) => {\n            let list_attr = scalar_ref\n                .into_list()\n                .iter()\n                .map(|x| map_data(x, lt.elem()))\n                .collect::<Result<Vec<_>>>()?;\n            AttributeValue::L(list_attr)\n        }\n        DataType::Struct(st) => {\n            let mut map = HashMap::with_capacity(st.len());\n            for (sub_datum_ref, (name, data_type)) in scalar_ref\n                .into_struct()\n                .iter_fields_ref()\n                .zip_eq_debug(st.iter())\n            {","sourceCodeStart":346,"sourceCodeEnd":382,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/dynamodb.rs#L346-L382","documentation":"The DynamoDB sink serializes RisingWave rows into DynamoDB AttributeValues. The Variant data type (arbitrary semi-structured JSON) has no direct DynamoDB mapping implemented in this connector, so map_data rejects it explicitly.","triggerScenarios":"A sink's materialized view/table contains a column of type VARIANT and a row is formatted for writing to DynamoDB.","commonSituations":"Ingesting semi-structured JSON payloads into a VARIANT column and then sinking that table to DynamoDB; schema changes that add a VARIANT column to an existing DynamoDB-sunk relation.","solutions":["Change the source column to JSONB, which the sink serializes as a DynamoDB string via to_text_with_type.","Cast the VARIANT column to JSONB (or VARCHAR) in the materialized view feeding the sink.","Exclude the VARIANT column from the sink's plan (sink only the needed scalar columns).","Await/track connector support for Variant in the DynamoDB sink."],"exampleFix":"// before\nCREATE MATERIALIZED VIEW mv AS SELECT payload::VARIANT AS data FROM src;\nCREATE SINK s FROM mv WITH (connector='dynamodb', table='events');\n// after\nCREATE MATERIALIZED VIEW mv AS SELECT payload::JSONB AS data FROM src;\nCREATE SINK s FROM mv WITH (connector='dynamodb', table='events');","handlingStrategy":"validation","validationCode":"-- ensure no VARIANT columns before sinking to DynamoDB\nSELECT count(*) FROM rw_catalog.rw_columns WHERE relation_id = <mv_id> AND data_type = 'VARIANT';","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Cast VARIANT to JSONB or VARCHAR in the materialized view feeding the sink.","Check the sink relation's schema for unsupported types (VARIANT) at design time.","Keep semi-structured data as JSONB for DynamoDB sinks."],"tags":["dynamodb","sink","unsupported-type","data-type","variant"],"backgroundTag":"unsupported-operation","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"}