{"record":{"id":"a68eab40b9f77438","repo":"dbt-labs/dbt-core","slug":"update-tblproperties-for-uniform-iceberg-config-m","errorCode":null,"errorMessage":"update_tblproperties_for_uniform_iceberg: config.model is required: {e}","messagePattern":"update_tblproperties_for_uniform_iceberg: config\\.model is required: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/adapter/mod.rs","lineNumber":2882,"sourceCode":"        match &self.inner {\n            Typed { adapter, .. } => {\n                if adapter.adapter_type() != AdapterType::Databricks {\n                    unimplemented!(\n                        \"update_tblproperties_for_uniform_iceberg is only supported in Databricks\"\n                    )\n                }\n\n                let iter = ArgsIter::new(\n                    \"update_tblproperties_for_uniform_iceberg\",\n                    &[\"config\"],\n                    args,\n                );\n                let config_val = iter.next_arg::<&Value>()?;\n                let tblproperties_val = iter.next_kwarg::<Option<Value>>(\"tblproperties\")?;\n                iter.finish()?;\n\n                let model_val = config_val.get_attr(\"model\").map_err(|e| {\n                    minijinja::Error::new(\n                        minijinja::ErrorKind::InvalidArgument,\n                        format!(\n                            \"update_tblproperties_for_uniform_iceberg: config.model is required: {e}\"\n                        ),\n                    )\n                })?;\n\n                let config = minijinja_value_to_typed_struct::<ModelConfig>(config_val.clone())\n                    .map_err(|e| {\n                        minijinja::Error::new(\n                            minijinja::ErrorKind::SerdeDeserializeError,\n                            e.to_string(),\n                        )\n                    })?;\n                let node = minijinja_value_to_typed_struct::<InternalDbtNodeWrapper>(model_val)\n                    .map_err(|e| {\n                        minijinja::Error::new(\n                            minijinja::ErrorKind::SerdeDeserializeError,","sourceCodeStart":2864,"sourceCodeEnd":2900,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/adapter/mod.rs#L2864-L2900","documentation":"Raised in `update_tblproperties_for_uniform_iceberg` when `config.get_attr(\"model\")` fails, meaning the config object passed in has no `model` attribute. The function requires config.model to locate the node whose table properties should be updated, so a config without this attribute is rejected with InvalidArgument.","triggerScenarios":"Calling `update_tblproperties_for_uniform_iceberg(config, tblproperties=...)` where config is a dict or object lacking a `model` key/attribute, or where `model` was removed/renamed in the caller's construction of config.","commonSituations":"Hand-building a config object in a uniform/iceberg macro and forgetting the model reference; passing a generic ModelConfig-like dict that omits model; version changes where the attribute moved.","solutions":["Ensure the config object includes a `model` attribute referencing the model node","Pass the model's real config (model.config) which carries the model reference, or add model=<node> explicitly","Verify with a guard like config.get('model') before calling","Check the underlying error text (rendered after the prefix) for the exact attribute failure"],"exampleFix":"// before (Jinja)\n{{ update_tblproperties_for_uniform_iceberg({'tblproperties_option': x}, tblproperties=p) }}\n// after\n{{ update_tblproperties_for_uniform_iceberg(config, tblproperties=p) }}  // config.model present","handlingStrategy":"validation","validationCode":"{% if config is not mapping or config.get('model') is none %}\n  {{ exceptions.raise_compiler_error(\"config.model is required for update_tblproperties_for_uniform_iceberg\") }}\n{% endif %}","typeGuard":null,"tryCatchPattern":"{% set cfg = config if (config is mapping and config.get('model')) else {'model': model} %}\n{{ update_tblproperties_for_uniform_iceberg(cfg, tblproperties=p) }}","preventionTips":["Always derive config from model.config so model is present","Guard config.get('model') before calling uniform/iceberg helpers","Keep uniform macros in sync with config schema changes"],"tags":["jinja","adapter","uniform","iceberg","missing-attribute"],"backgroundTag":"missing-required-config-field","analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}