v1.0.0-rc.4
Pre-release- Supported nested transactions in @tursodatabase/database and @tursodatabase/database-wasm
- Filesystem-less migrator for @tursodatabase/database-wasm at drizzle-orm/tursodatabase/wasm-migrator
- Codec system to mysql
- Added @tursodatabase/serverless driver support
- Added @tursodatabase/sync driver support
- Added @effect/sql-pglite driver support
- Added @effect/sql-sqlite-node driver support
- Added @effect/sql-sqlite-bun driver support
- Added @effect/sql-sqlite-do driver support
- Added @effect/sql-sqlite-wasm driver support
- Added @effect/sql-libsql driver support
- Added @effect/sql-d1 driver support
- Added @effect/sql-mysql2 driver support
- Updated SQLite db.$count builder to include .sync() executor for sync drivers
- Switched sqlite RQBv2 to array mode
- Enabled optimized default query mappers for sqlite
- Reworked sqlite sessions to replace per-driver PreparedQuery instances with executors passed via sessions
- Split SQLite into async and effect versions with sync as subtype of async
- Split mysql into async and effect versions
- Improved codec system in set operators for PG and MySQL to handle type casting and codec application across union queries
- Improved typed sql operator to preserve nullability, infer initial data type to mapWith callback argument, and added .nullable() method
- Improved db.insert(table).select(...) to remove column order match requirement and allow skipping selection for columns with defaults or nullability
- pg-proxy added dialect config to optional dialect creator callback
- View types when using Subquery in selection
- Custom types' JSON field API not being applied when column is used as a decoder on SQL fields
- Codecs not getting applied to SQL field when .mapWith(column) is set
- Subquery fields' columns' codecs not being applied to subquery
- Broken db.select in bun-sql/pg driver
- Instances of sqlite query errors not being wrapped in DrizzleQueryError
- Type error on CockroachArrayBuilder constructor caused by referencing internal field's type
- Wrong bun-sqlite run result type
- Missing string overload on .comment(sqlCommenterComment) in query builders
- SQLite cache using same cache entry for different execute methods
- MySQL float rounding to either 6 digits or double
- MySQL cropping .000 from timestamp(3)
- sql.param passing Placeholder as expected input value to encoder function instead of Placeholder's value type
- Unguarded Buffer reference in drizzle-orm/effect-schema that caused error in environments without Buffer
- SQLite blob column runtime-type default mode mismatch
- generatedByDefaultAsIdentity columns not being filtered from inserts in runtime in postgres dialect
- @effect/sql-pg driver returning object response instead of raw response on db.execute
- Postgres pull from failing for non-admin roles
- MSSQL INSERT including generatedAlwaysAs (computed) columns in the column list
- RQBv1 from sqlite and RQBv1 TSchema, TFullSchema arguments from sqlite entities' generics
- mapResult method from PreparedQuery interface and mapResult, mapBatchResult from pg and sqlite raw queries
- SQLiteSyncDialect and SQLiteAsyncDialect, moved generic SQLite async/sync migrators to sqlite-core/async/session
v1.0.0-rc.4
- Fixed broken
Viewtypes when usingSubqueryin selection - Fixed custom types' JSON field API not being applied when column is used as a decoder on
SQLfields - Fixed codecs not getting applied to
SQLfield when.mapWith(column)is set (fixes #5724) - Fixed
Subqueryfields' columns' codecs not being applied to subquery - Fixed broken in
rc.3db.selectinbun-sql/pgdriver (fixes #5779) - Updated SQLite
db.$countbuilder to include.sync()executor for sync drivers - Removed RQBv1 from
sqlite, removed RQBv1TSchema,TFullSchemaarguments fromsqliteentities' generics - Fixed instances of
sqlitequery errors not being wrapped inDrizzleQueryError(db.batch()excluded due to api incompatibility) - Fixed type error on
CockroachArrayBuilderconstructor caused by referencing internal field's type - Removed
mapResultmethod fromPreparedQueryinterface, removedmapResult,mapBatchResultfrompgandsqliteraw queries - Fixed wrong
bun-sqliterun result type - Switched
sqliteRQBv2 to array mode - Enabled optimized default query mappers for
sqlite - Reworked
sqlitesessions: replaced per-driverPreparedQueryinstances with executors passed via sessions, similar to currentpostgresqlandmysqlimplementations, moveduseJitMappersflag handling to dialect - Fixed missing
stringoverload on.comment(sqlCommenterComment)in query builders - Supported nested transactions in
@tursodatabase/database,@tursodatabase/database-wasm - Added filesytem-less migrator for
@tursodatabase/database-wasmatdrizzle-orm/tursodatbase/wasm-migrator - Split SQLite into
async,effectversions (syncremains subtype ofasync) - Removed
SQLiteSyncDialect,SQLiteAsyncDialect, moved generic SQLiteasync\syncmigrators tosqlite-core/async/sessionasmigrateSync,migrateAsync - Fixed
sqlitecache using same cache entry for different execute methods - Moved
EffectDrizzlePgConfigtodrizzle-orm/pg-core/effect/utils - Made
cachefield inEffectCacheShapeoptional - Split
mysqlintoasync,effectversions - Added codec system to
mysql - Fixed
mysqlfloatrounding to either 6 digits or double - Fixed
mysqlcropping.000fromtimestamp(3) - Moved subquery mapper selection from
dialect.buildSelectiontoorderSelectedFields; - [
PG,MySQL] Improved codec system in set operators:- When different db types are crossed in a union, db casts them to type it deems as closest compatible to all types involved
- If columns with codecs are set on both sides of union - codec of combined type will apply
- If only the left-hand side of union has field with codec - left hand side's codec is preserved
- If left-hand side field is devoid of codecs - field is not processed by codecs;
- Set operator queries are switched from
[QUERY 1] UNION [QUERY 2]toSELECT ... FROM ([QUERY 1] UNION [QUERY 2]) "drizzle_union"so cast codecs would apply after union's type mutation - Retrieved data of union with different types still may be lossy due to db's own conversion
- Bump required
effectpackage versions to4.0.0-beta.83 - Fixed
sql.parampassingPlaceholderas expected input value to encoder function instead ofPlaceholder's value type - Fixed unguarded
Bufferreference indrizzle-orm/effect-schemathat caused error in environments withoutBuffer - Fixed
sqliteblobcolumn runtime-type default mode mismatch (fixes #1064) - Improved typed
sqloperator - preserved nullability, inferred initial data type tomapWithcallback argument, added.nullable()method to modify output type with| null(fixes #571):// Before: sql<Type | null>`...`.mapWith((v: any) => String(v)) // Output type: string // After: sql<Type | null>`...`.mapWith((v: Type) => String(v)) // Output type: string | null // `.nullable()` method: sql`...`.mapWith((v: unknown) => new Type(v)).nullable() // Output type: Type | null - Fixed
generatedByDefaultAsIdentitycolumns not being filtered from inserts in runtime inpostgresdialect - Improved
db.insert(table).select(...): removed column order match requirement, allowed skipping selection for columns with defaults or nullability (fixes #3608)
Drivers
-
Updated
@tursodatabase/database,@tursodatabase/database-wasmto v0.6.0, updated session internals for asynchronous prepare on driver side -
Added
@tursodatabase/serverlessdriver support -
Added
@tursodatabase/syncdriver support -
Added
@effect/sql-pglitedriver support -
Added
@effect/sql-sqlite-nodedriver support -
Added
@effect/sql-sqlite-bundriver support -
Added
@effect/sql-sqlite-dodriver support -
Added
@effect/sql-sqlite-wasmdriver support -
Added
@effect/sql-libsqldriver support -
Added
@effect/sql-d1driver support -
Added
@effect/sql-mysql2driver support -
Fixed
@effect/sql-pgdriver returning object response instead of raw response ondb.execute -
pg-proxy: added dialect config to optional dialect creator callback -
Fixed postgres pull from failing for non-admin roles (fixes #5568)
Drizzle Kit
Machine-readable output & programmatic SDK
- Added an
--output text|jsonmode togenerate,push,pull,up,export, andcheck. Injsonmode each command emits a typed JSON envelope (status, errors, payloads) for programmatic and agent consumption (see OUTPUT_MODES.md, JSON_CONTRACT.md) - Shipped a public programmatic SDK at the
drizzle-kit/clisubpath exposinggenerate(),push(),pull(),up(),exportSql(), andcheck()with typed options and results matching the CLI JSON contract (see SDK.md) - Auto-detected non-interactive mode (
--output json, or--output textwith a non-TTY stdin) no longer renders interactive prompts. Instead, unresolved renames and destructive changes (confirm_data_loss) are surfaced as amissing_hintsenvelope (or a missing-decisions report undertext) and resolved by supplying a structuredhintsarray up front via--hints/--hints-file(see HINTS.md)
MCP server
- Added
drizzle-kit mcp, a Model Context Protocol server over stdio that exposes the migration lifecycle (generate,push,check,export,up,pull) as MCP tools for any MCP-capable AI agent (see MCP.md)
Agent skills
- Added
drizzle-kit skills, which installs Drizzle Kit's bundled Agent Skills into your project for AI coding assistants. Ships 8 skills:drizzle,drizzle-generate,drizzle-hints,drizzle-migrations,drizzle-output-modes,drizzle-pull,drizzle-push, anddrizzle-responses-and-errors(seedrizzle-kit/skillsfolder)