{"record":{"id":"c0ff8adfa907ad5f","repo":"dbt-labs/dbt-core","slug":"dbtquoting-should-be-set-c0ff8a","errorCode":null,"errorMessage":"DbtQuoting should be set","messagePattern":"DbtQuoting should be set","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-schemas/src/schemas/manifest/manifest.rs","lineNumber":1280,"sourceCode":"                            schema: test.__common_attr__.schema,\n                            alias: test.__base_attr__.alias,\n                            relation_name: test.__base_attr__.relation_name,\n                            materialized: DataTestConfig::default_materialized(),\n                            static_analysis: Default::default(),\n                            static_analysis_off_reason: None,\n                            compute: test.config.compute,\n                            enabled: test.config.get_enabled_with_default(),\n                            extended_model: false,\n                            quoting: test\n                                .config\n                                .quoting\n                                .map(|mut quoting| {\n                                    quoting.default_to(&dbt_quoting);\n                                    quoting\n                                })\n                                .unwrap_or(dbt_quoting)\n                                .try_into()\n                                .expect(\"DbtQuoting should be set\"),\n                            quoting_ignore_case: false,\n                            persist_docs: None,\n                            columns: test.__base_attr__.columns,\n                            depends_on: test.__base_attr__.depends_on,\n                            refs: test.__base_attr__.refs,\n                            sources: test.__base_attr__.sources,\n                            functions: test.__base_attr__.functions,\n                            metrics: test.__base_attr__.metrics,\n                            unrendered_config: canonicalize_unrendered_config(\n                                test.__base_attr__.unrendered_config,\n                            ),\n                        },\n                        __test_attr__: DbtTestAttr {\n                            column_name: test.column_name,\n                            attached_node: test.attached_node,\n                            test_metadata: test.test_metadata,\n                            file_key_name: test.file_key_name,\n                            introspection: IntrospectionKind::None,","sourceCodeStart":1262,"sourceCodeEnd":1298,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-schemas/src/schemas/manifest/manifest.rs#L1262-L1298","documentation":"When building `NodeBaseAttributes` for generic tests, the code merges node-level quoting with the default `dbt_quoting` and converts via `.try_into().expect(\"DbtQuoting should be set\")`. The conversion is guaranteed for a fully-populated `DbtQuoting`; the panic indicates the merged quoting value failed conversion into the target representation, i.e. an incomplete or invalid quoting structure reached the builder.","triggerScenarios":"Constructing test `NodeBaseAttributes` where the merged quoting value (node quoting with `default_to(&dbt_quoting)` applied, or `dbt_quoting` itself) fails `try_into` — e.g. a partially-initialized quoting struct, a quoting value built from config with unconvertible fields, or `dbt_quoting` produced by a lossy deserialization.","commonSituations":"Custom/older configs carrying a `quoting` block shape the converter doesn't accept; artifacts deserialized across versions where quoting fields are absent; programmatic manifest construction supplying a default-empty quoting value.","solutions":["Ensure the project's `quoting:` config is a complete, valid block (all boolean fields) so `try_into` succeeds","Regenerate cached/partial-parse artifacts with the current dbt version so quoting structures deserialize fully","Replace the expect with error propagation to surface which quoting field failed conversion"],"exampleFix":"// before\n.try_into().expect(\"DbtQuoting should be set\"),\n// after\n.try_into().unwrap_or_default(),","handlingStrategy":"fallback","validationCode":"// verify quoting config is complete before manifest building\nif let Some(q) = &project.config.quoting {\n    ensure all quoting fields (database/schema/etc.) are present and boolean;\n}","typeGuard":null,"tryCatchPattern":"let quoting: DbtQuoting = std::panic::catch_unwind(|| merged.try_into()).ok()\n    .and_then(|r| r.ok())\n    .unwrap_or_else(|| dbt_quoting.clone());","preventionTips":["Keep quoting blocks in dbt_project.yml complete (all keys, boolean values)","Avoid consuming manifest artifacts across incompatible dbt versions","In tests, build DbtQuoting via its constructor rather than Default + partial mutation"],"tags":["quoting","manifest","panic","tests"],"backgroundTag":"internal-invariant-violation","analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}