{"record":{"id":"0e10ef5db14517cb","repo":"dbt-labs/dbt-core","slug":"parse-index","errorCode":null,"errorMessage":"parse_index","messagePattern":"parse_index","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/adapter/adapter_impl.rs","lineNumber":4752,"sourceCode":"        ]))\n    }\n\n    /// DatabricksAdapter https://github.com/databricks/dbt-databricks/blob/2f11abb306a400cde32b27891b766bf41a11fb1f/dbt/adapters/databricks/impl.py#L463\n    pub fn get_relations_without_caching(\n        &self,\n        _state: &State,\n        _relation: &Arc<dyn BaseRelation>,\n    ) -> Result<Value, minijinja::Error> {\n        unimplemented!(\"get_relations_without_caching\")\n    }\n\n    /// PostgresAdapter https://github.com/dbt-labs/dbt-adapters/blob/0efd8d3d1081e1ab43e38797d5104f7b424a6284/dbt-postgres/src/dbt/adapters/postgres/impl.py#L128\n    pub fn parse_index(\n        &self,\n        _state: &State,\n        _raw_index: &Value,\n    ) -> Result<Value, minijinja::Error> {\n        unimplemented!(\"parse_index\")\n    }\n\n    /// DatabricksAdapter https://github.com/databricks/dbt-databricks/blob/2f11abb306a400cde32b27891b766bf41a11fb1f/dbt/adapters/databricks/impl.py#L990\n    pub fn get_column_tags_from_model(\n        &self,\n        model: &dyn InternalDbtNodeAttributes,\n    ) -> AdapterResult<Value> {\n        use crate::relation::databricks::config::components::ColumnTagsLoader;\n\n        if self.adapter_type() != Databricks {\n            return Err(AdapterError::new(\n                AdapterErrorKind::Internal,\n                \"get_column_tags_from_model is a Databricks adapter operation\".to_string(),\n            ));\n        }\n\n        let tags = (&ColumnTagsLoader as &dyn ComponentConfigLoader<DatabricksRelationMetadata>)\n            .from_local_config(model)?;","sourceCodeStart":4734,"sourceCodeEnd":4770,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/adapter/adapter_impl.rs#L4734-L4770","documentation":"parse_index converts a raw index definition (from Postgres CREATE INDEX DDL) into a structured index object; it mirrors PostgresAdapter.impl.py#L128 but is an unimplemented!() stub in this Rust adapter, so any call panics unconditionally, independent of adapter type.","triggerScenarios":"Any call to adapter.parse_index(state, raw_index) — e.g. from Postgres index-related macros (dbt_postgres materializations that parse existing indexes) — always panics because the method body is only the stub.","commonSituations":"Running Postgres models whose materialization macros parse existing index DDL; migrating Python dbt-postgres behavior that relied on parse_index; no adapter version currently implements this API.","solutions":["Avoid paths that call parse_index; manage indexes with explicit post-hook CREATE INDEX statements instead","Use an alternative that returns raw index metadata (e.g. direct catalog queries via run_query)","Implement the stub in crates/dbt-adapter if index parsing is required for your workflow"],"exampleFix":"// before\nlet index = adapter.parse_index(state, raw_index)?;\n\n// after\n// parse the index DDL in the macro layer or use post-hooks instead of parse_index","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Stub panics for every input; avoid entirely:\n// manage indexes via post-hooks (CREATE INDEX ...) instead of parse_index","preventionTips":["Avoid Postgres index-parsing macros that depend on parse_index","Use explicit post-hook DDL for index management","Check adapter changelogs for when the parse_index stub gets implemented"],"tags":["adapter","postgres","stub","unimplemented","index"],"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"}