{"record":{"id":"8c5dca809bee7fe5","repo":"t8y2/dbx","slug":"invalid-tdengine-database-name-value","errorCode":null,"errorMessage":"invalid TDengine database name: {value}","messagePattern":"invalid TDengine database name: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/tdengine/src/driver.rs","lineNumber":833,"sourceCode":"\nfn effective_database<'a>(requested: &'a str, current: &'a str) -> Result<&'a str> {\n    let requested = requested.trim();\n    if !requested.is_empty() {\n        return validate_database_name(requested);\n    }\n    let current = current.trim();\n    if current.is_empty() {\n        bail!(\"TDengine database is required\");\n    }\n    validate_database_name(current)\n}\n\nfn validate_database_name(value: &str) -> Result<&str> {\n    let value = value.trim();\n    let mut chars = value.chars();\n    let valid_start = chars.next().is_some_and(|char| char == '_' || char.is_ascii_alphabetic());\n    if !valid_start || !chars.all(|char| char == '_' || char.is_ascii_alphanumeric()) {\n        bail!(\"invalid TDengine database name: {value}\");\n    }\n    Ok(value)\n}\n\nfn table_from_show_row(row: Vec<Value>, table_type: &str, includes_stable_name: bool) -> Option<TableInfo> {\n    let name = row.first().and_then(json_text)?.to_string();\n    let parent_name = includes_stable_name\n        .then(|| row.get(3).and_then(json_text).map(str::trim).filter(|value| !value.is_empty()).map(str::to_string))\n        .flatten();\n    Some(TableInfo { name, table_type: table_type.to_string(), comment: None, parent_schema: None, parent_name })\n}\n\nfn parse_describe_columns(rows: Vec<Vec<Value>>) -> Vec<ColumnInfo> {\n    rows.into_iter()\n        .enumerate()\n        .filter_map(|(index, row)| {\n            let name = row.first().and_then(json_text)?.to_string();\n            let data_type = row.get(1).and_then(json_text).unwrap_or_default().to_string();","sourceCodeStart":815,"sourceCodeEnd":851,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/tdengine/src/driver.rs#L815-L851","documentation":"Thrown by validate_database_name in the TDengine driver when a database name fails its identifier rules: it must start with '_' or an ASCII letter and contain only allowed identifier characters. Firing during use_database/effective_database, it rejects malformed database names before any SQL is composed, preventing injection through the db name.","triggerScenarios":"Thrown at agents/drivers/tdengine/src/driver.rs:833 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a database name starting with a letter or underscore, containing only letters, digits, and underscores","Remove quotes, spaces, dashes, or special characters from the database parameter","Create the database with a compliant name if the current one is invalid"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}