Skip to content

Limits ​

LaravelXTDB
update() / delete() return valuesalways 0 (XTDB reports no affected rows)
insert() of an existing _idreplaces the whole row
upsert()PATCH, matched by _id only; existing rows get every given column
insertOrIgnore(), inRandomOrder(), JSON path updates (update(['a->b' => ...])), array indexes in JSON pathsUnsupportedFeatureException
lockForUpdate(), sharedLock()ignored (no row locks)
whereLike() / ilikelower(col) like lower(?)
window functions, HAVING on select aliases, subqueries in UPDATE ... SETnot supported by XTDB
min/max/sum/avg of a column that never held a valuenull (XTDB raises an error; the driver returns null)

XTDB 2.2.0-beta3 issues the driver works around: ? = any(list) followed by AND/OR evaluates to false (XTDB parses the rest of the condition into the ANY; compiled as (? = any(list)) is true), and LIKE ... ESCAPE matches nothing, so % and _ cannot be matched literally with like (the search helpers use position()).

Known XTDB issues ​

tests/KnownIssues reproduces every XTDB limit the driver works around, as plain SQL asserting PostgreSQL behaviour. The tests fail while an issue exists; one that starts passing after an XTDB upgrade means a workaround can be reconsidered:

bash
composer test:known-issues

Released under the MIT License.