v0.8.0
⚠️ Prisma Schema Breaking Changes
This release contains some changes to the format of the Prisma Schema.
Most of these changes are due to a conceptual shift from allowing implicit behaviour to forcing verboseness to reduce the amount of under the hood magic that Prisma does, thankfully this means that a lot of the changes that you will be required to make should be pretty straightforward and easily fixable by running prisma format which will show you all the places that need changed in your schema.
Changes:
- Explicit unique constraints for 1:1 relations
- Removed support for usage of references on implicit m:n relations
- Enforcing uniqueness of referenced fields in the references argument in 1:1 and 1:m relations for MySQL
- Removal of the
sqlite://URL prefix, you should now usefile://instead - Improved grammar for string literals
For more details see the Prisma v4.0.0 upgrade path.
⚠️ Internal Raw Query Changes
This release includes an internal restructuring of how raw queries are deserialized. While all these changes should be completely backwards compatible, there may be edge cases that have changed. If you encounter one of these edge cases please open an issue and it will be fixed ASAP.
For some additional context, this restructuring means that most fields will internally be returned as strings until Prisma Client Python deserializes them (previously this was done at the query engine level).
CLI Improvements
This release completely refactors how the Prisma CLI is downloaded and ran. The previous implementation relied on downloading a single pkg binary, this worked but had several limitations which means we now:
- Support ARM architectures & certain Linux distributions
- Support running Prisma Studio from the CLI
- Support generating the JS Client
- No longer have to maintain a separate implementation from Prisma for detecting the current platform & logic for downloading engines
- As a user this means that more platforms & architectures will be supported faster!
The new solution is involves directly downloading a Node.js binary (if you don't already have it installed) and directly installing the Prisma ClI through npm. Note that this does not pollute your userspace and does not make Node available to the rest of your system.
This will result in a small size increase (~150MB) in the case where Node is not already installed on your machine, if this matters to you you can install Prisma Client Python with the node extra, e.g. pip install prisma[node], which will install a Node binary to your site-packages that results in the same storage requirements as the previous pkg solution. You can also directly install nodejs-bin yourself. It's also worth noting that this release includes significant (~50%) reduction in the size of the Prisma Engine binaries which makes the default Node binary size increase less impactful.
Prisma Studio
With this release you can now run Prisma Studio from the CLI which makes it incredibly easy to view & edit the data in your database. Simply run the following command
$ prisma studio
Or
$ prisma studio --schema=backend/schema.prisma
Note that there is also a dark mode available
Support for CockroachDB
This release adds official support for CockroachDB. You could've used CockroachDB previously by setting provider to postgresql but now you can explicitly specify CockroachDB in your Prisma Schema:
datasource db {
provider = "cockroachdb"
url = env("COCKROACHDB_URL")
}It should be noted that there are a couple of edge cases:
- BigInt ID fields cannot be atomically updated
- BigInt & Int fields cannot be atomically divided
- Array push operation is not supported
Prisma Updates
TL;DR for improvements made by Prisma that will now be in Prisma Client Python
- [3.14.0] PostgreSQL extended indexes support (now generally available)
- [4.0.0] Defaults for scalar lists
- [4.3.0] Prisma CLI exit code fixes
- [4.5.0] PostgreSQL extension management
- [4.7.0] Prisma Schema relationMode is now generally available
- [4.7.0] Query across multiple database schemas in PostgreSQL
- [4.8.0] Decreased the size of the Query Engine binary ~50%
- [4.8.0] Improved support for OpenSSL 3.x
Full list of changes:
- https://github.com/prisma/prisma/releases/tag/3.14.0
- https://github.com/prisma/prisma/releases/tag/3.15.0
- https://github.com/prisma/prisma/releases/tag/3.15.1
- https://github.com/prisma/prisma/releases/tag/3.15.2
- https://github.com/prisma/prisma/releases/tag/4.0.0
- https://github.com/prisma/prisma/releases/tag/4.1.0
- https://github.com/prisma/prisma/releases/tag/4.1.1
- https://github.com/prisma/prisma/releases/tag/4.2.0
- https://github.com/prisma/prisma/releases/tag/4.2.1
- https://github.com/prisma/prisma/releases/tag/4.3.0
- https://github.com/prisma/prisma/releases/tag/4.3.1
- https://github.com/prisma/prisma/releases/tag/4.4.0
- https://github.com/prisma/prisma/releases/tag/4.5.0
- https://github.com/prisma/prisma/releases/tag/4.6.0
- https://github.com/prisma/prisma/releases/tag/4.7.0
- https://github.com/prisma/prisma/releases/tag/4.7.1
- https://github.com/prisma/prisma/releases/tag/4.8.0
Miscellaneous Changes
- Added tests for MariaDB
- Add validation to ensure model names do not clash with reserved keywords
- Removed dev dependencies from the package distribution
- Fixed incorrect type references under certain conditions for partial models
- Added tests to ensure unsupported features for a given database do not pass type checks
- Fixed docs typo - thanks @HigherOrderLogic!
- Moved binaries outside of
/tmpby default
Public Roadmap
Going forward we will now use a GitHub Project to track state and relative priority of certain issues. If you'd like to increase the priority of issues that would benefit you please add 👍 reactions.
This is less of a roadmap per se but will hopefully give you some insight into the priority of given issues / features.
Attributions
Thank you to @kfields for helping with raw query deserialization!
Massive thank you to @prisma & @techied for their continued support and @exponential-sponsorship for becoming a sponsor!

