{"record":{"id":"c80a073e4caaaad0","repo":"dbt-labs/dbt-core","slug":"list-relations-schemas-by-patterns-for-redshift","errorCode":null,"errorMessage":"list_relations_schemas_by_patterns for Redshift","messagePattern":"list_relations_schemas_by_patterns for Redshift","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/metadata/redshift/mod.rs","lineNumber":616,"sourceCode":"            Ok(table_schema)\n        };\n        let reduce_f = |acc: &mut Acc,\n                        relation: Arc<dyn BaseRelation>,\n                        schema: AdapterResult<Arc<Schema>>|\n         -> Result<(), Cancellable<AdapterError>> {\n            acc.insert(relation.semantic_fqn(), schema);\n            Ok(())\n        };\n        let map_reduce = MapReduce::new(factory, Box::new(map_f), Box::new(reduce_f), None);\n        map_reduce.run(Arc::new(relations.to_vec()), token)\n    }\n\n    fn run_by_patterns(\n        &self,\n        _patterns: Arc<Vec<RelationPattern>>,\n        _token: CancellationToken,\n    ) -> AsyncAdapterResult<'static, Vec<(String, AdapterResult<RelationSchemaPair>)>> {\n        todo!(\"list_relations_schemas_by_patterns for Redshift\")\n    }\n}\n\n// This list was created using brute force since I can't find docs for which tables support it\nconst TABLES_WITH_OID: [&str; 10] = [\n    \"pg_cast\",\n    \"pg_opclass\",\n    \"pg_class\",\n    \"pg_constraint\",\n    \"pg_database\",\n    \"pg_language\",\n    \"pg_namespace\",\n    \"pg_operator\",\n    \"pg_proc\",\n    \"pg_type\",\n];\n\npub(crate) struct RedshiftFreshnessStrategy {","sourceCodeStart":598,"sourceCodeEnd":634,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/metadata/redshift/mod.rs#L598-L634","documentation":"This is a Rust `todo!()` panic: Redshift's `run_by_patterns` (the implementation behind list_relations_schemas_by_patterns) is unimplemented, so pattern-based relation-schema lookups on Redshift panic with 'list_relations_schemas_by_patterns for Redshift'. The trait method exists but the Redshift-specific batch/pattern query was never written.","triggerScenarios":"Calling list_relations_schemas_by_patterns on a Redshift adapter, which dispatches to `run_by_patterns` at crates/dbt-adapter/src/metadata/redshift/mod.rs:616; the stub panics immediately for any `Arc<Vec<RelationPattern>>` input.","commonSituations":"dbt features that resolve relations by name pattern (e.g. selector patterns like 'stg_*') against Redshift before the pattern API is implemented there; every pattern-resolution call panics regardless of cluster health.","solutions":["Resolve relations without pattern matching (enumerate schemas/relations via implemented Redshift endpoints) and filter in the caller","Implement run_by_patterns, reusing Redshift's existing relation listing and applying pattern predicates per schema","Upgrade/pin to a dbt-adapter version where Redshift pattern-based schema listing is implemented","Block pattern-based selection for Redshift early with an explicit unsupported-feature error"],"exampleFix":"// before\nfn run_by_patterns(&self, _patterns: Arc<Vec<RelationPattern>>, _token: CancellationToken) -> ... {\n    todo!(\"list_relations_schemas_by_patterns for Redshift\")\n}\n// after\nfn run_by_patterns(&self, patterns: Arc<Vec<RelationPattern>>, token: CancellationToken) -> ... {\n    self.list_and_match_patterns(conn, &patterns, token)\n}","handlingStrategy":"fallback","validationCode":"if !adapter.capabilities().patterns_supported {\n    return Err(\"Redshift does not support list_relations_schemas_by_patterns yet\".into());\n}","typeGuard":"fn supports_patterns(a: &dyn Adapter) -> bool { a.capabilities().run_by_patterns }","tryCatchPattern":"match redshift_adapter.run_by_patterns(patterns, token).await {\n    Ok(pairs) => pairs,\n    Err(_) => list_redshift_relations_then_match(patterns).await,\n}","preventionTips":["Use plain relation listing plus local pattern matching on Redshift","Gate pattern-based selectors by adapter capability","Keep capability metadata in sync with implemented trait methods","Test each adapter's pattern endpoints in CI to catch stubs early"],"tags":["rust","todo-panic","redshift","unimplemented"],"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-14T16:17:12.679Z"}