drizzle-team / drizzle-team/drizzle-orm

[BUG]: BigInt is losing precision in postgres due to drizzle using JSON conversion in query

Open
#4,894 3 comments 2 reactions 0 assignees View on GitHub
bug bug/cant-reproduce
Dominant language
TypeScript
Stars
35.8k
Forks
1.6k
Avg merge
2d 7h
Merged PRs (30d)
4

Description

### Report hasn't been filed before.

- [x] I have verified that the bug I'm about to report hasn't been filed before.

### What version of `drizzle-orm` are you using?

0.44.5

### What version of `drizzle-kit` are you using?

0.31.4

### Other packages

_No response_

### Describe the Bug

Here is SQL executed by drizzle:

```sql
SELECT "consultationOutput"."id",
"consultationOutput"."consultation_id",
"consultationOutput"."language",
"consultationOutput"."status",
"consultationOutput"."diagnosis",
"consultationOutput"."treatment",
"consultationOutput"."prescriptions",
"consultationOutput"."updated_at",
"consultationOutput_consultation"."data" AS "consultation"
FROM "consultation_output" "consultationOutput"
LEFT JOIN LATERAL
(SELECT json_build_array("consultationOutput_consultation"."patient_id") AS "data"
FROM
(SELECT *
FROM "consultation" "consultationOutput_consultation"
WHERE "consultationOutput_consultation"."id" = "consultationOutput"."consultation_id"
LIMIT $1) "consultationOutput_consultation") "consultationOutput_consultation" ON TRUE
WHERE "consultationOutput"."id" = $2
LIMIT $3
```

There is some whacky JSON array, which contains `bigint` ids.
They are converted to `number` and lose precision.
There is no way of parsing them to `bigint` using custom drizzle type or `postgres.js` transforms, because JSON transformation (thus precision losing) happens in db.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.