dbt-labs/dbt-core · error
PostgresAdapter::list_relations_schemas_by_patterns
Error message
PostgresAdapter::list_relations_schemas_by_patterns
What it means
This is a Rust `todo!()` panic: `PostgresAdapter::list_relations_schemas_by_patterns_inner` is an unimplemented trait method, so requesting relation schemas by name patterns on Postgres panics with 'PostgresAdapter::list_relations_schemas_by_patterns'. It is a placeholder for a pattern-matching batch lookup that was never written.
Source
Thrown at crates/dbt-adapter/src/metadata/postgres/mod.rs:166
}
fn list_relations_schemas_inner(
&self,
_unique_id: Option<String>,
_phase: Option<ExecutionPhase>,
_relations: &[Arc<dyn BaseRelation>],
_token: CancellationToken,
) -> AsyncAdapterResult<'_, HashMap<String, AdapterResult<Arc<Schema>>>> {
let future = async move { todo!("PostgreSQL's list_relations_schemas") };
Box::pin(future)
}
fn list_relations_schemas_by_patterns_inner(
&self,
_patterns: &[RelationPattern],
_token: CancellationToken,
) -> AsyncAdapterResult<'_, Vec<(String, AdapterResult<RelationSchemaPair>)>> {
todo!("PostgresAdapter::list_relations_schemas_by_patterns")
}
fn freshness_inner(
&self,
_relations: &[Arc<dyn BaseRelation>],
_token: CancellationToken,
) -> AsyncAdapterResult<'_, BTreeMap<String, MetadataFreshness>> {
todo!("PostgresAdapter::freshness")
}
fn create_schemas_if_not_exists(
&self,
state: &State<'_, '_>,
catalog_schemas: Vec<(String, String, String)>,
) -> AdapterResult<Vec<(String, String, String, AdapterResult<()>)>> {
create_schemas_if_not_exists(&self.adapter, self, state, catalog_schemas)
}
View on GitHub (pinned to 0267ce9170)
Solutions
- Enumerate relations without pattern filtering (use implemented list endpoints) and filter client-side
- Implement list_relations_schemas_by_patterns_inner, translating patterns to LIKE/regex predicates over INFORMATION_SCHEMA.TABLES
- Upgrade/pin to a dbt-adapter version where the pattern API is implemented for Postgres
- Reject pattern-based selection on Postgres early with a clear unsupported-feature message
Example fix
// before
fn list_relations_schemas_by_patterns_inner(&self, _patterns: &[RelationPattern], _token: CancellationToken) -> ... {
todo!("PostgresAdapter::list_relations_schemas_by_patterns")
}
// after
fn list_relations_schemas_by_patterns_inner(&self, patterns: &[RelationPattern], token: CancellationToken) -> ... {
self.run_pattern_queries(conn, patterns, token)
} Defensive patterns
Strategy: fallback
Validate before calling
if patterns.is_empty() {
// skip pattern API entirely; use full listing
return list_all_schemas(adapter).await;
}
if !adapter.capabilities().patterns_supported {
return Err("pattern-based schema listing unsupported on Postgres".into());
} Type guard
fn patterns_supported(a: &dyn Adapter) -> bool { a.capabilities().list_relations_schemas_by_patterns } Try / catch
match adapter.list_relations_schemas_by_patterns(patterns, token).await {
Ok(res) => res,
Err(_) | Panic => list_all_and_filter_locally(patterns).await,
} Prevention
- Prefer client-side filtering of a full relation listing over pattern APIs when support is unclear
- Check adapter capability flags before pattern-based selection
- Keep a documented fallback for unimplemented trait methods
- Add integration tests that exercise pattern endpoints per adapter
When it happens
Trigger: Calling list_relations_schemas_by_patterns with glob/regex `RelationPattern` inputs on a PostgresAdapter; the stub at crates/dbt-adapter/src/metadata/postgres/mod.rs:166 panics immediately.
Common situations: dbt selectors or partial-run features that resolve relations by pattern (e.g. 'staging.*' patterns) against Postgres before the pattern-based API is implemented; any pattern-resolution path panics regardless of DB state.
Related errors
- PostgreSQL's list_relations_schemas
- PostgresAdapter::freshness
- load_dataframe() for the Salesforce adapter
- list_relations_schemas_by_patterns for BigQuery
- ClickHouseAdapter::list_relations_schemas_by_patterns
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/bc053146abfb3570.
Report an issue: GitHub.