Releases: simolus3/drift
Drift 2.25.0
Core drift package:
- Report
SqliteException
s occurring on workers asSqliteException
instances. Previously, they were sent as strings only. - Fix
LazyDatabase
being closed without ever being used potentially leaking resources.
In the generator:
- Fix incorrect code when applying non-nullable type converters with a nullable JSON type to nullable column.
- Fix missing outputs for drift files only consisting of imports in modular generation mode.
- Allow generating manager references across different files in modular generation mode.
- Fix class names with dollar signs not being escaped in drift-generated
toString()
. - Make-migrations command: Use
flutter_test
if the coretest
package is unavailable and warn when database class needs changes for test.
Drift 2.24.0
This version improves jsonb support and adds other minor improvements:
- Add
TypeConverter.jsonb
to directly store values in the JSONB format used by SQLite. - Deprecate
TypeConverter.json
utility in favor ofTypeConverter.json2
. The new method avoids encoding values twice when mapping drift row classes to JSON. The documentation - Add
runWithInterceptor
method to databases to only apply interceptors in a restricted block.
In the generator, we:
- Support versions
7.x
of theanalyzer
package. - Add analysis support for SQLite 3.48.
- Fix nullability analysis around fts5 tables (enabled when raising the version to 3.48 to preserve backwards-compatibility).
Drift 2.23.1
This patch release fixes the following issues:
- Fix
TableStatements.insertAll
to only apply a database-specific pragma for SQLite databases. - Don't attempt to roll-back transactions that failed to begin.
- Fix unhandled exception when cancelling transactions.
- Fix deadlock when drift databases are used in a
fake_async
Zone and then closed outside that zone.
Also, drift_dev
version 2.23.1
contains one improvement:
- Generate typed reference-resolving queries through the manager API when modular code-generation is enabled. Previously, this feature was only enabled for monolithic generation modes.
Drift 2.23.0
This drift release contains smaller fixes and new features:
Core query builder:
- Allow building compound select statements in Dart.
- Support
NULLS FIRST
andNULLS LAST
in manager API.
Generator and command line tools:
- Fix custom companion names on
@DataClassName
not being recognized. - Improve schema exports to resolve default values instead of embedding their source.
- Update dependencies to support latest
dart_style
version. - Fix generating dialect-specific code when only a single dialect (that isn't
sqlite3
) is enabled.
Drift 2.22.0
Core drift package:
- Add
sqliteAny()
method to tables to declareANY
columns. - Add missing parentheses around adjacent expressions of the same precedence.
- Fix creating tables that are both
STRICT
andWITHOUT ROWID
. - WASM: Report worker failures to make them easier to diagnose.
- Allow closing stream queries synchronously, making drift easier to use in widget tests.
Generator improvements
- Add support for the
dbstat
module. - Prioritize null propagation in type resolver, leading to more accurate analysis on which columns are nullable.
- CLI options dealing with schemas now support views defined in Dart (#3285).
- Pass language version to dart formatter when generating code.
- Deprecate
package:drift_dev/api/migrations.dart
in favor ofpackage:drift_dev/api/migrations_native.dart
. - Support runtime schema verification on the web.
- Fix generated code missing question marks for nullable types in some instances.
- Add (opt-in)
row_class_constructor_all_required
builder option. - Support the
dbstat
table in drift-file queries when enabling thedbstat
module. - Fix
make-migrations
using invalid import URIs in generated test on Windows.
drift_flutter 0.2.2
- Fix infinite loop in isolate server lookups when using
shareAcrossIsolates
across hot restarts.
Drift 2.21.0
Versions 2.21.0 of drift
and drift_dev
as well as version 0.2.1 of drift_flutter
have just been released:
Core changes
View.from
is now declared to return aJoinedSelectStatement
, the type it returns at runtime.- The manager APIs now support computed fields, allowing advanced SQL expressions to be embedded into simple manager queries.
Isolate improvements
- To infer whether serialization is required for inter-isolate communication, drift now sends a test message instead of serializing by default.
drift_flutter
: Enable serialization between background isolates where necessary.
Tooling and generator
- The DevTools extension can now clear drift databases.
- Fix Dart-defined
check
constraints not being considered in exported schemas. - Columns can now be defined with
late final
fields. Defining columns with getters=>
is still supported too.class MyTable extends Table { // Before: IntColumn get id => integer().autoIncrement()(); // After: late final id = integer().nullable()(); }
- Make
build.yaml
definitions passbuild_runner doctor
. - Fix
generate_manager
option not consistently being applied to modular builds. - Add the
make-migrations
command which combines the existing schema commands into a single tool.
Drift 2.20.3
This patch release fixes a deadlock that could occur when using concurrent nested transactions, a problem introduced in the 2.20.0 release (#3244). Note that drift_worker.js
bundles from drift version 2.20.0 until 2.20.2 also have the issue and need to be updated to apply the fix.
Drift 2.20.1
This patch release fixes the following issues:
Core drift package
- Migrate legacy
package:drift/web.dart
to the new JS interop SDK libraries. For backwards compatibility, thechannel()
extension on theMessagePort
class indart:html
has been kept.
Oncedart:html
is removed from the Dart SDK, that extension will have to be removed from drift as well. - Fix cast errors in the protocol for remote workers when compiling with
dart2wasm
. - Introduce a faster protocol for communicating with workers. This protocol is enabled automatically after upgrading
drift_worker.js
.
Generator
- Strip leading numbers when generating modular accessor names for drift files, fixing syntax errors.
- Support triggers targeting views.
- Include dialect-specific constraints in exported schema files.
- Fix
schema export
not respecting column constraints of the target dialect. - Resolve
json_extract
return types from context if possible.
Drift 2.20.0
Drift changes
- Add
readPool
parameter toNativeDatabase
. It will spawn an additional pool of isolates used to serve multiple reads in parallel, which can improve performance in some specific workloads. - Mark legacy
package:drift/web.dart
as deprecated. Users should migrate topackage:drift/wasm.dart
.
drift_dev changes
- Improve manager API to be able to resolve references when running queries.
- Add
TableIndex.sql
, allowing database indexes to be defined in SQL without using drift files. - Add
DataClassName.implementing
, which can be used to make drift-generated row classes implement existing interfaces.
drift_flutter changes
- Add
DriftNativeOptions
withshareAcrossIsolates
option that will give multiple isolates access to the same drift database without having to manually set up ports.
Drift 2.19.1
This patch release fixes exclusively
not working on the web (#3089). The fix requires a drift_worker.js
update.