Reference

Support matrix

Dialect support for reads, writes, upsertMany, raw SQL, transactions, and package compatibility.

This page is the practical compatibility matrix for better-drizzle@0.1.x.

Package compatibility

PackageVersion line
better-drizzle0.1.x
@better-drizzle/soft-delete0.1.x
@better-drizzle/timestamps0.1.x
drizzle-orm peer^0.30.0
typescript peer^5

Core delegate API

CapabilityPostgreSQLSQLiteMySQL
findMany, findFirst, findOne, findUniqueYesYesYes
count, exists, paginateYesYesYes
create, update, delete, upsertYesYesYes
createMany, updateMany, deleteManyYesYesYes
repository(name)YesYesYes
hooks and pluginsYesYesYes

Conflict-handling features

CapabilityPostgreSQLSQLiteMySQL
create({ skipDuplicates: true })YesYesdialect-dependent
createMany({ skipDuplicates: true })YesYesdialect-dependent
skipDuplicates: ['column'] explicit targetsYesYesNo
upsertManyYesYesNo

upsertMany is intentionally native-first and currently supported only on PostgreSQL and SQLite.

Result projection support

CapabilityPostgreSQLSQLiteMySQL
select on readsYesYesYes
include on readsYesYesYes
select / include on single-row writesYesYesYes
select on upsertManyYesYesNo support because upsertMany itself is unsupported
relation include on upsertManyNoNoNo

Raw SQL options

CapabilityPostgreSQLSQLiteMySQL
$raw / $executeRawYesYesYes
$rawUnsafe with allowUnsafeYesYesYes
comment supportBest supportlimitedlimited
timeoutMsdriver-dependentdriver-dependentdriver-dependent
raw hooksYesYesYes

Transactions

CapabilityPostgreSQLSQLiteMySQL
transaction()YesYesYes
nested transactions / savepointsYesYesYes
afterCommit / afterRollbackYesYesYes
retry optionsYesYesYes
isolationLevelYesignoreddriver-dependent
readOnlyYesignoreddriver-dependent
transaction commentPostgreSQL-orientedignoreddriver-dependent

Official plugins

PluginPostgreSQLSQLiteMySQL
@better-drizzle/timestampsYesYesYes
@better-drizzle/soft-deleteYesYesYes

Policy

When a feature is not safely supported by the current dialect, better-drizzle prefers to fail fast with a structured error instead of silently degrading to a slower or weaker implementation.

On this page