{"record":{"id":"4c03d6c43c94f32f","repo":"risingwavelabs/risingwave","slug":"cannot-find-member-name-please-set-it","errorCode":null,"errorMessage":"Cannot find `{MEMBER_NAME}`,please set it.","messagePattern":"Cannot find `(.+?)`,please set it\\.","errorType":"validation","errorClass":"SinkError","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/formatter/mod.rs","lineNumber":337,"sourceCode":"        match redis_value_type {\n            REDIS_VALUE_TYPE_STRING => {\n                let option_name = match pk_indices {\n                    Some(_) => KEY_FORMAT,\n                    None => VALUE_FORMAT,\n                };\n                let template = b.format_desc.options.get(option_name).ok_or_else(|| {\n                    SinkError::Config(anyhow!(\"Cannot find '{option_name}',please set it.\"))\n                })?;\n                Ok(TemplateEncoder::new_string(\n                    b.schema,\n                    pk_indices,\n                    template.clone(),\n                ))\n            }\n            REDIS_VALUE_TYPE_GEO => match pk_indices {\n                Some(_) => {\n                    let member_name = b.format_desc.options.get(MEMBER_NAME).ok_or_else(|| {\n                        SinkError::Config(anyhow!(\"Cannot find `{MEMBER_NAME}`,please set it.\"))\n                    })?;\n                    let template = b.format_desc.options.get(KEY_FORMAT).ok_or_else(|| {\n                        SinkError::Config(anyhow!(\"Cannot find `{KEY_FORMAT}`,please set it.\"))\n                    })?;\n                    TemplateEncoder::new_geo_key(\n                        b.schema,\n                        pk_indices,\n                        member_name,\n                        template.clone(),\n                    )\n                }\n                None => {\n                    let lat_name = b.format_desc.options.get(LAT_NAME).ok_or_else(|| {\n                        SinkError::Config(anyhow!(\"Cannot find `{LAT_NAME}`, please set it.\"))\n                    })?;\n                    let lon_name = b.format_desc.options.get(LON_NAME).ok_or_else(|| {\n                        SinkError::Config(anyhow!(\"Cannot find `{LON_NAME}`,please set it.\"))\n                    })?;","sourceCodeStart":319,"sourceCodeEnd":355,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/formatter/mod.rs#L319-L355","documentation":"When `redis_value_type = 'geospatial'` and the Redis sink has a primary key, the builder needs the `member` option (the template for the sorted-set member name). If `member` is missing from the WITH options, the build fails with this SinkError::Config.","triggerScenarios":"Creating a Redis geospatial sink whose table has a primary key but omitting `member = '<template>'` from the WITH clause.","commonSituations":"Users copy a value-side geospatial sink example (which uses `latitude`/`longitude` instead of `member`) into a primary-key table, so the `member` option is never set.","solutions":["Add `member = '<template>'` to the WITH options of the geospatial sink.","Also ensure `key_format` is set, since the key branch of this code path requires it next.","Verify the sink really has a primary key; if it does not, the code expects `latitude`/`longitude` options instead."],"exampleFix":"// before\nWITH (connector='redis', redis.url='...', redis_value_type='geospatial', key_format='%s:geo');\n// after\nWITH (connector='redis', redis.url='...', redis_value_type='geospatial', key_format='%s:geo', member='%s');","handlingStrategy":"validation","validationCode":"if value_type == \"geospatial\" && has_pk && !with_options.contains_key(\"member\") {\n    return Err(\"Redis geospatial sink with PK requires `member` option\".into());\n}","typeGuard":null,"tryCatchPattern":"match result {\n    Err(e) if e.to_string().contains(\"`member`\") => {\n        eprintln!(\"Add `member = '<template>'` to WITH options: {}\", e);\n    }\n    other => other?,\n}","preventionTips":["For geospatial sinks with a primary key always set both `member` and `key_format`","Remember geospatial sinks without a PK use `latitude`/`longitude` instead of `member`","Validate WITH options before issuing CREATE SINK"],"tags":["redis","sink","geospatial","configuration"],"backgroundTag":"missing-required-option","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"}