{"record":{"id":"36d7bd4ad997512a","repo":"dbt-labs/dbt-core","slug":"datafusion-36d7bd","errorCode":null,"errorMessage":"Datafusion","messagePattern":"Datafusion","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/column/column_builder.rs","lineNumber":41,"sourceCode":"    pub fn build(&self, field: &FieldRef, type_ops: &dyn TypeOps) -> AdapterResult<Column> {\n        use AdapterType::*;\n        match self.adapter_type {\n            Snowflake => Ok(Self::build_snowflake(field, type_ops)),\n            Bigquery => Ok(Self::build_bigquery(field, type_ops)),\n            Databricks | Spark => Ok(Self::build_databricks(field, type_ops)),\n            Redshift => Ok(Self::build_redshift(field, type_ops)),\n            Postgres | Salesforce | DuckDB | LakeCompute => {\n                Ok(Self::build_postgres_like(field, type_ops))\n            }\n            Fabric => Ok(Self::build_fabric(field, type_ops)),\n            ClickHouse => Self::build_clickhouse(field, type_ops),\n            Exasol => Ok(Self::build_exasol(field, type_ops)),\n            Starburst => todo!(\"Starburst\"),\n            Athena => todo!(\"Athena\"),\n            Trino => todo!(\"Trino\"),\n            Dremio => todo!(\"Dremio\"),\n            Oracle => todo!(\"Oracle\"),\n            Datafusion => todo!(\"Datafusion\"),\n        }\n    }\n\n    pub fn build_from_parts(\n        &self,\n        name: String,\n        dtype: String,\n        char_size: Option<u32>,\n        numeric_precision: Option<u64>,\n        numeric_scale: Option<u64>,\n        mode: Option<BigqueryColumnMode>,\n    ) -> Column {\n        use AdapterType::*;\n        match self.adapter_type {\n            Postgres => Column::new(\n                Postgres,\n                name,\n                dtype,","sourceCodeStart":23,"sourceCodeEnd":59,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/column/column_builder.rs#L23-L59","documentation":"A `todo!()` panic in `ColumnBuilder::build` (column_builder.rs:41) for the Datafusion adapter. The adapter dispatch has no Datafusion column-builder implementation, so schema-to-Column conversion with Datafusion panics with the message 'Datafusion'.","triggerScenarios":"Any call into ColumnBuilder::build (schema_to_columns, get_column_schema_from_query, update_node_columns) while the adapter type is Datafusion — e.g. introspecting the schema of a local/Arrow-backed query result.","commonSituations":"Using the embedded Datafusion engine for testing or local execution and then requesting column metadata from results; also hit by tests iterating all adapter variants.","solutions":["Use a supported adapter (Postgres-like, Fabric, ClickHouse, Exasol) until Datafusion is wired up.","Implement the Datafusion arm by delegating to `build_postgres_like` — Datafusion types are Arrow-native and map closely to the postgres_like path.","Convert the panic into a typed unsupported-adapter error."],"exampleFix":"// before\nDatafusion => todo!(\"Datafusion\"),\n// after\nDatafusion => Ok(Self::build_postgres_like(field, type_ops)),","handlingStrategy":"type-guard","validationCode":"if adapter == AdapterType::Datafusion {\n    return Err(anyhow!(\"Datafusion column building is not implemented yet\"));\n}","typeGuard":"fn build_supported(t: AdapterType) -> bool {\n    matches!(t, Postgres | Salesforce | DuckDB | LakeCompute | Fabric | ClickHouse | Exasol)\n}","tryCatchPattern":"std::panic::catch_unwind(AssertUnwindSafe(|| builder.build(field, type_ops)))\n    .map_err(|_| anyhow!(\"column building unimplemented for Datafusion\"))?","preventionTips":["Check ColumnBuilder::build arms before running column metadata extraction with Datafusion","Delegate Datafusion to build_postgres_like when contributing support (Arrow-native types)","Add adapter-coverage tests that force every variant through the builder","Convert todo!() arms to clean errors for fail-fast but catchable behavior"],"tags":["rust","adapter","todo-panic","datafusion","column-builder"],"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"}