mirror of
https://github.com/t8y2/dbx.git
synced 2026-10-20 00:17:44 +00:00
fix(clickhouse): preserve cross-database column comments
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user