Today, we are excited to share the 3.9.0
stable release 🎉
🌟 Help us spread the word about Prisma by starring the repo or tweeting about the release. 🌟
Major improvements and new features
Prisma Migrate improvements to troubleshoot migrations
Last year, we released Prisma Migrate for General Availability. Since then, we've gotten feedback from you to understand the challenges you experience building, testing, and deploying migrations.
We're thrilled to announce that we're introducing new CLI commands to improve the experience troubleshooting migrations:
prisma migrate diff
prisma db execute
The prisma migrate diff
command creates a diff of your database schema, Prisma schema file, or the migration history. All you would have to do is feed the command with a schema from
state and a schema to
state to get an SQL script or human-readable diff in return.
As a companion to the prisma migrate diff
, we also built prisma db execute
to execute SQL scripts against a database. You can pipe the output from prisma migrate diff
directly to prisma db execute
.
Both commands are non-interactive, so it's possible to build many new workflows such as forward and backward migrations with some automation tooling.
Both commands are in Preview, and we are looking forward to learning how they work for you and how we could make them better.
You can learn about them here and give us feedback on the issue.
Preview support for CockroachDB
We are excited to announce Preview support for CockroachDB 🎉
CockroachDB is a distributed SQL database that shines in its ability to scale efficiently while maintaining developer agility and reducing operational overhead.
CockroachDB support in Prisma is the product of collaboration with the Cockroach Labs team, and with this release you can use Prisma in existing CockroachDB projects with introspection.
- Learn more in the release blog post
- Try it out with the getting started guide
- Share your feedback
- Join us this Thursday for What's new in Prisma 3.9.0 where Aydrian Howard from Cockroach Labs will be joining us to discuss CockroachDB and give a demo.
Raw query support for MongoDB
Prisma version 3.9.0
introduces raw queries to the MongoDB (Preview) connector. Raw queries help writing queries that Prisma doesn't support yet, such as:
// To find zero or more documents matching a filter
const result = await prisma.user.findRaw({
filter: { age: { $gt: 25 } },
options: { projection: { _id: false } },
})
// To perform aggregation operations on a collection
await prisma.user.aggregateRaw({
pipeline: [
{ $match: { status: 'registered' } },
{ $group: { _id: '$country', total: { $sum: 1 } } },
],
})
// To run a command against the database
await prisma.$runCommandRaw({
aggregate: 'User',
pipeline: [
{ $match: { name: 'Bob' } },
{ $project: { email: true, _id: false } },
],
explain: false,
})
The raw query API for MongoDB differs from Prisma's $queryRaw
SQL API to handle some low-level differences between databases to give you a better API and developer experience.
Learn more about Prisma's new raw query API and how you can use it in our documentation.
Concurrency issues with Interactive Transactions
In 3.9.0
, we fixed a number of issues around timeouts and rollbacks when there were concurrent reads and writes.
This is part of the Interactive Transactions preview release, so you'll need to enable the interactiveTransactions
preview feature to enable this feature.
If you experienced timeouts or your interactive transactions weren't working quite as you expected, now's the time to upgrade and give it another go!
Learn more about Interactive Transactions in our documentation.
Fixes and improvements
Prisma Client
- Make the MongoDB Replica Set Requirement Optional in Development
- Enable raw query support in MongoDB
- interactiveTransactions: 2 concurrent writes to the same row will cause it to hang until expiring
- interactiveTransactions rollback but don't error out if timeout is reached
- PCO: Pass the trace ID through to an SQL comment
- prisma.$transaction: Benchmark produces unexpected results
- Snapshot serializer in CLI tests doesn't replace time durations >= 1s with a placeholder
- @prisma/sdk v3.8.0: Cannot find module 'fs-jetpack'
- Integrate MongoDB raw queries
- Incorrect type for
DMMF.Field.type
field - Remove internal UDS option and tests from client
- Internal request: have a way to get types string from dmmf
Prisma Migrate
- Unhide
cockroachdb
provider and preview feature flag - Cannot find module 'fs-jetpack' with prisma 3.8.0
- [CDB] Test and improve Default Value Introspection
- Migrate command does not create fulltext index [MySQL]
- MySQL conversion issues on Windows with version 8.0.28
Prisma Studio
Prisma Engines
Credits
Huge thanks to @dusandz, @hyochan, @cesconix, @benkroeger, @YassinEldeeb, @chenkie, @Akxe, @safareli for helping!
Change in release cadence
We're making a slight change to our release cadence to every 3 weeks from every 2 weeks.
📺 Join us for another "What's new in Prisma" livestream
Learn about the latest release and other news from the Prisma community by joining us for another "What's new in Prisma" livestream.
The stream takes place on YouTube on Thursday, February 03 at 5 pm Berlin | 8 am San Francisco.