From 8d840f3eb36c27b11b1fe38c4e8d1bfea286bd5c Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Sat, 16 Jul 2022 12:07:12 +0200 Subject: [PATCH] Remove includeJoinedTableColumns entirely --- drift/CHANGELOG.md | 5 +++-- drift/example/main.g.dart | 10 +++------- .../lib/src/runtime/api/connection_user.dart | 19 ++++--------------- .../src/runtime/query_builder/on_table.dart | 7 ++----- drift/test/database/statements/join_test.dart | 3 +-- drift/test/generated/todos.g.dart | 7 ++----- .../lib/src/writer/tables/view_writer.dart | 4 ++-- 7 files changed, 17 insertions(+), 38 deletions(-) diff --git a/drift/CHANGELOG.md b/drift/CHANGELOG.md index e55e4b94..6d9ba75c 100644 --- a/drift/CHANGELOG.md +++ b/drift/CHANGELOG.md @@ -5,8 +5,9 @@ It is an error to use a non-nullable type converter on a column that is nullable in SQL and vice-versa. - __Breaking__: Mapping methods on type converters are now called `toSql` and `fromSql`. -- __Breaking__: The `includeJoinedTableColumns` parameter on `selectOnly()` is now - disabled by default. +- __Breaking__: Remove the `includeJoinedTableColumns` parameter on `selectOnly()`. + The method now behaves as if that parameter was turned off. To use columns from a + joined table, add them with `addColumns`. - Consistently handle transaction errors like a failing `BEGIN` or `COMMIT` across database implementations. - Support nested transactions. diff --git a/drift/example/main.g.dart b/drift/example/main.g.dart index a688f7d1..e1396141 100644 --- a/drift/example/main.g.dart +++ b/drift/example/main.g.dart @@ -571,10 +571,8 @@ class $TodoCategoryItemCountView } @override - Query? get query => (attachedDatabase.selectOnly(todoCategories, - includeJoinedTableColumns: false) - ..addColumns($columns)) - .join([ + Query? get query => + (attachedDatabase.selectOnly(todoCategories)..addColumns($columns)).join([ innerJoin(todoItems, todoItems.categoryId.equalsExp(todoCategories.id)) ]); @override @@ -686,9 +684,7 @@ class $TodoItemWithCategoryNameViewView extends ViewInfo< @override Query? get query => - (attachedDatabase.selectOnly(todoItems, includeJoinedTableColumns: false) - ..addColumns($columns)) - .join([ + (attachedDatabase.selectOnly(todoItems)..addColumns($columns)).join([ innerJoin( todoCategories, todoCategories.id.equalsExp(todoItems.categoryId)) ]); diff --git a/drift/lib/src/runtime/api/connection_user.dart b/drift/lib/src/runtime/api/connection_user.dart index 1032400c..c181dd0c 100644 --- a/drift/lib/src/runtime/api/connection_user.dart +++ b/drift/lib/src/runtime/api/connection_user.dart @@ -244,13 +244,6 @@ abstract class DatabaseConnectionUser { /// The [distinct] parameter (defaults to false) can be used to remove /// duplicate rows from the result set. /// - /// The [includeJoinedTableColumns] parameter (defaults to true) can be used - /// to determinate join statement's `useColumns` parameter default value. Set - /// it to false if you don't want to include joined table columns by default. - /// If you leave it on true and don't set `useColumns` parameter to false in - /// join declarations, all columns of joined table will be included in query - /// by default. - /// /// For simple queries, use [select]. /// /// See also: @@ -258,10 +251,9 @@ abstract class DatabaseConnectionUser { /// - the documentation on [group by](https://drift.simonbinder.eu/docs/advanced-features/joins/#group-by) JoinedSelectStatement selectOnly( ResultSetImplementation table, - {bool distinct = false, - bool includeJoinedTableColumns = false}) { + {bool distinct = false}) { return JoinedSelectStatement( - resolvedEngine, table, [], distinct, false, includeJoinedTableColumns); + resolvedEngine, table, [], distinct, false, false); } /// Starts a [DeleteStatement] that can be used to delete rows from a table. @@ -627,11 +619,8 @@ class TableOrViewOperations { /// Composes a `SELECT` statement only selecting a subset of columns. /// /// This is equivalent to calling [DatabaseConnectionUser.selectOnly]. - JoinedSelectStatement selectOnly( - {bool distinct = false, bool includeJoinedTableColumns = false}) { - return _user.selectOnly(_sourceSet, - distinct: distinct, - includeJoinedTableColumns: includeJoinedTableColumns); + JoinedSelectStatement selectOnly({bool distinct = false}) { + return _user.selectOnly(_sourceSet, distinct: distinct); } } diff --git a/drift/lib/src/runtime/query_builder/on_table.dart b/drift/lib/src/runtime/query_builder/on_table.dart index 66907327..1574ebb3 100644 --- a/drift/lib/src/runtime/query_builder/on_table.dart +++ b/drift/lib/src/runtime/query_builder/on_table.dart @@ -14,11 +14,8 @@ extension TableOrViewStatements /// Composes a `SELECT` statement only selecting a subset of columns. /// /// This is equivalent to calling [DatabaseConnectionUser.selectOnly]. - JoinedSelectStatement selectOnly( - {bool distinct = false, bool includeJoinedTableColumns = false}) { - return attachedDatabase.selectOnly(this, - distinct: distinct, - includeJoinedTableColumns: includeJoinedTableColumns); + JoinedSelectStatement selectOnly({bool distinct = false}) { + return attachedDatabase.selectOnly(this, distinct: distinct); } } diff --git a/drift/test/database/statements/join_test.dart b/drift/test/database/statements/join_test.dart index 215f26b3..7a2677d8 100644 --- a/drift/test/database/statements/join_test.dart +++ b/drift/test/database/statements/join_test.dart @@ -406,8 +406,7 @@ void main() { final categories = db.categories; final todos = db.todosTable; - final query = - db.selectOnly(categories, includeJoinedTableColumns: false).join([ + final query = db.selectOnly(categories).join([ innerJoin( todos, todos.category.equalsExp(categories.id), diff --git a/drift/test/generated/todos.g.dart b/drift/test/generated/todos.g.dart index 7e44007c..c16c90de 100644 --- a/drift/test/generated/todos.g.dart +++ b/drift/test/generated/todos.g.dart @@ -1497,8 +1497,7 @@ class $CategoryTodoCountViewView @override Query? get query => - (attachedDatabase.selectOnly(categories, includeJoinedTableColumns: false) - ..addColumns($columns)) + (attachedDatabase.selectOnly(categories)..addColumns($columns)) .join([innerJoin(todos, todos.category.equalsExp(categories.id))]) ..groupBy([categories.id]); @override @@ -1605,9 +1604,7 @@ class $TodoWithCategoryViewView } @override - Query? get query => (attachedDatabase.selectOnly(todos, - includeJoinedTableColumns: false) - ..addColumns($columns)) + Query? get query => (attachedDatabase.selectOnly(todos)..addColumns($columns)) .join([innerJoin(categories, categories.id.equalsExp(todos.category))]); @override Set get readTables => const {'todos', 'categories'}; diff --git a/drift_dev/lib/src/writer/tables/view_writer.dart b/drift_dev/lib/src/writer/tables/view_writer.dart index 3e8d13f5..6398aee8 100644 --- a/drift_dev/lib/src/writer/tables/view_writer.dart +++ b/drift_dev/lib/src/writer/tables/view_writer.dart @@ -132,8 +132,8 @@ class ViewWriter extends TableOrViewWriter { buffer.write('@override\nQuery? get query => '); final query = view.viewQuery; if (query != null) { - buffer.write('(attachedDatabase.selectOnly(${query.from}, ' - 'includeJoinedTableColumns: false)..addColumns(\$columns))' + buffer.write('(attachedDatabase.selectOnly(${query.from})' + '..addColumns(\$columns))' '${query.query};'); } else { buffer.write('null;\n');