dbt-labs/dbt-core · error
is_replaceable is only available with BigQuery adapter, not
Error message
is_replaceable is only available with BigQuery adapter, not {} What it means
unimplemented!() in is_replaceable: deciding whether a relation can be replaced in place (partition/cluster match) is only meaningful and implemented for BigQuery; every other adapter type falls into this arm and aborts.
Solutions
- Default non-BigQuery adapters to a dbt-core-compatible value (false/true) instead of aborting
- Feature-gate the materialization code that calls is_replaceable to BigQuery
- Return a structured AdapterError instead of unimplemented!()
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at crates/dbt-adapter/src/adapter/adapter_impl.rs:3818 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/c9426cc1b844b435.
Report an issue: GitHub.
Appendix: source
Thrown at crates/dbt-adapter/src/adapter/adapter_impl.rs:3818
let is_cluster_match = local_cluster_by
.diff_from(Some(remote_cluster_by.as_ref()))
.is_none();
Ok(is_partition_match && is_cluster_match)
}
Err(e) => {
if e.kind() == AdapterErrorKind::NotFound {
Ok(true)
} else {
Err(e)
}
}
}
}
adapter_type @ (Postgres | Snowflake | Databricks | Redshift | Salesforce | Spark
| DuckDB | LakeCompute | Fabric | ClickHouse | Exasol | Starburst
| Athena | Trino | Datafusion | Dremio | Oracle) => {
unimplemented!(
"is_replaceable is only available with BigQuery adapter, not {}",
adapter_type
)
}
}
}
/// BigQueryAdapter https://github.com/dbt-labs/dbt-adapters/blob/0efd8d3d1081e1ab43e38797d5104f7b424a6284/dbt-bigquery/src/dbt/adapters/bigquery/impl.py#L956
pub fn upload_file(&self, _state: &State, _args: &[Value]) -> Result<Value, minijinja::Error> {
unimplemented!("upload_file")
}
/// BigQueryAdapter https://github.com/dbt-labs/dbt-adapters/blob/0efd8d3d1081e1ab43e38797d5104f7b424a6284/dbt-bigquery/src/dbt/adapters/bigquery/impl.py#L670
pub fn parse_partition_by(&self, partition_by: Value) -> AdapterResult<Value> {
match self.adapter_type() {
Bigquery => {
// https://github.com/dbt-labs/dbt-adapters/blob/main/dbt-bigquery/src/dbt/adapters/bigquery/impl.py#L579-L586
// Pure config parse; safe for both BigQuery and Replay (when adapter type is BigQuery)View on GitHub (pinned to 0267ce9170)