mirror of
https://github.com/t8y2/dbx.git
synced 2026-10-21 05:20:02 +00:00
fix(sqlserver): honor sidebar probe limits above 1000
This commit is contained in:
@@ -2382,9 +2382,11 @@ fn sqlserver_list_tables_sql_with_kind(
|
||||
|
||||
// Use SELECT TOP for broad SQL Server version compatibility.
|
||||
// OFFSET / FETCH NEXT is only available in SQL Server 2012+.
|
||||
// Keep the requested limit intact: the sidebar requests page_size + 1 to
|
||||
// detect whether it should render a load-more node.
|
||||
match (limit, offset) {
|
||||
(Some(limit), Some(offset)) if offset > 0 => {
|
||||
let end = offset + limit.min(1000);
|
||||
let end = offset + limit;
|
||||
format!(
|
||||
"SELECT * FROM (\
|
||||
SELECT {base_columns}, ROW_NUMBER() OVER ({order_by}) AS __dbx_rn \
|
||||
@@ -2393,7 +2395,7 @@ fn sqlserver_list_tables_sql_with_kind(
|
||||
)
|
||||
}
|
||||
(Some(limit), _) => {
|
||||
format!("SELECT TOP ({}) {base_columns} {base_from} {base_where} {order_by}", limit.min(1000))
|
||||
format!("SELECT TOP ({}) {base_columns} {base_from} {base_where} {order_by}", limit)
|
||||
}
|
||||
_ => {
|
||||
format!("SELECT {base_columns} {base_from} {base_where} {order_by}")
|
||||
@@ -4274,6 +4276,15 @@ mod tests {
|
||||
assert!(sql.contains("__dbx_rn > 100 AND __dbx_rn <= 201"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sqlserver_table_objects_sql_preserves_sidebar_probe_limits_above_1000() {
|
||||
let first_page = sqlserver_table_objects_sql("dbo", None, Some(1001), None);
|
||||
let next_page = sqlserver_table_objects_sql("dbo", None, Some(1001), Some(1000));
|
||||
|
||||
assert!(first_page.contains("SELECT TOP (1001)"));
|
||||
assert!(next_page.contains("__dbx_rn > 1000 AND __dbx_rn <= 2001"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sqlserver_list_tables_filter_escapes_like_literals() {
|
||||
let sql = sqlserver_list_tables_sql("dbo", Some("Temp_Table[%]"), Some(200), None);
|
||||
|
||||
Reference in New Issue
Block a user