{"record":{"id":"de46bc3019c8816a","repo":"risingwavelabs/risingwave","slug":"remote-sink-supports-int16-int32-int64-float32","errorCode":null,"errorMessage":"remote sink supports Int16, Int32, Int64, Float32, Float64, Boolean, Decimal, Time, Date, Interval, Jsonb, Timestamp, Timestamptz, Bytea, List and Varchar, (Es sink support Struct) got {:?}: {:?}","messagePattern":"remote sink supports Int16, Int32, Int64, Float32, Float64, Boolean, Decimal, Time, Date, Interval, Jsonb, Timestamp, Timestamptz, Bytea, List and Varchar, \\(Es sink support Struct\\) got (.+?): (.+?)","errorType":"validation","errorClass":"SinkError::Remote","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/remote.rs","lineNumber":235,"sourceCode":"                        \"Remote sink only supports list<int16, int32, int64, float, double, varchar>, got {:?}: {:?}\",\n                        col.name,\n                        col.data_type,\n                    )))\n                }\n            },\n            DataType::Struct(_) => {\n                if is_remote_es_sink(sink_name){\n                    Ok(())\n                }else{\n                    Err(SinkError::Remote(anyhow!(\n                        \"Only Es sink supports struct, got {:?}: {:?}\",\n                        col.name,\n                        col.data_type,\n                    )))\n                }\n            },\n            DataType::Vector(_) |\n            DataType::Serial | DataType::Int256 | DataType::Map(_) | DataType::Variant => Err(SinkError::Remote(anyhow!(\n                            \"remote sink supports Int16, Int32, Int64, Float32, Float64, Boolean, Decimal, Time, Date, Interval, Jsonb, Timestamp, Timestamptz, Bytea, List and Varchar, (Es sink support Struct) got {:?}: {:?}\",\n                            col.name,\n                            col.data_type,\n                        )))}})?;\n\n    let jvm = Jvm::get_or_init()?;\n    let sink_param = param.to_proto();\n\n    spawn_blocking(move || -> anyhow::Result<()> {\n        execute_with_jni_env(jvm, |env| {\n            let validate_sink_request = ValidateSinkRequest {\n                sink_param: Some(sink_param),\n            };\n            let validate_sink_request_bytes =\n                env.byte_array_from_slice(&Message::encode_to_vec(&validate_sink_request))?;\n\n            let validate_sink_response_bytes = call_static_method!(\n                env,","sourceCodeStart":217,"sourceCodeEnd":253,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/remote.rs#L217-L253","documentation":"The catch-all branch of remote sink column validation: any column of type Vector, Serial, Int256, Map, or Variant is rejected because the JVM remote sink protocol cannot serialize these types. Only the listed primitive, temporal, JSONB, Bytea, List, and Varchar types are accepted (plus Struct for Es sinks).","triggerScenarios":"CREATE SINK (remote/JVM sink) where the source table or materialized view contains a column of type VECTOR, SERIAL, INT256 (hugeint-extended), MAP, or VARIANT.","commonSituations":"Sinking a table with an auto-generated SERIAL/identity column; sinking VECTOR columns from AI/embedding workloads; sinking MAP columns built with map_from_arrays; sinking VARIANT columns from semi-structured JSON.","solutions":["Drop or exclude the unsupported column from the sink's SELECT list.","Cast the column to a supported type (e.g. SERIAL -> INT64, MAP -> JSONB/VARCHAR, VARIANT -> JSONB).","Flatten Map/Variant content into supported primitive columns.","Choose a native (non-JVM-remote) sink connector that supports the type if available."],"exampleFix":"-- before\nCREATE SINK s AS SELECT id, vec FROM embeddings WITH (connector='jdbc', ...);\n-- after (exclude or cast)\nCREATE SINK s AS SELECT id FROM embeddings WITH (connector='jdbc', ...);","handlingStrategy":"validation","validationCode":"-- list unsupported column types before sinking\nSELECT column_name, data_type\nFROM rw_catalog.rw_columns\nWHERE relation_id = 'your_mv_id'\n  AND data_type ~ 'vector|serial|int256|map|variant';","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Avoid SERIAL/VECTOR/MAP/VARIANT columns in sink source queries; cast or exclude them","Document the remote sink's supported type list in your team's sink templates","Cast SERIAL to BIGINT and MAP/VARIANT to JSONB in the sink's SELECT"],"tags":["sink","validation","data-type","unsupported-type"],"backgroundTag":"unsupported-dtype","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"}