fix: keep existing SQL Server TOP clauses
This commit is contained in:
1 parent
9f6c35ee78
commit
0354fe7050
2 files changed
+22
No files matched your search
@@ -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 {
|
||||
|
||||
Reference in new issue
Block a user