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/rules0.1.x
@better-drizzle/soft-delete0.1.x
@better-drizzle/timestamps0.1.x
@better-drizzle/zod0.1.x
drizzle-orm peer^0.30.0
typescript peer^5

Core delegate API

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

JSONB filters

CapabilityPostgreSQLSQLiteMySQL
typed JSONB scalar pathsYesrejectedrejected

Typed JSONB filters require jsonb(...).$type<T>() and support scalar dot paths only.

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

Row locks

CapabilityPostgreSQLSQLiteMySQL
lock: 'update' / lock: 'share'YesrejectedYes
lock: 'noKeyUpdate' / lock: 'keyShare'Yesrejectedrejected
skipLocked / noWaitYesN/AYes
tables (lock specific tables)Yesrejectedrejected
locks.transactionsOnlyYesYesYes

Official plugins

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

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