From b2285e04ef17505381c043f303ae1cad16d96175 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Sun, 8 Mar 2020 12:03:34 +0100 Subject: [PATCH] Fix limit clause not being copied to join (#433) --- moor/CHANGELOG.md | 2 ++ .../query_builder/statements/select/select.dart | 3 +++ moor/test/join_test.dart | 12 ++++++++++++ 3 files changed, 17 insertions(+) diff --git a/moor/CHANGELOG.md b/moor/CHANGELOG.md index 196fcc5f..2ab54e50 100644 --- a/moor/CHANGELOG.md +++ b/moor/CHANGELOG.md @@ -2,6 +2,8 @@ - Fix `beforeOpen` callback deadlocking when using the isolate executor ([#431](https://github.com/simolus3/moor/issues/431)) +- Fix limit clause not being applied when using `.join` afterwards + ([#433](https://github.com/simolus3/moor/issues/433)) ## 2.4.1 diff --git a/moor/lib/src/runtime/query_builder/statements/select/select.dart b/moor/lib/src/runtime/query_builder/statements/select/select.dart index 9a142d7a..c9f50b19 100644 --- a/moor/lib/src/runtime/query_builder/statements/select/select.dart +++ b/moor/lib/src/runtime/query_builder/statements/select/select.dart @@ -74,6 +74,9 @@ class SimpleSelectStatement if (orderByExpr != null) { statement.orderBy(orderByExpr.terms); } + if (limitExpr != null) { + statement.limitExpr = limitExpr; + } return statement; } diff --git a/moor/test/join_test.dart b/moor/test/join_test.dart index 74d1e39e..a4b4fb6a 100644 --- a/moor/test/join_test.dart +++ b/moor/test/join_test.dart @@ -116,6 +116,18 @@ void main() { argThat(contains('WHERE t.id < ? ORDER BY t.title ASC')), [3])); }); + test('limit clause is kept', () async { + final todos = db.alias(db.todosTable, 't'); + final categories = db.alias(db.categories, 'c'); + + final normalQuery = db.select(todos)..limit(10, offset: 5); + + await normalQuery.join( + [innerJoin(categories, categories.id.equalsExp(todos.category))]).get(); + + verify(executor.runSelect(argThat(contains('LIMIT 10 OFFSET 5')), [])); + }); + test('can be watched', () { final todos = db.alias(db.todosTable, 't'); final categories = db.alias(db.categories, 'c');