{"record":{"id":"d74aa6be5773b7bc","repo":"risingwavelabs/risingwave","slug":"sink-type-unsupported","errorCode":null,"errorMessage":"sink type unsupported: {}","messagePattern":"sink type unsupported: (.+?)","errorType":"validation","errorClass":"SinkError::Config","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/catalog/mod.rs","lineNumber":149,"sourceCode":"impl Display for SinkEncode {\n    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {\n        write!(f, \"{:?}\", self)\n    }\n}\n\nimpl SinkFormatDesc {\n    pub fn from_legacy_type(connector: &str, r#type: &str) -> Result<Option<Self>, SinkError> {\n        use crate::sink::Sink as _;\n        use crate::sink::kafka::KafkaSink;\n        use crate::sink::kinesis::KinesisSink;\n        use crate::sink::pulsar::PulsarSink;\n\n        let format = match r#type {\n            SINK_TYPE_APPEND_ONLY => SinkFormat::AppendOnly,\n            SINK_TYPE_UPSERT => SinkFormat::Upsert,\n            SINK_TYPE_DEBEZIUM => SinkFormat::Debezium,\n            _ => {\n                return Err(SinkError::Config(anyhow!(\n                    \"sink type unsupported: {}\",\n                    r#type\n                )));\n            }\n        };\n        let encode = match connector {\n            KafkaSink::SINK_NAME | KinesisSink::SINK_NAME | PulsarSink::SINK_NAME => {\n                SinkEncode::Json\n            }\n            _ => return Ok(None),\n        };\n        Ok(Some(Self {\n            format,\n            encode,\n            options: Default::default(),\n            secret_refs: Default::default(),\n            key_encode: None,\n            connection_id: None,","sourceCodeStart":131,"sourceCodeEnd":167,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/catalog/mod.rs#L131-L167","documentation":"Legacy sink creation maps the user-provided `type` option (append-only, upsert, debezium) to a SinkFormat. Any other value is rejected with this config error, since the legacy connector option only supports the three known sink types.","triggerScenarios":"CREATE SINK ... WITH (type='<something else>') where the value is not one of the SINK_TYPE_APPEND_ONLY / SINK_TYPE_UPSERT / SINK_TYPE_DEBEZIUM constants.","commonSituations":"Typo in the type option (e.g. 'append_only', 'upsert ', 'insert'), copying configs from other systems, or using newer format names in the legacy `type` field.","solutions":["Set type to one of: 'append-only', 'upsert', or 'debezium'.","Drop the legacy `type` option and use the explicit `format`/`encode` options instead.","Check the sink connector's documentation for valid type values."],"exampleFix":"// before\nWITH (connector='kafka', type='append_only', ...)\n// after\nWITH (connector='kafka', type='append-only', ...) // or format='append_only' encode='json'","handlingStrategy":"validation","validationCode":"const LEGACY_SINK_TYPES = ['append-only', 'upsert', 'debezium'];\nif (!LEGACY_SINK_TYPES.includes(props.type)) throw new Error(`Invalid sink type: ${props.type}. Must be one of ${LEGACY_SINK_TYPES.join(', ')}`);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use only the documented literal values for the legacy `type` option.","Prefer the modern format/encode options over the legacy `type` field.","Trim/normalize user-provided type values (hyphen vs underscore) before submitting DDL."],"tags":["sink","config","legacy-options","invalid-value"],"backgroundTag":"invalid-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"}