{"record":{"id":"18ebff9963b61889","repo":"risingwavelabs/risingwave","slug":"vector-is-not-supported-yet","errorCode":null,"errorMessage":"vector is not supported yet","messagePattern":"vector is not supported yet","errorType":"validation","errorClass":"SinkError::DynamoDb","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/dynamodb.rs","lineNumber":392,"sourceCode":"            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            {\n                let attr = map_data(sub_datum_ref, data_type)?;\n                map.insert(name.to_owned(), attr);\n            }\n            AttributeValue::M(map)\n        }\n        DataType::Map(_m) => {\n            return Err(SinkError::DynamoDb(anyhow!(\"map is not supported yet\")));\n        }\n        DataType::Vector(_) => {\n            return Err(SinkError::DynamoDb(anyhow!(\"vector is not supported yet\")));\n        }\n    };\n    Ok(attr)\n}\n\nfn rw_pk_names(schema: &Schema, pk_indices: &[usize]) -> Result<Vec<String>> {\n    pk_indices\n        .iter()\n        .map(|pk_idx| {\n            schema\n                .fields()\n                .get(*pk_idx)\n                .map(|field| field.name.clone())\n                .ok_or_else(|| {\n                    SinkError::DynamoDb(anyhow!(\n                        \"RisingWave primary key column index {} is out of range\",\n                        pk_idx\n                    ))","sourceCodeStart":374,"sourceCodeEnd":410,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/dynamodb.rs#L374-L410","documentation":"The DynamoDB sink's map_data has no implementation for RisingWave VECTOR-typed columns, so it fails the row with this explicit error. Vector columns (embedding data) have no DynamoDB AttributeValue representation in this connector.","triggerScenarios":"A row with a VECTOR-typed column is formatted for the DynamoDB sink (format_row -> map_data reaches DataType::Vector arm).","commonSituations":"Embedding pipelines storing vectors in RisingWave whose tables are also sunk to DynamoDB; adding a vector column for AI workloads to an existing DynamoDB-sunk table.","solutions":["Exclude the VECTOR column from the sinked relation (sink only non-vector columns).","Cast the vector to JSONB or VARCHAR in the materialized view if a text representation is acceptable.","Store vectors in a purpose-built store (e.g. a vector sink/index) instead of DynamoDB.","Track/await Vector support in the DynamoDB sink."],"exampleFix":"// before\nCREATE MATERIALIZED VIEW mv AS SELECT id, embedding FROM docs;\nCREATE SINK s FROM mv WITH (connector='dynamodb', table='docs');\n// after\nCREATE MATERIALIZED VIEW mv AS SELECT id, embedding::JSONB AS embedding FROM docs;","handlingStrategy":"validation","validationCode":"-- ensure no VECTOR columns before sinking to DynamoDB\nSELECT count(*) FROM rw_catalog.rw_columns WHERE relation_id = <mv_id> AND data_type LIKE 'VECTOR%';","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Sink embeddings separately (JSONB cast or a vector-appropriate store).","Exclude VECTOR columns from relations sunk to DynamoDB.","Check connector type-support matrix when adding vector/AI columns to sunk tables."],"tags":["dynamodb","sink","unsupported-type","vector","data-type"],"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"}