๐ **Help us spread the word about Prisma by starring the repo or [tweeting](https://twitter.com/intent/tweet?text=Check%20out%20the%20latest%20prisma%20release%20v4.9.0%20%F0%9F%9A%80%0D%0A%0D%0Ahttps://github.com/prisma/prisma/releases/tag/4.9.0) about the release.** ๐
Highlights
Initial support for database views (Preview)
This release introduces a new keyword, `view`, behind the `views` [Preview](https://www.prisma.io/docs/about/prisma/releases#preview) feature flag. You can manually add a `view` to your Prisma schema, which is ignored when running migrations. This is a small step forward but should already be helpful to many of you depending on workarounds and shell scripts to work with views and Migrate.
Here is an example usage of `views`:
prisma
generator client {
provider = "prisma-client-js"
previewFeatures = ["views"]
}
view UserInfo {
id Int id
// from the User model
email String
name String
// from the Profile model
bio String
}
model User {
id Int id default(autoincrement())
email String unique
name String?
profile Profile?
}
model Profile {
id Int id default(autoincrement())
bio String
user User relation(fields: [userId], references: [id])
userId Int unique
}
To learn more, head to our [documentation](https://prisma.io/docs/concepts/components/prisma-schema/views). Try it out and let us know your thoughts on this [GitHub issue](https://github.com/prisma/prisma/issues/17335).
Multi-schema support for SQL Server (Preview)
We're thrilled to share that this release adds Preview support for multi-schema for SQL Server.
This release adds support for:
- Introspecting databases that organize objects in multiple database schemas
- Managing multi-schema database setups directly from Prisma schema
- Generating migrations that are database schema-aware with Prisma Migrate
- Querying across multiple database schemas with Prisma Client
If you already have a SQL Server database using multiple schemas, you can quickly get up and running and set up multiple schemas by:
- Enabling the Preview feature in the Prisma schema
- Defining the schemas in the `schemas` property in the `datasource` block
- Introspecting your database using `prisma db pull`
You can further evolve your database schema using the multi-schema Preview feature by using `prisma migrate dev`.
For further details, refer to our [documentation](https://prisma.io/docs/guides/database/multi-schema) and let us know what you think in this [GitHub issue](https://github.com/prisma/prisma/issues/15077).
Prisma Client Extensions improvements
In this release, we've made a number of improvements to the Prisma Client Extensions Preview feature:
1. Retrieving the current model name at runtime
You can now get the name of the current model at runtime using `Prisma.getExtensionContext(this).name`. You might use this to write out the model name to a log, to send the name to another service, or to branch your code based on the model. You can learn more about this in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/client-extensions/model#get-the-current-model-name-at-runtime).
1. Improved type safety when defining custom model methods
Prisma Client now provides a set of type utilities that tap into input and output types. They are fully dynamic, which means they adapt to any given model and schema. You can use them to improve your custom model methods' auto-completion. This is especially useful in shared extensions. Learn more about this in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/client-extensions/model#advanced-type-safety-improve-the-type-safety-and-developer-experience-of-your-custom-model-methods).
Let us know what you think in this [GitHub issue](https://github.com/prisma/prisma/issues/16500) and in case you run into any issues, please create a [bug report](https://github.com/prisma/prisma/issues/new?assignees=&labels=kind%2Fbug&template=bug_report.yml).
Introspection and Migration engine improvements
In this release, we moved the Introspection Engine (responsible for `prisma db pull`) which the Migration Engine will now serve. Previously, the Introspection Engine was stand-alone.
Let us know what you think in this [GitHub issue](https://github.com/prisma/prisma/issues/17341) and in case you run into any issues, please create a [bug report](https://github.com/prisma/prisma/issues/new?assignees=&labels=kind%2Fbug&template=bug_report.yml).
MongoDB `WriteConflict` bug fix
This version also comes with a notable bug fix: In our MongoDB provider, any queries that are returned with a `WriteConflict` error Prisma now will retry the query, similar to how other MongoDB drivers and clients do.
Prisma plugin for JetBrains IDEs
If you are using a JetBrains IDE the team over at JetBrains recently released an [official Prisma plugin in their Plugin Marketplace](https://plugins.jetbrains.com/plugin/20686-prisma-orm).
Thank you, JetBrains, for working on this! Next to our [VS Code extension for Prisma](https://marketplace.visualstudio.com/items?itemName=Prisma.prisma) and our [general language server, which works in many editors](https://www.prisma.io/docs/guides/development-environment/editor-setup), most relevant editors should now be covered.
Accelerate (Early Access)
Weโre thrilled to announce Early Access to [Accelerate](https://www.prisma.io/blog/announcing-accelerate-usrvpi6sfkv4).
Accelerate is a global database cache. It is available in 280 locations and has built-in connection pooling for serverless apps. You can make your queries up to 1000 times faster on any Prisma-supported database, reducing your query response times.
Join the waiting list for Accelerate [here](https://prisma103696.typeform.com/to/WwPDKEQ5).
Fixes and improvements
Prisma
- [Feature Request: Jetbrains (IntelliJ IDEA, Webstorm) Plugin](https://github.com/prisma/prisma/issues/1788)
- [Misleading 'We need to reset the PostgreSQL database' when using PostgreSQL _schemas_](https://github.com/prisma/prisma/issues/10043)
- [Solve "P1012 Introspection failed" errors on Windows CI](https://github.com/prisma/prisma/issues/13077)
- [support NanoID](https://github.com/prisma/prisma/issues/14004)
- [Create CI worker without a proper `openssl` or `libc` installation to improve snapshot testing suite](https://github.com/prisma/prisma/issues/14017)
- [db pull --url with an invalid url produces a misleading error message](https://github.com/prisma/prisma/issues/14732)
- [(re)-Introspection errors have a misleading error message](https://github.com/prisma/prisma/issues/16176)
- [multi-schema + introspection: rename models and enums to avoid name collisions](https://github.com/prisma/prisma/issues/16454)
- [multiSchema + introspection: add `--schemas` param to the `db pull` command](https://github.com/prisma/prisma/issues/16455)
- [Cross schema reference with foreign key not working in 4.7.0+](https://github.com/prisma/prisma/issues/16585)
- [Handle missing `schemas` property different when cross schema references are detected (when `multiSchema` preview feature is enabled)](https://github.com/prisma/prisma/issues/16615)
- [`db pull` with `multiSchema` enabled and `schemas` defined, outputs `public` in CLI message anyway](https://github.com/prisma/prisma/issues/16635)
- [Remove DML dependency from MongoDB introspection](https://github.com/prisma/prisma/issues/16894)
- [I want short unique id. UUID, CUID are too long](https://github.com/prisma/prisma/issues/16914)
- [Completions: for `schemas` property in `datasource`](https://github.com/prisma/prisma/issues/16920)
- [Completions `schema` attribute](https://github.com/prisma/prisma/issues/16957)
- [OS Support: improve SSL detection on `debian` distros](https://github.com/prisma/prisma/issues/16962)
- [`multiSchema`: add `schemas`ย property to `getConfig` output](https://github.com/prisma/prisma/issues/17031)
- [multiSchema: `migrate reset` with sqlserver does not delete second schema](https://github.com/prisma/prisma/issues/17051)
- [Prisma 4.9.x (dev version) broke `openssl` detection for Linux distros besides Alpine and Debian-based distros, like RHEL](https://github.com/prisma/prisma/issues/17063)
- [Wrong db pull warning with multiSchema preview feature, it says that `These enums were enriched with `map` information taken from the previous Prisma schema.` but the schema file datamodel is actually empty.](https://github.com/prisma/prisma/issues/17095)
- [PSL: Recognize the `view` keyword](https://github.com/prisma/prisma/issues/17115)
- [ previewFeatures = ["multiSchema"] Error when doing db pull](https://github.com/prisma/prisma/issues/17176)
- [17126 broke the `platform-serverless-vercel/vercel-cli` ecosystem tests](https://github.com/prisma/prisma/issues/17264)
- [When `distro`ย is undefined, the output of `ldconfig` is ignored because of the `sed: -e expression 1, char 7: unknown option to `s'` silent error](https://github.com/prisma/prisma/issues/17321)
Prisma Client
- [Detect absense of openssl and inform the user about it](https://github.com/prisma/prisma/issues/6211)
- [prisma4.7.1 - "RangeError: Maximum call stack size exceeded" when clientExtensions enabled](https://github.com/prisma/prisma/issues/16600)
- [Prisma 4.8 produces conflicting typescript types for custom many to many relations](https://github.com/prisma/prisma/issues/17005)
- [Using findUnique on 4.8.0 with nested `where` and `include` produces an object that doesn't include entities you specify in `include`](https://github.com/prisma/prisma/issues/17030)
- [Error: Maximum call stack size exceeded is thrown after I used clientExtensions as preview feature.](https://github.com/prisma/prisma/issues/17236)
- [MongoDB: Using `delete` on a one-to-one relation while updating removes other relations](https://github.com/prisma/prisma/issues/17255)
- [Promise types are not unwrapped properly when using async/await in WebStorm](https://github.com/prisma/prisma/issues/17266)
- [Deeply nested objects aren't typed when clientExtensions is enabled](https://github.com/prisma/prisma/issues/17349)
Prisma Migrate
- [migrations: Ignore view definitions](https://github.com/prisma/prisma/issues/17117)
- [Migrate dev breaks on multiSchema with SQL Server](https://github.com/prisma/prisma/issues/17220)
Language tools (e.g. VS Code)
- [Improve local development workflow and update documentation](https://github.com/prisma/language-tools/issues/961)
- [Integer.MAX_VALUE is not portable across clients](https://github.com/prisma/language-tools/issues/1086)
- [Quick Fix: add `schema` attribute to model / enum](https://github.com/prisma/language-tools/issues/1329)
- [Completions: from the list of available schema namespaces](https://github.com/prisma/language-tools/issues/1332)
- [Recognizing the `view` keyword](https://github.com/prisma/language-tools/issues/1346)
Prisma Engines
- [update napi dependencies from `2.9.1` to `2.10.1`](https://github.com/prisma/prisma-engines/issues/3521)
- [me/ie rewiring: add `introspect` tests to `migration-engine`](https://github.com/prisma/prisma-engines/issues/3559)
Credits
Huge thanks rintaun, ivan, Mini256, fubhy, unflxw, Mosaab-Emam for helping!
๐บ 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"](https://youtube.com/playlist?list=PLn2e1F9Rfr6l1B9RP0A9NdX7i7QIWfBa7) live stream.
The stream takes place [on YouTube](https://youtu.be/A6AbeZF4cUY) on **Thursday, January 26** at **5 pm Berlin | 8 am San Francisco**.