fix(clickhouse): fix sorted query sql

This commit is contained in:
t8y2 committed 2026-06-24 15:26:21 +08:00
1 parent de65189ed0
commit 9621f277bf
4 files changed
+21 -1

No files matched your search

+18
View File
@@ -240,6 +240,7 @@ pub fn build_sorted_query_sql(options: SortedQuerySqlOptions) -> QuerySqlBuildRe
let aliases = build_derived_column_aliases(&options.result_columns);
let use_derived_column_aliases = options.database_type != Some(DatabaseType::Mysql)
&& options.database_type != Some(DatabaseType::ClickHouse)
&& options.database_type != Some(DatabaseType::Sqlite)
&& options.database_type != Some(DatabaseType::DuckDb);
let sort_alias = if use_derived_column_aliases {
@@ -1169,6 +1170,23 @@ mod tests {
assert_eq!(result.sql.unwrap(), "SELECT * FROM (SELECT * FROM admin LIMIT 100) t ORDER BY `login_name` ASC;");
}
#[test]
fn builds_clickhouse_sorted_query_without_alias_list() {
let result = build_sorted_query_sql(SortedQuerySqlOptions {
original_sql: "SELECT id, part_day, hid FROM events LIMIT 100".to_string(),
database_type: Some(DatabaseType::ClickHouse),
result_columns: vec!["id".to_string(), "part_day".to_string(), "hid".to_string()],
column_index: 0,
column: "id".to_string(),
direction: QuerySortDirection::Desc,
});
assert_eq!(
result.sql.unwrap(),
"SELECT * FROM (SELECT id, part_day, hid FROM events LIMIT 100) t ORDER BY `id` DESC;"
);
}
#[test]
fn strips_sqlserver_order_by_for_sorted_query() {
let result = build_sorted_query_sql(SortedQuerySqlOptions {
@@ -75,6 +75,7 @@ pub fn quote_table_identifier(database_type: Option<DatabaseType>, name: &str) -
Some(DatabaseType::Jdbc) => name.to_string(),
Some(
DatabaseType::Mysql
| DatabaseType::ClickHouse
| DatabaseType::Goldendb
| DatabaseType::StarRocks
| DatabaseType::ManticoreSearch
+1
View File
@@ -15,6 +15,7 @@ fn transfer_identifier_policy_preserves_legacy_output() {
#[test]
fn quotes_identifiers_by_database_type() {
assert_eq!(quote_table_identifier(Some(DatabaseType::Mysql), "user`name"), "`user``name`");
assert_eq!(quote_table_identifier(Some(DatabaseType::ClickHouse), "user`name"), "`user``name`");
assert_eq!(quote_table_identifier(Some(DatabaseType::Goldendb), "user`name"), "`user``name`");
assert_eq!(quote_table_identifier(Some(DatabaseType::StarRocks), "user`name"), "`user``name`");
assert_eq!(quote_table_identifier(Some(DatabaseType::SqlServer), "user]name"), "[user]]name]");