{"record":{"id":"aa58b8eba300f17b","repo":"dbt-labs/dbt-core","slug":"table-rename-slugging-columns-or-rows-is-not-impl","errorCode":null,"errorMessage":"Table.rename: slugging columns or rows is not implemented yet","messagePattern":"Table\\.rename: slugging columns or rows is not implemented yet","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-agate/src/table.rs","lineNumber":822,"sourceCode":"                    ),\n                ));\n            }\n        }\n        if let Some(ref rows) = renamed_rows {\n            if rows.len() != self.num_rows() {\n                return Err(Error::new(\n                    ErrorKind::InvalidArgument,\n                    format!(\n                        \"Table.rename: renamed_rows length ({}) does not match number of rows ({})\",\n                        rows.len(),\n                        self.num_rows()\n                    ),\n                ));\n            }\n        }\n\n        if slug_columns || slug_rows {\n            return Err(Error::new(\n                ErrorKind::InvalidOperation,\n                \"Table.rename: slugging columns or rows is not implemented yet\",\n            ));\n        }\n\n        let repr = if let Some(renamed_columns) = renamed_columns {\n            self.repr.with_renamed_columns(renamed_columns)\n        } else {\n            Arc::clone(&self.repr)\n        };\n        let repr = if let Some(renamed_rows) = renamed_rows {\n            repr.with_renamed_rows(renamed_rows)\n        } else {\n            repr\n        };\n\n        Ok(AgateTable::from_repr(repr))\n    }","sourceCodeStart":804,"sourceCodeEnd":840,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-agate/src/table.rs#L804-L840","documentation":"Table.rename accepts slug_columns/slug_rows flags (agate's slugification of column or row names), but this Rust port has not implemented slugification yet and refuses the call with an InvalidOperation error rather than silently ignoring the flags.","triggerScenarios":"Calling rename with slug_columns=true or slug_rows=true, regardless of the other arguments.","commonSituations":"Porting Python agate code that relied on slug_columns/slug_rows for snake_case column names; enabling the flags 'just in case' when porting an agate-based workflow to dbt's Rust agate implementation.","solutions":["Set both slug_columns and slug_rows to false.","Pre-slugify names yourself (lowercase, replace non-alphanumerics with underscores) and pass them via the map form of column_names.","Track library updates; this is explicitly an unimplemented feature, not a usage error."],"exampleFix":"// before\ntable.rename(Some(names), None, true, false)?\n// after\nlet slugged: Vec<_> = names.iter().map(|n| slugify(n)).collect();\ntable.rename(Some(slugged), None, false, false)?","handlingStrategy":"validation","validationCode":"if slug_columns || slug_rows {\n    return Err(\"slugging not supported; pre-slugify names instead\");\n}","typeGuard":null,"tryCatchPattern":"match result {\n    Err(e) if e.to_string().contains(\"slugging columns or rows is not implemented\") => {\n        eprintln!(\"{e}; pre-slugify and pass explicit names\");\n        table.rename(Some(pre_slugged(names)), None, false, false)?\n    }\n    other => other?,\n}","preventionTips":["Never pass slug_columns=true or slug_rows=true against this library.","Slugify names yourself before calling rename.","Grep ported agate code for slug_columns/slug_rows usages and replace them with explicit name mapping."],"tags":["unimplemented","rename","slug"],"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-17T15:17:12.973Z"}