{"record":{"id":"cfef88e283925dd4","repo":"risingwavelabs/risingwave","slug":"invalid-property","errorCode":null,"errorMessage":"invalid property: {:?}","messagePattern":"invalid property: (.+?)","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/expr/macro/src/parse.rs","lineNumber":90,"sourceCode":"                parsed.state = Some(get_value()?);\n            } else if meta.path().is_ident(\"init_state\") {\n                parsed.init_state = Some(get_value()?);\n            } else if meta.path().is_ident(\"prebuild\") {\n                parsed.prebuild = Some(get_value()?);\n            } else if meta.path().is_ident(\"type_infer\") {\n                parsed.type_infer = Some(get_value()?);\n            } else if meta.path().is_ident(\"generic\") {\n                parsed.generic = Some(get_value()?);\n            } else if meta.path().is_ident(\"volatile\") {\n                parsed.volatile = true;\n            } else if meta.path().is_ident(\"deprecated\") || meta.path().is_ident(\"internal\") {\n                parsed.deprecated = true;\n            } else if meta.path().is_ident(\"rewritten\") {\n                parsed.rewritten = true;\n            } else if meta.path().is_ident(\"append_only\") {\n                parsed.append_only = true;\n            } else {\n                return Err(Error::new(\n                    meta.span(),\n                    format!(\"invalid property: {:?}\", meta.path()),\n                ));\n            }\n        }\n        Ok(parsed)\n    }\n}\n\nimpl Parse for UserFunctionAttr {\n    fn parse(input: ParseStream<'_>) -> Result<Self> {\n        let itemfn: syn::ItemFn = input.parse()?;\n        Ok(UserFunctionAttr::from(&itemfn.sig))\n    }\n}\n\nimpl From<&syn::Signature> for UserFunctionAttr {\n    fn from(sig: &syn::Signature) -> Self {","sourceCodeStart":72,"sourceCodeEnd":108,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/expr/macro/src/parse.rs#L72-L108","documentation":"The `#[function]` attribute parser accepts a fixed allowlist of keys (batch_fn, state, init_state, prebuild, type_infer, generic, volatile, deprecated, internal, rewritten, append_only). Any other key in the attribute list yields this spanned error naming the unknown path, catching misspelled or unsupported options at compile time.","triggerScenarios":"Writing an unrecognized key like `#[function(\"f(int4)\", parrallel = true)]`, `readonly`, or an option removed in a newer/older macro version.","commonSituations":"Typos in attribute names; copying attribute options from other proc-macro ecosystems (e.g. `#[derive]`-style flags); using a renamed option after a macro refactor (e.g. old names that became `internal`/`append_only`).","solutions":["Correct the key spelling to one of the supported options (batch_fn, state, init_state, prebuild, type_infer, generic, volatile, deprecated, internal, rewritten, append_only).","Remove the option if it is not needed; boolean flags like `volatile` need no value.","Check git history of src/expr/macro/src/parse.rs if following an outdated example — the option may have been renamed."],"exampleFix":"// before - misspelled option\n#[function(\"my_add(int4, int4)\", parrallel = true)]\n\n// after\n#[function(\"my_add(int4, int4)\", volatile = true)]","handlingStrategy":"validation","validationCode":"const ALLOWED_KEYS: &[&str] = &[\"batch_fn\",\"state\",\"init_state\",\"prebuild\",\"type_infer\",\"generic\",\"volatile\",\"deprecated\",\"internal\",\"rewritten\",\"append_only\"];\nfn key_allowed(k: &str) -> bool { ALLOWED_KEYS.contains(&k) }\nassert!(key_allowed(\"volatile\"));\nassert!(!key_allowed(\"parrallel\"));","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep the allowlist (parse.rs `is_ident` chain) open while writing attributes and pick names from it.","Watch for renames across versions: `internal` replaced `deprecated` in some paths; `append_only` and `rewritten` are newer flags.","Enable editor completion by checking docs of #[function] before adding options."],"tags":["proc-macro","compile-time","attribute","unknown-option"],"backgroundTag":"invalid-config-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"}