Releases: simolus3/drift
Drift 2.26.0
This release adds support for window functions in the Dart query builder (through WindowFunctionExpression
) and contains improvements to the generator:
- Fix warning on Dart-defined views referencing the same table multiple times.
- Don't generate unnecessary verification code.
- Suggest a test with data integrity when adding a new column without a default
value inmake-migrations
.
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.