[PR #5823] [MERGED] fix: treat generateId "serial" as numeric ID and correct UUID column types across adapters #6253

Closed
opened 2026-03-13 12:52:30 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/better-auth/better-auth/pull/5823
Author: @ping-maxwell
Created: 11/7/2025
Status: Merged
Merged: 11/11/2025
Merged by: @Bekacru

Base: canaryHead: fix/generateId-serial-and-uuid


📝 Commits (10+)

  • cb9c9ae fix: added overlooked useNumberId places & fixed uuid types
  • ce65de7 fix: get-migration warnings with uuid
  • 3cf6909 update: unit tests on uuid
  • d5bb3b8 add: more unit tests
  • defe925 chore: lint
  • c2bd119 Merge branch 'canary' into fix/generateId-serial-and-uuid
  • 5891b2a Merge branch 'canary' into fix/generateId-serial-and-uuid
  • e9ab92d Merge branch 'canary' into fix/generateId-serial-and-uuid
  • ed74719 Merge branch 'canary' into fix/generateId-serial-and-uuid
  • 87d68c7 fix: prisma uuid generation

📊 Changes

38 files changed (+943 additions, -101 deletions)

View changed files

📝 packages/better-auth/src/__snapshots__/init.test.ts.snap (+1 -0)
📝 packages/better-auth/src/adapters/adapter-factory/index.ts (+104 -22)
📝 packages/better-auth/src/adapters/adapter-factory/types.ts (+0 -3)
📝 packages/better-auth/src/adapters/create-test-suite.ts (+12 -1)
📝 packages/better-auth/src/adapters/drizzle-adapter/drizzle-adapter.ts (+1 -0)
📝 packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.mysql.test.ts (+2 -0)
📝 packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.pg.test.ts (+2 -0)
📝 packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.sqlite.test.ts (+2 -0)
📝 packages/better-auth/src/adapters/kysely-adapter/kysely-adapter.ts (+1 -0)
📝 packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.custom-schema-pg.test.ts (+0 -0)
📝 packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.mssql.test.ts (+2 -0)
📝 packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.mysql.test.ts (+2 -0)
📝 packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.pg.test.ts (+4 -1)
📝 packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.sqlite.test.ts (+2 -0)
📝 packages/better-auth/src/adapters/memory-adapter/adapter.memory.test.ts (+2 -2)
📝 packages/better-auth/src/adapters/memory-adapter/memory-adapter.ts (+10 -8)
📝 packages/better-auth/src/adapters/mongodb-adapter/adapter.mongo-db.test.ts (+2 -1)
📝 packages/better-auth/src/adapters/prisma-adapter/prisma-adapter.ts (+1 -0)
📝 packages/better-auth/src/adapters/prisma-adapter/test/prisma.mysql.test.ts (+2 -0)
📝 packages/better-auth/src/adapters/prisma-adapter/test/prisma.pg.test.ts (+2 -0)

...and 18 more files

📄 Description

  • Several areas where useNumberId is used but we didn't check generateId === "serial".
  • Kysely get-migration with useUUID was generating incorrect field type for mssql & mysql.
  • Fixed warnings with getMigration where uuid type wasn't recognized during second round of migrations.
  • Added uuid support to Drizzle & Prisma
  • Added uuid test suite

Summary by cubic

Treat generateId: "serial" as numeric IDs across the stack, and fix UUID handling and column types in migrations and generators, including DB-native UUID defaults where supported.

  • Bug Fixes

    • Treat generateId: "serial" the same as useNumberId across adapters, schema generators (Drizzle/Prisma), telemetry, and tests.
    • Correct UUID types and defaults in Kysely migrations and Drizzle/Prisma: MySQL/MSSQL use varchar(36) (including foreign keys); Postgres uuid with pg_catalog.gen_random_uuid (Drizzle) and Prisma @db.Uuid with default(dbgenerated("pg_catalog.gen_random_uuid()")) and FK columns as @db.Uuid; SQLite text.
    • Add supportsUUIDs to adapters and ID transform logic (input/output) to respect DB-native UUID generation; only generate UUIDs in JavaScript when the DB cannot.
    • Fix Kysely migration warnings by recognizing uuid types on subsequent runs, and ensure proper casting when referencing id with numeric IDs.
  • Migration

    • If you previously generated MySQL/MSSQL schemas with generateId: "uuid", regenerate migrations/schemas to apply the corrected types.

Written for commit d3376bc708. Summary will update automatically on new commits.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/better-auth/better-auth/pull/5823 **Author:** [@ping-maxwell](https://github.com/ping-maxwell) **Created:** 11/7/2025 **Status:** ✅ Merged **Merged:** 11/11/2025 **Merged by:** [@Bekacru](https://github.com/Bekacru) **Base:** `canary` ← **Head:** `fix/generateId-serial-and-uuid` --- ### 📝 Commits (10+) - [`cb9c9ae`](https://github.com/better-auth/better-auth/commit/cb9c9aed8cf8dac99d9375b613a6228738f44779) fix: added overlooked useNumberId places & fixed uuid types - [`ce65de7`](https://github.com/better-auth/better-auth/commit/ce65de71e6f0f082d8a3c27cd0f0a8466f55084e) fix: get-migration warnings with uuid - [`3cf6909`](https://github.com/better-auth/better-auth/commit/3cf69091f455f95359e97fcc6224da11ced7af54) update: unit tests on uuid - [`d5bb3b8`](https://github.com/better-auth/better-auth/commit/d5bb3b8dbddeb9a9b2ff615444cb3f40fc2cd826) add: more unit tests - [`defe925`](https://github.com/better-auth/better-auth/commit/defe92520a9d44650eab7bb41eab5c6e8041357c) chore: lint - [`c2bd119`](https://github.com/better-auth/better-auth/commit/c2bd1194a6e97f545d6d264e3d7a6b7617d3d653) Merge branch 'canary' into fix/generateId-serial-and-uuid - [`5891b2a`](https://github.com/better-auth/better-auth/commit/5891b2ac25801da16cd901c911298a6203db30e1) Merge branch 'canary' into fix/generateId-serial-and-uuid - [`e9ab92d`](https://github.com/better-auth/better-auth/commit/e9ab92dabc08ba00758e8e62dd35f15b947ae3d8) Merge branch 'canary' into fix/generateId-serial-and-uuid - [`ed74719`](https://github.com/better-auth/better-auth/commit/ed7471934a483c6bf7835ab51d3d1cd5ceed633b) Merge branch 'canary' into fix/generateId-serial-and-uuid - [`87d68c7`](https://github.com/better-auth/better-auth/commit/87d68c7ab69d1dcc7c26a23680590a3ca2a7886a) fix: prisma uuid generation ### 📊 Changes **38 files changed** (+943 additions, -101 deletions) <details> <summary>View changed files</summary> 📝 `packages/better-auth/src/__snapshots__/init.test.ts.snap` (+1 -0) 📝 `packages/better-auth/src/adapters/adapter-factory/index.ts` (+104 -22) 📝 `packages/better-auth/src/adapters/adapter-factory/types.ts` (+0 -3) 📝 `packages/better-auth/src/adapters/create-test-suite.ts` (+12 -1) 📝 `packages/better-auth/src/adapters/drizzle-adapter/drizzle-adapter.ts` (+1 -0) 📝 `packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.mysql.test.ts` (+2 -0) 📝 `packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.pg.test.ts` (+2 -0) 📝 `packages/better-auth/src/adapters/drizzle-adapter/test/adapter.drizzle.sqlite.test.ts` (+2 -0) 📝 `packages/better-auth/src/adapters/kysely-adapter/kysely-adapter.ts` (+1 -0) 📝 `packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.custom-schema-pg.test.ts` (+0 -0) 📝 `packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.mssql.test.ts` (+2 -0) 📝 `packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.mysql.test.ts` (+2 -0) 📝 `packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.pg.test.ts` (+4 -1) 📝 `packages/better-auth/src/adapters/kysely-adapter/test/adapter.kysely.sqlite.test.ts` (+2 -0) 📝 `packages/better-auth/src/adapters/memory-adapter/adapter.memory.test.ts` (+2 -2) 📝 `packages/better-auth/src/adapters/memory-adapter/memory-adapter.ts` (+10 -8) 📝 `packages/better-auth/src/adapters/mongodb-adapter/adapter.mongo-db.test.ts` (+2 -1) 📝 `packages/better-auth/src/adapters/prisma-adapter/prisma-adapter.ts` (+1 -0) 📝 `packages/better-auth/src/adapters/prisma-adapter/test/prisma.mysql.test.ts` (+2 -0) 📝 `packages/better-auth/src/adapters/prisma-adapter/test/prisma.pg.test.ts` (+2 -0) _...and 18 more files_ </details> ### 📄 Description - Several areas where `useNumberId` is used but we didn't check `generateId === "serial"`. - Kysely get-migration with `useUUID` was generating incorrect field type for `mssql` & `mysql`. - Fixed warnings with `getMigration` where `uuid` type wasn't recognized during second round of migrations. - Added `uuid` support to Drizzle & Prisma - Added `uuid` test suite <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Treat generateId: "serial" as numeric IDs across the stack, and fix UUID handling and column types in migrations and generators, including DB-native UUID defaults where supported. - **Bug Fixes** - Treat generateId: "serial" the same as useNumberId across adapters, schema generators (Drizzle/Prisma), telemetry, and tests. - Correct UUID types and defaults in Kysely migrations and Drizzle/Prisma: MySQL/MSSQL use varchar(36) (including foreign keys); Postgres uuid with pg_catalog.gen_random_uuid (Drizzle) and Prisma @db.Uuid with default(dbgenerated("pg_catalog.gen_random_uuid()")) and FK columns as @db.Uuid; SQLite text. - Add supportsUUIDs to adapters and ID transform logic (input/output) to respect DB-native UUID generation; only generate UUIDs in JavaScript when the DB cannot. - Fix Kysely migration warnings by recognizing uuid types on subsequent runs, and ensure proper casting when referencing id with numeric IDs. - **Migration** - If you previously generated MySQL/MSSQL schemas with generateId: "uuid", regenerate migrations/schemas to apply the corrected types. <sup>Written for commit d3376bc7084ea0c6ba38761ab4b210426d66a6e3. Summary will update automatically on new commits.</sup> <!-- End of auto-generated description by cubic. --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-03-13 12:52:30 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#6253