fix(clickhouse): preserve cross-database column comments

This commit is contained in:
Jamie 2026-07-23 17:06:00 +08:00 committed by GitHub
parent 48b373729d
commit 2318c48787
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 5 deletions

View File

@ -631,11 +631,14 @@ async fn duckdb_attached_database_names(state: &AppState, connection_id: &str) -
state.configs.read().await.get(connection_id).map(crate::db::duckdb_sql::config_attached_names).unwrap_or_default()
}
// ClickHouse 无 schema 概念schema 参数携带 SQL 中 `库.表` 限定的目标库,
// database 参数是 tab/连接的当前库。与 mysql_table_metadata_catalog 一致,
// schema 非空时必须优先,否则跨库查询会在当前库下查不到元数据(字段注释丢失)
fn clickhouse_metadata_database<'a>(database: &'a str, schema: &'a str) -> &'a str {
if database.is_empty() {
schema
} else {
if schema.trim().is_empty() {
database
} else {
schema
}
}
@ -3379,10 +3382,11 @@ mod tests {
}
#[test]
fn clickhouse_metadata_uses_schema_when_database_is_empty() {
fn clickhouse_metadata_prefers_schema_qualifier() {
assert_eq!(clickhouse_metadata_database("", "testdb"), "testdb");
assert_eq!(clickhouse_metadata_database("testdb", ""), "testdb");
assert_eq!(clickhouse_metadata_database("default", "testdb"), "default");
// 查询元数据流程database 是 tab 当前库schema 是 SQL 限定的真实库
assert_eq!(clickhouse_metadata_database("default", "testdb"), "testdb");
}
#[test]