From 3edce1c2a0fdddcb25f814fda3ad2bd020f84d00 Mon Sep 17 00:00:00 2001 From: Gustavo Valverde Date: Thu, 15 Oct 2026 11:43:49 +0100 Subject: [PATCH] Revert "fix(prisma-adapter): don't treat a null unique field as an update selector" A null unique selector should keep failing instead of falling back to updateMany, which can change several rows on providers that allow multiple NULLs in a unique column. --- .../prisma-adapter/src/prisma-adapter.test.ts | 29 ------------------- packages/prisma-adapter/src/prisma-adapter.ts | 6 +--- 2 files changed, 1 insertion(+), 34 deletions(-) diff --git a/packages/prisma-adapter/src/prisma-adapter.test.ts b/packages/prisma-adapter/src/prisma-adapter.test.ts index 05ed638ee5..b604b9fa76 100644 --- a/packages/prisma-adapter/src/prisma-adapter.test.ts +++ b/packages/prisma-adapter/src/prisma-adapter.test.ts @@ -300,35 +300,6 @@ describe("prisma-adapter", () => { ); }); - it("falls back to updateMany for `eq null` on a unique field", async () => { - const update = vi.fn(); - const updateMany = vi.fn().mockResolvedValue({ count: 1 }); - const findFirst = vi.fn().mockResolvedValue({ id: "user-id" }); - const adapter = prismaAdapter( - { $transaction: vi.fn(), user: { findFirst, update, updateMany } }, - { provider: "mongodb" }, - )({ - user: { - additionalFields: { - username: { type: "string", unique: true, required: false }, - }, - }, - }); - - await adapter.update({ - model: "user", - where: [{ field: "username", operator: "eq", value: null }], - update: { name: "Updated" }, - }); - - expect(update).not.toHaveBeenCalled(); - expect(updateMany).toHaveBeenCalledWith( - expect.objectContaining({ - where: { OR: [{ username: null }, { username: { isSet: false } }] }, - }), - ); - }); - it("should use update (not updateMany) for insensitive mode on unsupported providers", async () => { const update = vi.fn().mockResolvedValue({ id: "user-id", diff --git a/packages/prisma-adapter/src/prisma-adapter.ts b/packages/prisma-adapter/src/prisma-adapter.ts index 576c1d70d8..092a731d86 100644 --- a/packages/prisma-adapter/src/prisma-adapter.ts +++ b/packages/prisma-adapter/src/prisma-adapter.ts @@ -219,11 +219,7 @@ export const prismaAdapter = (prisma: PrismaClient, config: PrismaConfig) => { return false; } - // A unique selector can't be null in Prisma's `WhereUniqueInput`. - if ( - (condition.operator && condition.operator !== "eq") || - condition.value === null - ) { + if (condition.operator && condition.operator !== "eq") { return false; }