Skip to content

Releases: simolus3/drift

Drift 2.24.0

21 Jan 22:17
drift-2.24.0
ef28c48
Compare
Choose a tag to compare

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 of TypeConverter.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 the analyzer 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

05 Jan 15:45
drift-2.23.1
53ce1f6
Compare
Choose a tag to compare

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

27 Dec 17:03
drift-2.23.0
e7c49e5
Compare
Choose a tag to compare

This drift release contains smaller fixes and new features:

Core query builder:

  • Allow building compound select statements in Dart.
  • Support NULLS FIRST and NULLS 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

28 Nov 20:35
drift-2.22.0
b5660f6
Compare
Choose a tag to compare

Core drift package:

  • Add sqliteAny() method to tables to declare ANY columns.
  • Add missing parentheses around adjacent expressions of the same precedence.
  • Fix creating tables that are both STRICT and WITHOUT 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 of package: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 the dbstat 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

14 Oct 21:54
drift-2.21.0
3c11432
Compare
Choose a tag to compare

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 a JoinedSelectStatement, 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 pass build_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

29 Sep 12:09
drift-2.20.3
f38c539
Compare
Choose a tag to compare

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

08 Sep 13:17
drift-2.20.1
74af262
Compare
Choose a tag to compare

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, the channel() extension on the MessagePort class in dart:html has been kept.
    Once dart: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

16 Aug 09:09
drift-2.20.0
c49bd49
Compare
Choose a tag to compare

Drift changes

  • Add readPool parameter to NativeDatabase. 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 to package: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 with shareAcrossIsolates option that will give multiple isolates access to the same drift database without having to manually set up ports.

Drift 2.19.1

12 Jul 11:03
drift-2.19.1
7b2168c
Compare
Choose a tag to compare

This patch release fixes exclusively not working on the web (#3089). The fix requires a drift_worker.js update.

Drift 2.19.0

11 Jul 11:40
drift-2.19.0
2e343a5
Compare
Choose a tag to compare

Drift 2.19.0 expands the migrator API and adds a method to exclusively use the database without a transaction (useful for things like setting pragmas which are unsupported in transactions).

  • Add exclusively method to database classes, allowing a block to temporarily take exclusive control over a database connection without starting a transaction.
  • Add the enableMigrations parameter to WasmDatabase to control whether drift migrations are enabled on that database.
  • Add initiallyDeferred option to references() column builder for foreign key constraints.
  • Add dropColumn method to Migrator.
  • Add selectExpressions method to build select statements without a FROM clause.
  • Both transaction and exclusively will wait for the transaction or the exclusive lock to be set up before invoking their callback now.
  • In drift files: Support for sqlite 3.46.0.

This release also fixes the following bugs:

  • Fix encoding BigInt arguments in batched statements sent to web workers. Note that the fix also requires the latest drift_worker.js to be effective.
  • Fix stream queries possibly cancelling a migration if they are the first method on the database.
  • Drift files: Make columns coming from subquery expressions nullable.
  • Fix generated CREATE VIEW statements containing existing row class syntax only supposed to be used during static analysis.
  • Fix Dart views referencing the same column from different table aliases using columns with the same name.
  • Fix drift_dev schema steps generating invalid code when no migrations have been defined yet.
  • Fix generated imports for extension member references in modular mode.

While not part of the core packages in this repository, another addition is drift_hrana, which allows using drift with a libsql server - that may be useful for some Dart backends using Turso or related offerings.