dbt-labs/dbt-core · error
only available with BigQuery adapter
Error message
only available with BigQuery adapter
What it means
update_columns_descriptions implements column description persistence only for BigQuery; the match arm for every other adapter (Postgres, Snowflake, Databricks, Redshift, Salesforce, Spark, Fabric, DuckDB, LakeCompute, ClickHouse, Exasol, Starburst, Athena, Trino, Datafusion, Dremio, Oracle) panics via unimplemented!. This mirrors the upstream dbt-bigquery-only update_column_descriptions hook.
Source
Thrown at crates/dbt-adapter/src/adapter/adapter_impl.rs:2584
let sql = format!(
"-- adapter.update_columns via BigQuery REST API on `{database}.{schema}.{table}`"
);
self.engine().execute_with_options(
Some(state),
&ctx,
conn,
&sql,
options,
false,
token,
)?;
Ok(none_value())
}
Postgres | Snowflake | Databricks | Redshift | Salesforce | Spark | Fabric | DuckDB
| LakeCompute | ClickHouse | Exasol | Starburst | Athena | Trino | Datafusion
| Dremio | Oracle => {
unimplemented!("only available with BigQuery adapter")
}
}
}
/// render_raw_columns_constraints
///
/// BaseAdapter https://github.com/dbt-labs/dbt-adapters/blob/0efd8d3d1081e1ab43e38797d5104f7b424a6284/dbt-adapters/src/dbt/adapters/base/impl.py#L1848
pub fn render_raw_columns_constraints(
&self,
columns_map: IndexMap<String, DbtColumn>,
) -> AdapterResult<Vec<String>> {
match self.adapter_type() {
// dbt-clickhouse impl.py override: column constraints warn as
// unsupported and never render; codec/ttl ride after the type.
ClickHouse => {
let mut result = vec![];
for (_, column) in columns_map {
let mut rendered = format!(View on GitHub (pinned to 0267ce9170)
Solutions
- Use BigQuery if column-description persistence is required.
- Disable persist_docs for columns on non-BigQuery adapters so the hook is never dispatched.
- Implement per-adapter description updates (ALTER ... SET COMMENT / COMMENT ON COLUMN) in the non-BigQuery match arm.
Example fix
// before
Postgres | Snowflake | Databricks | ... | Oracle => {
unimplemented!("only available with BigQuery adapter")
}
// after
Postgres | Snowflake | Databricks | ... | Oracle => {
Err(minijinja::Error::new(
minijinja::ErrorKind::InvalidOperation,
"column descriptions only supported on BigQuery",
))
} Defensive patterns
Strategy: validation
Validate before calling
if adapter_type != "bigquery" && config.persist_docs.columns {
return Err("column description persistence is only supported on BigQuery".into());
} Type guard
fn supports_column_descriptions(adapter_type: &AdapterType) -> bool { matches!(adapter_type, AdapterType::Bigquery) } Prevention
- Set persist_docs columns only for BigQuery models
- Document adapter-specific feature support in project templates
- Lint dbt_project.yml for persist_docs combined with non-BigQuery adapters
When it happens
Trigger: Running `dbt docs generate` / persist_docs with column descriptions on any non-BigQuery adapter, which dispatches update_columns_descriptions through Jinja.
Common situations: Setting `persist_docs: {relation: ..., columns: ...}` or defining column `description` meta on models with Postgres/Snowflake etc., expecting description updates.
Related errors
- get_bq_table
- load_dataframe() for the Salesforce adapter
- list_relations_schemas_by_patterns for BigQuery
- Starburst
- Athena
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/6dfdf5d5cab42257.
Report an issue: GitHub.