π Help us spread the word about Prisma by starring the repo or tweeting about the release. π
Highlights
Interactive Transactions for Prisma Data Proxy (Preview)
In 3.8.0, we disabled the interactiveTransactions
Preview feature when using the Prisma Data Proxy. This was because the API was not yet supported.
In this release, we're removing the limitation. You can now try the Preview version of interactive transactions with the Prisma Data Proxy. Re-generate Prisma Client using prisma generate --data-proxy
after enabling the Preview feature.
Note: The interactiveTransactions
Preview feature flag is still needed. We will remove this in a future version when the feature is stable.
Try it out and let us know your thoughts in our interactive transactions feedback GitHub issue.
Native database level upserts for PostgreSQL, SQLite, and CockroachDB
Prismaβs upsert is one of its most powerful and most convenient APIs. In this release, Prisma will now default to the native database upsert for PostgreSQL, SQLite, and CockroachDB whenever possible.
Prisma will use the native database upsert if:
- There are no nested queries in the upsert
's create
and update
options
- The query modifies only one model
- There is only one unique field in the upsert
's where
option
- The unique field in the where
option and the unique field in the create
option have the same value
Prisma Client's upsert
operation was implemented on a Prisma-level and did not use the native database implementations like, e.g., INSERT .. ON CONFLICT .. UPDATE SET
. This allowed Prisma to also upsert nested queries.
The Prisma-implementation came at a cost. In some scenarios, it was more likely for a transaction to roll back because of a conflict when multiple upsert
operations were being executed in parallel, and the multiple queries often took longer than the native database query would have taken.
Try it out and let us know what you think. If you run into any issues, don't hesitate to create a GitHub issue.
Relation Mode improvements (Preview)
In 4.5.0, we renamed the "Referential Integrity" Preview feature to "Relation Mode". We also changed the datasource
property name of the feature to relationMode
.
In this release, we fixed all remaining known bugs of relationMode = "prisma"
and cleaned up our documentation. You can now read about Relation mode on its own documentation page which is up to date with the implementation.
If you encounter any problems please comment on our feedback issue. We plan to make this Generally Available soon.
extendedWhereUnique
improvements (Preview)
In 4.5.0, we introduced the extendedWhereUnique
Preview feature to allow filtering for non-unique properties in unique where queries. In this release, we're adding new rules to decide when concurrent findUnique
queries get batched into a findMany
query.
Unfortunately, we forgot to adapt our findUnique
query batch optimization, which turns multiple concurrent findUnique
queries into a single findMany
query when possible β GitHub issue.
Therefore, findUnique
queries will get batched into a findMany
query if:
- All criteria of the filter must be on scalar fields (unique or non-unique) of the same model you're querying
- All criteria must use the equal's filter, whether that's via the shorthand or explicit syntax (where: { field: <val>, field1: { equals: <val> } }
)
Conversely, suppose the filter object contains any boolean operators, relation filters, or scalar filters that are *not* using equals
. Prisma will fall back to executing the findUnique
queries independently.
Let us know your thoughts and share your feedback on the Preview feature in this GitHub issue.
Fixes and improvements
Prisma Client
Prisma
Language tools (e.g. VS Code)
Design Partner Program
Are you building data-intensive applications in serverless environments using Prisma? If so, you should join our Design Partner Program to help us build the tools that best fit your workflows!
The Design Partner Program aims to help development teams solve operational, data-related challenges in serverless environments. Specifically, weβre looking to build tools that help with the following problems:
- Solutions to listen and react to database changes in real time are either brittle or too complex to build and operate.
- Coordinating workflows executed via a set of isolated functions or services spreads that coordination logic across these services instead of keeping it centralized and maintainable. This adds unnecessary overhead and clutter to your business logic.
- Optimizing the data access layer for scaling performance often involves projecting data into denormalized views, or caching. These methods come with complex logic to figure out strategies for cache invalidation or preventing to use stale data.
- Building web applications on modern Serverless platforms such as Vercel or Netlify often breaks down as soon as you need to execute on any of the topics listed above. This pushes to re-platform on a traditional infrastructure, delaying projects, and losing productivity benefits offered by Vercel or Netlify.
Submit an application through our application form to join the Prisma Design Partner Program to take advantage of new features that you won't have to build or maintain yourselves.
Prisma Data Platform
We're working on the Prisma Data Platform β a collaborative environment for connecting apps to databases. It includes the following:
- Data Browser for navigating, editing, and querying data
- Data Proxy for your database's persistent, reliable, and scalable connection pooling.
- Query Console for experimenting with queries
Try it out. Let us know what you think!
πΊ Join us for another "What's new in Prisma" live stream
Learn about the latest release and other news from the Prisma community by joining us for another "What's new in Prisma" live stream.
The stream takes place on YouTube on Thursday, November 10 at 5 pm Berlin | 8 am San Francisco.
Credits
Huge thanks to @cmd-johnson for helping!