PackageTrack

npm · #3659 most downloaded on npm

@prisma/client

7.10.0prisma/prisma

Prisma Client is an auto-generated, type-safe and modern JavaScript/TypeScript ORM for Node.js that's tailored to your data. Supports PostgreSQL, CockroachDB, MySQL, MariaDB, SQL Server, SQLite & MongoDB databases.

Release timeline

10653 releases since 2020
20202026

One column per quarter.

Releases

  1. 5.2.0-dev.102 Aug 2023pre-release

    Nothing published for this version

  2. 5.2.0-dev.92 Aug 2023pre-release

    Nothing published for this version

  3. 5.2.0-dev.82 Aug 2023pre-release

    Nothing published for this version

  4. 5.2.0-dev.72 Aug 2023pre-release

    Nothing published for this version

  5. 5.2.0-dev.62 Aug 2023pre-release

    Nothing published for this version

  6. 5.2.0-dev.52 Aug 2023pre-release

    Nothing published for this version

  7. 5.2.0-dev.42 Aug 2023pre-release

    Nothing published for this version

  8. 5.2.0-dev.32 Aug 2023pre-release

    Nothing published for this version

  9. 5.2.0-dev.21 Aug 2023pre-release

    Nothing published for this version

  10. 5.2.0-dev.11 Aug 2023pre-release

    Nothing published for this version

  11. 5.1.13 Aug 2023
    Release notesOpen source →
  12. 5.1.1-dev.43 Aug 2023pre-release

    Nothing published for this version

  13. 5.1.1-dev.32 Aug 2023pre-release

    Nothing published for this version

  14. 5.1.1-dev.22 Aug 2023pre-release

    Nothing published for this version

  15. 5.1.1-dev.12 Aug 2023pre-release

    Nothing published for this version

  16. 5.1.01 Aug 2023
    Release notes

    Today, we are excited to share the 5.1.0 stable release 🎉

    🌟 Help us spread the word about Prisma by starring the repo ☝️ or tweeting about the release.

    Highlights

    After two big releases where we released Client extensions for production usage (4.16.0) and made Prisma faster by default (5.0.0), we have focused on some smaller issues to make the experience with these new features even better.

    Community contributions

    Our community has been on the roll! We appreciate everyone who helps us by opening a GitHub issue or proposing a fix via Pull Requests. In this release, we're excited to highlight multiple community contributions:

    • Fix IPv6 not working for relational databases: https://github.com/prisma/prisma-engines/pull/4051 by @alula
    • Middlewares: Add to PrismaAction type, missing findUniqueOrThrow and findFirstOrThrow https://github.com/prisma/prisma/pull/17471 by @mejiaej and missing groupBy https://github.com/prisma/prisma/pull/19985 by @iurylippo
    • Better error message in currently non-supported runtimes like Browser or Vercel Edge Runtime https://github.com/prisma/prisma/pull/20163 by @andyjy
    • Remove error messages for valid NixOS setups https://github.com/prisma/prisma/pull/20138 by @Gerschtli

    Better performance: Fewer SQL queries on PostgreSQL & CockroachDB

    In our continued and ongoing work to make Prisma faster, we identified some Prisma Client queries that led to multiple SQL statements being executed — although in specific databases, that was not necessary.

    Hence we optimized our internal SQL generation for PostgreSQL and CockroachDB to generate more efficient SQL queries:

    Simple create query

    In a simple create query, RETURNING makes the second query and the transaction statements obsolete:

    Prisma Client query

    prisma.user.create({ 
      data: { name: "Original name" } 
    })
    

    Before v5.1.0

    BEGIN
    INSERT INTO "User" ("name") VALUES ($1) RETURNING "User"."id"
    SELECT "User"."id", "User"."name" FROM "User" WHERE "User"."id" = $1;
    COMMIT
    

    5.1.0 and later

    -- Sends 1 statement (instead of 2) and omits the transaction
    INSERT INTO "User" ("name") VALUES ($1) RETURNING "User"."id", "User"."name"
    

    Simple update query

    For a simple update query, RETURNING makes both additional queries and the transaction statements obsolete:

    Prisma Client query

    prisma.user.update({ 
      where: { id: 1 }, 
      data: { name: "updated" } 
    })
    

    Before v5.1.0

    BEGIN
    SELECT id FROM "User" WHERE "User".id = 1;
    UPDATE "User" SET name = 'updated' WHERE "User".id = 1;
    SELECT id, name FROM "User" WHERE "User".id = 1;
    COMMIT
    

    5.1.0 and later

    -- Sends 1 statement (instead of 3) and omits the transaction
    UPDATE "User" SET name = 'updated' WHERE "User".id = 1 RETURNING "User".id, "User".name;
    

    Simple update query, return with relation value

    One SELECT query could easily be dropped in a simple update query that should return a relation value as well:

    Prisma Client query

    prisma.user.update({ 
      where: { id: 1 }, 
      data: { name: "updated" }, 
      includes: { posts: true }  
    })
    

    Before v5.1.0

    BEGIN
    SELECT id FROM "User" WHERE "User".id = 1;
    UPDATE "User" SET name = 'updated' WHERE "User".id = 1;
    SELECT id, name FROM "User" WHERE "User".id = 1;
    SELECT id, title FROM "Post" WHERE "Post"."userId" = 1;
    COMMIT
    

    5.1.0 and later

    -- Sends 3 statements (instead of 4)
    BEGIN
    UPDATE "User" SET name = 'updated' WHERE "User".id = 1 RETURNING "User".id;
    SELECT id, name FROM "User" WHERE "User".id = 1;
    SELECT id, title FROM "Post" WHERE "Post"."userId" = 1;
    COMMIT
    

    Empty update query

    An empty update query can be optimized to skip the transaction and the second identical query by creating specific handling for this edge case in our code:

    Prisma Client query

    prisma.user.update({ 
      where: { id: 1 }, 
      data: {}, 
    })
    

    Before v5.1.0

    BEGIN
    SELECT id, name FROM "User" WHERE "User".id = 1;
    SELECT id, name FROM "User" WHERE "User".id = 1;
    COMMIT
    

    5.1.0 and later

    -- Sends 1 statement (instead of 2) and omits the transaction
    SELECT id, name FROM "User" WHERE "User".id = 1;
    

    Simple + relation update query (but do not return relation value)

    An update of both the model and its relation, we could drop 2 SELECT queries that we did before without ever using their return values:

    Prisma Client query

    prisma.user.update({ 
      where: { id: 1 }, 
      data: {
        name: "updated",
        posts: {
          update: {
            where: { id: 1 },
            data: {
              title: "updated"
            }
          }
        }
      }
    })
    

    Before v5.1.0

    BEGIN
    SELECT id, name FROM "User" WHERE "User".id = 1;
    UPDATE "User" SET name = 'updated' WHERE "User".id = 1 RETURNING "User".id;
    SELECT "id", "postId" FROM "Post" WHERE "Post".id = 1;
    UPDATE "Post" SET title = 'updated' WHERE "Post"."userId" = 1 AND "Post".id = 1;
    SELECT id, name FROM "User" WHERE "User".id = 1;
    COMMIT
    

    5.1.0 and later

    -- Sends 3 statements (instead of 5) 
    BEGIN
    UPDATE "User" SET name = 'updated' WHERE "User".id = 1 RETURNING "User".id, "User".name;
    SELECT "id", "postId" FROM "Post" WHERE "Post".id = 1;
    UPDATE "Post" SET title = 'updated' WHERE "Post"."userId" = 1 AND "Post".id = 1;
    COMMIT
    

    In the next releases, we will continue optimizing Prisma Client queries to only run the minimal amount of SQL queries necessary.

    If you notice any Prisma Client queries that are affected right now, please check the issues under our performance/queries label. If you didn’t find one for what you’re seeing, please create a new issue. This will be super useful for us to understand all (edge) cases. Thank you!

    Prisma Studio now supports directUrl

    Our CLI command prisma studio that opens Prisma Studio now also can use the directUrl property of the datasource block so you can make it talk to a different database than defined in url. This makes it easier to use Studio alongside the Prisma Data Proxy and Accelerate.

    Prisma Client: No more type clashes

    We fixed (almost) all cases where using a specific term as a model name in your Prisma Schema would lead to a type clash due to Prisma’s generated typings. As a result of a type clash, it was not possible to use that model in your code (this was e.g. the case if you named a model Model or ModelUpdate).

    We also deprecated the <ModelName>Args type as part of that fix. Going forward, <ModelName>DefaultArgs should be used instead.

    Fixes and improvements

    Prisma Client

    Prisma Studio

    Language tools (e.g. VS Code)

    Credits

    Huge thanks to @skyzh, @alula, @michaelpoellath, @RobertCraigie, @Gerschtli, @andyjy, @mejiaej, @iurylippo, @mrazauskas for helping!

    Open source →
  17. 5.1.0-integration-studio-direct-url.1028 Jul 2023pre-release

    Nothing published for this version

  18. 5.1.0-integration-studio-direct-url.928 Jul 2023pre-release

    Nothing published for this version

  19. 5.1.0-integration-studio-direct-url.827 Jul 2023pre-release

    Nothing published for this version

  20. 5.1.0-integration-studio-direct-url.727 Jul 2023pre-release

    Nothing published for this version

  21. 5.1.0-integration-studio-direct-url.627 Jul 2023pre-release

    Nothing published for this version

  22. 5.1.0-integration-studio-direct-url.527 Jul 2023pre-release

    Nothing published for this version

  23. 5.1.0-integration-studio-direct-url.427 Jul 2023pre-release

    Nothing published for this version

  24. 5.1.0-integration-studio-direct-url.327 Jul 2023pre-release

    Nothing published for this version

  25. 5.1.0-integration-studio-direct-url.226 Jul 2023pre-release

    Nothing published for this version

  26. 5.1.0-integration-studio-direct-url.125 Jul 2023pre-release

    Nothing published for this version

  27. 5.1.0-integration-revert-ld-library-path.131 Jul 2023pre-release

    Nothing published for this version

  28. 5.1.0-integration-joel-try-comment.120 Jul 2023pre-release

    Nothing published for this version

  29. 5.1.0-integration-joel-improve-download.331 Jul 2023pre-release

    Nothing published for this version

  30. 5.1.0-integration-joel-improve-download.231 Jul 2023pre-release

    Nothing published for this version

  31. 5.1.0-integration-joel-improve-download.127 Jul 2023pre-release

    Nothing published for this version

  32. 5.1.0-integration-fix-result-query-ext.128 Jul 2023pre-release

    Nothing published for this version

  33. 5.1.0-integration-fix-json-undefined-array.121 Jul 2023pre-release

    Nothing published for this version

  34. 5.1.0-integration-fix-client-types-mixed-input-types.112 Jul 2023pre-release

    Nothing published for this version

  35. 5.1.0-integration-fix-client-oom-default-selection.311 Jul 2023pre-release

    Nothing published for this version

  36. 5.1.0-integration-fix-client-oom-default-selection.211 Jul 2023pre-release

    Nothing published for this version

  37. 5.1.0-integration-fix-client-oom-default-selection.111 Jul 2023pre-release

    Nothing published for this version

  38. 5.1.0-integration-fix-client-enums.129 Jul 2023pre-release

    Nothing published for this version

  39. 5.1.0-integration-fix-client-confusing-get-result.128 Jul 2023pre-release

    Nothing published for this version

  40. 5.1.0-integration-fix-client-add-extra-schema-search-location.731 Jul 2023pre-release

    Nothing published for this version

  41. 5.1.0-integration-fix-client-add-extra-schema-search-location.631 Jul 2023pre-release

    Nothing published for this version

  42. 5.1.0-integration-fix-client-add-extra-schema-search-location.531 Jul 2023pre-release

    Nothing published for this version

  43. 5.1.0-integration-fix-client-add-extra-schema-search-location.429 Jul 2023pre-release

    Nothing published for this version

  44. 5.1.0-integration-fix-client-add-extra-schema-search-location.329 Jul 2023pre-release

    Nothing published for this version

  45. 5.1.0-integration-fix-client-add-extra-schema-search-location.229 Jul 2023pre-release

    Nothing published for this version

  46. 5.1.0-integration-fix-client-add-extra-schema-search-location.129 Jul 2023pre-release

    Nothing published for this version

  47. 5.1.0-integration-engines-5-1-0-6-integration-alula-ipv6-9943d4e306ad96d7806ab1274c18621f6e5ace2e.118 Jul 2023pre-release

    Nothing published for this version

  48. 5.1.0-integration-engines-5-1-0-27-integration-fix-1-1-update-relation-mode-prisma-5073e8a011b2ca4b6ab2ef2178bd55afcba8364c.131 Jul 2023pre-release

    Nothing published for this version

  49. 5.1.0-integration-engines-5-1-0-26-integration-fix-1-1-update-relation-mode-prisma-faab4b8d871ca3dba4f060557253dc586fc4e8d0.131 Jul 2023pre-release

    Nothing published for this version

  50. 5.1.0-integration-engines-5-1-0-18-integration-ipv6-with-tests-259c2f6e20d9101db8dc8a4dd5b0ba8ef0936b90.124 Jul 2023pre-release

    Nothing published for this version

  51. 5.1.0-integration-engines-5-1-0-16-integration-ipv6-with-tests-e3c036a6453d51dd0e47635bcadac2c0368bce79.124 Jul 2023pre-release

    Nothing published for this version

  52. 5.1.0-integration-engines-5-1-0-14-integration-ipv6-with-tests-4f2d5ad825bbeeee4573ab192f7addbc5d62b1f8.124 Jul 2023pre-release

    Nothing published for this version

  53. 5.1.0-integration-engines-5-1-0-12-integration-ipv6-with-tests-62ef4e5560580828e96e1cfe9557c4a0c4a33484.121 Jul 2023pre-release

    Nothing published for this version

  54. 5.1.0-integration-engines-5-1-0-11-integration-ipv6-with-tests-5739301cd0f18f785b7555f2ac858629e473857b.121 Jul 2023pre-release

    Nothing published for this version

  55. 5.1.0-integration-engines-5-1-0-10-integration-ipv6-with-tests-011462b5340b9d05de68e7634fb12cc681cd9203.121 Jul 2023pre-release

    Nothing published for this version

  56. 5.1.0-dev.981 Aug 2023pre-release

    Nothing published for this version

  57. 5.1.0-dev.971 Aug 2023pre-release

    Nothing published for this version

  58. 5.1.0-dev.9631 Jul 2023pre-release

    Nothing published for this version

  59. 5.1.0-dev.9531 Jul 2023pre-release

    Nothing published for this version

  60. 5.1.0-dev.9431 Jul 2023pre-release

    Nothing published for this version