npm @prisma/client 3.9.0

latest releases: 5.21.0-dev.3, 5.21.0-integration-itx-refactor.16, 5.21.0-integration-itx-refactor.15...
2 years ago

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.

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

Prisma Migrate

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.

Don't miss a new client release

NewReleases is sending notifications on new releases.