fix: keep existing SQL Server TOP clauses

This commit is contained in:
t8y2 committed 2026-05-25 16:51:18 +08:00
1 parent 9f6c35ee78
commit 0354fe7050
2 files changed
+22

No files matched your search

+16
View File
@@ -321,6 +321,9 @@ fn has_top_level_select_into(sql: &str) -> bool {
}
fn add_sql_server_top(sql: &str, limit: usize) -> String {
if has_top_level_select_top(sql) {
return sql.to_string();
}
if sql.len() >= 6 && sql[..6].to_ascii_uppercase() == "SELECT" {
format!("SELECT TOP ({limit}){}", &sql[6..])
} else {
@@ -588,6 +591,19 @@ mod tests {
assert_eq!(result.sql.unwrap(), "SELECT TOP (100) COUNT(*) FROM TicketInfo");
}
#[test]
fn keeps_existing_sqlserver_top_clause() {
let result = build_paginated_query_sql(PaginatedQuerySqlOptions {
original_sql: "SELECT TOP 1000 * FROM TicketInfo".to_string(),
database_type: Some(DatabaseType::SqlServer),
limit: 100,
offset: 0,
});
assert_eq!(result.ok, true);
assert_eq!(result.sql.unwrap(), "SELECT TOP 1000 * FROM TicketInfo");
}
#[test]
fn wraps_sqlserver_select_with_unnamed_column() {
let result = build_paginated_query_sql(PaginatedQuerySqlOptions {