{"record":{"id":"4fcdf084e5e9efea","repo":"dbt-labs/dbt-core","slug":"available-only-for-bigquery-and-redshift","errorCode":null,"errorMessage":"Available only for BigQuery and Redshift","messagePattern":"Available only for BigQuery and Redshift","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/relation/relation_impl.rs","lineNumber":1329,"sourceCode":"                        return Err(minijinja::Error::new(\n                            minijinja::ErrorKind::InvalidOperation,\n                            \"Expected a model node\",\n                        ));\n                    }\n                };\n                let desired_state =\n                    crate::relation::bigquery::config::relation_types::materialized_view::new_loader()\n                        .from_local_config(local_config.as_ref())?;\n\n                let changeset = RelationConfig::diff(&desired_state, current_state);\n\n                if changeset.is_empty() {\n                    Ok(none_value())\n                } else {\n                    Ok(Value::from_object(changeset))\n                }\n            }\n            _ => unimplemented!(\"Available only for BigQuery and Redshift\"),\n        }\n    }\n}\n\n// FIXME(serramatutu): this should be deleted from here once Redshift Materialized\n// Views are migrated to RelationConfig v2.\nfn node_value_to_redshift_materialized_view(\n    node_value: &Value,\n) -> Result<RedshiftMaterializedViewConfig, minijinja::Error> {\n    let config_wrapper = InternalDbtNodeWrapper::deserialize(node_value).map_err(|e| {\n        minijinja::Error::new(\n            minijinja::ErrorKind::SerdeDeserializeError,\n            format!(\"Failed to deserialize InternalDbtNodeWrapper: {e}\"),\n        )\n    })?;\n\n    let model = match config_wrapper {\n        InternalDbtNodeWrapper::Model(model) => model,","sourceCodeStart":1311,"sourceCodeEnd":1347,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/relation/relation_impl.rs#L1311-L1347","documentation":"This method on the relation config computes a changeset of alterations, but only the BigQuery and Redshift arms of the match are implemented; any other adapter type falls to the catch-all and panics with unimplemented!(\"Available only for BigQuery and Redshift\"). It reflects that change-detection semantics (e.g. column/option diffs) are only defined for those two platforms.","triggerScenarios":"Invoking the changeset/alteration-diff method on a relation config whose adapter type is neither BigQuery nor Redshift — e.g. computing a column changeset on Snowflake, Databricks, or Postgres relations.","commonSituations":"Incremental materialization logic that diffs model config against the existing relation; macros shared across warehouses calling the changeset helper; adapters whose materialized-view workflows are not yet migrated to RelationConfig v2 (see the adjacent FIXME about Redshift).","solutions":["Only call the changeset method for BigQuery/Redshift relations; branch on adapter type before diffing.","For other adapters, implement platform-specific diff logic or compare relation columns/options manually.","If BigQuery/Redshift behavior is intended, verify the relation's adapter_type is set correctly (e.g. fix an adapter-type mislabeling in the profile)."],"exampleFix":"// before\nlet changeset = relation_config.changeset();\n\n// after\nlet changeset = match adapter_type {\n    AdapterType::Bigquery | AdapterType::Redshift => relation_config.changeset(),\n    _ => None,\n};","handlingStrategy":"validation","validationCode":"let supported = matches!(adapter_type, AdapterType::Bigquery | AdapterType::Redshift);\nif !supported { /* skip changeset diff */ }","typeGuard":"fn supports_changeset(t: &AdapterType) -> bool { matches!(t, AdapterType::Bigquery | AdapterType::Redshift) }","tryCatchPattern":null,"preventionTips":["Gate alteration-diff logic on BigQuery/Redshift adapter types.","Implement per-adapter diff strategies for incremental materializations.","Keep shared macros free of changeset calls unless all target adapters support it."],"tags":["unimplemented","adapter-compat","bigquery","redshift"],"backgroundTag":"method-not-implemented","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"}