diff --git a/apps/desktop/src/lib/__tests__/sql/sqlCompletion.snippet.spec.ts b/apps/desktop/src/lib/__tests__/sql/sqlCompletion.snippet.spec.ts index 2fbf51e084..267c1bce44 100644 --- a/apps/desktop/src/lib/__tests__/sql/sqlCompletion.snippet.spec.ts +++ b/apps/desktop/src/lib/__tests__/sql/sqlCompletion.snippet.spec.ts @@ -76,7 +76,7 @@ describe("buildSnippetItems", () => { ["oscar", "SELECT *\nFROM table\nWHERE ROWNUM <= 100;", "SELECT *\nFROM ${table}\nWHERE ROWNUM <= 100;"], ["xugu", "SELECT *\nFROM table\nLIMIT 100;", "SELECT *\nFROM ${table}\nLIMIT 100;"], ["yashandb", "SELECT *\nFROM table\nLIMIT 100;", "SELECT *\nFROM ${table}\nLIMIT 100;"], - ["dameng", "SELECT *\nFROM table\nFETCH FIRST 100 ROWS ONLY;", "SELECT *\nFROM ${table}\nFETCH FIRST 100 ROWS ONLY;"], + ["dameng", "SELECT *\nFROM table\nWHERE ROWNUM <= 100;", "SELECT *\nFROM ${table}\nWHERE ROWNUM <= 100;"], ["db2", "SELECT *\nFROM table\nFETCH FIRST 100 ROWS ONLY;", "SELECT *\nFROM ${table}\nFETCH FIRST 100 ROWS ONLY;"], ["sqlserver", "SELECT TOP 100 *\nFROM table;", "SELECT TOP 100 *\nFROM ${table};"], ["access", "SELECT TOP 100 *\nFROM table;", "SELECT TOP 100 *\nFROM ${table};"], diff --git a/apps/desktop/src/lib/sql/sqlSnippetTemplates.ts b/apps/desktop/src/lib/sql/sqlSnippetTemplates.ts index 942b01a286..e5a477a4ee 100644 --- a/apps/desktop/src/lib/sql/sqlSnippetTemplates.ts +++ b/apps/desktop/src/lib/sql/sqlSnippetTemplates.ts @@ -135,7 +135,7 @@ const SELECT_SNIPPET_LIMIT_STYLE_BY_DATABASE: Partial, context: Paginat TablePaginationStrategy::Rownum } Some(DatabaseType::Oscar) => TablePaginationStrategy::Unbounded, - Some(DatabaseType::Dameng) => TablePaginationStrategy::FetchFirst, + Some(DatabaseType::Dameng) => TablePaginationStrategy::Rownum, Some(DatabaseType::Db2) => TablePaginationStrategy::Db2FetchFirst, Some(DatabaseType::SqlServer) => TablePaginationStrategy::SqlServerTop, Some(DatabaseType::Iris) => TablePaginationStrategy::IrisTop, diff --git a/crates/dbx-core/src/sql_dialect/tests.rs b/crates/dbx-core/src/sql_dialect/tests.rs index 22fd4a12d7..6bd7266b88 100644 --- a/crates/dbx-core/src/sql_dialect/tests.rs +++ b/crates/dbx-core/src/sql_dialect/tests.rs @@ -141,7 +141,7 @@ fn qualifies_schema_only_for_schema_aware_databases() { #[test] fn maps_table_pagination_strategy_by_database_type() { assert_eq!(table_pagination_strategy(Some(DatabaseType::Mysql)), TablePaginationStrategy::LimitOffset); - assert_eq!(table_pagination_strategy(Some(DatabaseType::Dameng)), TablePaginationStrategy::FetchFirst); + assert_eq!(table_pagination_strategy(Some(DatabaseType::Dameng)), TablePaginationStrategy::Rownum); assert_eq!(table_pagination_strategy(Some(DatabaseType::Db2)), TablePaginationStrategy::Db2FetchFirst); assert_eq!(table_pagination_strategy(Some(DatabaseType::SqlServer)), TablePaginationStrategy::SqlServerTop); assert_eq!(table_pagination_strategy(Some(DatabaseType::Iris)), TablePaginationStrategy::IrisTop); @@ -244,6 +244,17 @@ fn builds_select_sql_with_limit_syntax_for_database_type() { }), "SELECT \"id\", \"name\" FROM (SELECT \"id\", \"name\" FROM \"DBXTEST\".\"USERS\" ORDER BY \"id\" ASC) WHERE ROWNUM <= 100" ); + assert_eq!( + build_table_select_sql(TableSelectSqlOptions { + database_type: Some(DatabaseType::Dameng), + schema: Some("SYSDBA"), + table_name: "USERS", + columns: &columns, + order_columns: &keys, + limit: 100, + }), + "SELECT \"id\", \"name\" FROM (SELECT \"id\", \"name\" FROM \"SYSDBA\".\"USERS\" ORDER BY \"id\" ASC) WHERE ROWNUM <= 100" + ); // JDBC connections skip SQL-level row limiting — the JDBC agent handles // it via Statement.setMaxRows() which is universally supported. assert_eq!(