drift 2.0.2+1 drift: ^2.0.2+1 copied to clipboard
Drift is a reactive library to store relational data in Dart and Flutter applications.
2.0.2+1 #
- Revert the breaking change around
QueryRow.read
only returning non-nullable values now - it was causing issues with type inference in some cases.
2.0.1 #
- Fix an error when inserting a null value into a nullable column defined with additional checks in Dart.
2.0.0 #
💡: More information on how to migrate is available in the documentation.
- Breaking: Type converters now return the types that they were defined to return (instead of the nullable variant of those types like before). 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
andfromSql
. - Breaking: Removed
SqlTypeSystem
and subtypes ofSqlType
:- To describe the type a column has, use the
DriftSqlType
enum - To map a value from Dart to SQL and vice-versa, use an instance of
SqlTypes
, reachable viadatabase.options.types
.
- To describe the type a column has, use the
- Breaking:
Expression
s (includingColumn
s) always have a non-nullable type parameter now. They are implicitly nullable, soTypedResult.read
now returns a nullable value. - Breaking:
QueryRow.read
can only read non-nullable values now. To read nullable values, usereadNullable
. - Breaking: Remove the
includeJoinedTableColumns
parameter onselectOnly()
. The method now behaves as if that parameter was turned off. To use columns from a joined table, add them withaddColumns
. - Breaking: Remove the
fromData
factory on generated data classes. Use themap
method on tables instead. - Add support for storing date times as (ISO-8601) strings. For details on how to use this, see the documentation.
- Consistently handle transaction errors like a failing
BEGIN
orCOMMIT
across database implementations. - Add
writeReturning
to update statements;deleteReturning
andgoAndReturn
to delete statatements. - Support nested transactions.
- Support custom collations in the query builder API.
- Custom row classes can now be constructed with static methods too. These static factories can also be asynchronous.
1.7.0 #
- Add the
int64()
column builder to store large integers. These integers are still stored as 64-bit ints in the database, but represented as aBigInt
in Dart. This enables better web support for integers larger than 2^52. More details are in the documentation. - Add
filter
anddistinct
support togroupConcat
. - Fix a deadlock with the
sqflite
-based implementation if the first operation in atransaction
is a future backed by a query stream.
1.6.0 #
- Add the
unique()
method to columns and theuniqueKeys
override for tables to define unique constraints in Dart tables. - Add the
check()
method to the Dart column builder to generateCHECK
column constraints. - Also apply type converters for json serialization and deserialization if they
mix in
JsonTypeConverter
. - Add the very experimental
package:drift/wasm.dart
library. It uses WebAssembly to access sqlite3 without any external JavaScript libraries, but requires you to add a WebAssembly module to theweb/
folder. Please note that this specific library is not subject to semantic versioning until it leaves its experimental state. It also isn't suitable for production use at the moment. - Internally use
package:js
to wrap sql.js.
1.5.0 #
- Add
DataClassName.extending
to control the superclass of generated row classes. - Add
setup
parameter to the constructors ofWebDatabase
too. - Don't write variables for expressions in
CREATE VIEW
statements. - Improve stack traces for errors on a remote isolate.
- Add
MultiExecutor.withReadPool
constructor to load-balance between multiple reading executors. This can be used in a multi-isolate approach if some queries are expensive.
1.4.0 #
- Most methods to compose statements are now available as an extension on
tables. As an alternative to
update(todos).replace(newEntry)
, you can now writetodos.replaceOne(newEntry)
. - Deprecate the
from(table)
API introduced in 1.3.0. Having the methods on the table instances turned out to be even easier! - In drift files, you can now use
LIST(SELECT ...)
as a result column to get all results of the inner select as aList
in the result set.
1.3.0 #
- Add the
from(table)
method to generated databases. It can be used to write common queries more concisely. - Make
groupConcat
nullable in the Dart API. - Throw an exception in a
NativeDatabase
when multiple statements are run in a single call. In previous versions, parts of the SQL string would otherwise be ignored. - Close the underlying database when a drift isolate is shut down.
1.2.0 #
- Properly support stream update queries on views.
- Reading blobs from the database is more lenient now.
- Provide a stack trace when
getSingle()
orwatchSingle()
is used on a query emitting more than one row.
1.1.1 #
- Rollback transactions when a commit fails.
- Revert a change from 1.1.0 to stop serializing messages over isolates.
Instead, please set the
serialize
parameter tofalse
on theDriftIsolate
methods.
1.1.0 #
- Add the
references
method toBuildColumn
to reference a column declared in another Dart table. - Add the
generateInsertable
option to@UseRowClass
. When enabled, the generator will emit an extension to use the row class as anInsertable
. Thanks to @westito. - Allow the generator to emit correct SQL code when using arrays with the
new_sql_code_generation
option in specific scenarios. - Add support for strict tables in
.drift
files. - Add the
generatedAs
method to declare generated columns for Dart tables. - Add
OrderingTerm.random
to fetch rows in a random order. - Improved support for pausing query stream subscriptions. Instead of buffering events, query streams will suspend fetching data if all listeners are paused.
- Drift isolates no longer serialize messages into a primitive format. This will reduce the overhead of using isolates with Drift.