Repository navigation
fix(entity): an arrayOf(uuid()) column reads on a real Postgres; every column kind round-trips on both drivers - #752
Conversation
…y column kind round-trips on both drivers Bun.SQL returns uuid[] (and arrays of types it has no parser for) as the Postgres array literal; decodeRow handed that string to arrayOf's parser, which refused it (X_INVARIANT_VIOLATED column.array). PGlite parses them, so only a real Postgres showed it: a row with a uuid[] could be written and never read back. - decodeRow reads a declared array column through arrayFromDriver: an Array passes, a typed array becomes one, a string goes through the array-literal grammar and each element through its declared kind. A non-array column is never inspected. - One array-literal reader (parsePgArray), shared with @ultimat3/realtime. - column-matrix: every column kind and an array of every accepted element kind, insert/read/update on Bun.SQL against Postgres (gate live) and on PGlite (unit). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
✅ Reviewed — nothing blocking0 actionable comment(s) · grounded on your code ⏱ 2m 23s wall clock · 🤖 developerz.ai — automated review, running on your model and your box. |
There was a problem hiding this comment.
Review summary — 17 file(s), 0 finding(s).
No findings from: pg-array-refactor, entity-docs, concern-security (nothing to review: Adversarial review of the diff against the security concern set: no injection sink added (arrayLiteral/arrayElement writer is unchanged; the new parsePgArray/arrayFromDriver parse driver-returned cells into JS values before the column's $parse, never into SQL), no authn/authz boundary widened, no n…), concern-tests, concern-api-contract.
(Some reviewers completed only 0 of 1 review samples; findings are the union of the samples that completed.)
🤖 developerz.ai review — automated, running on your model and your box. What is this?
Reviewed by minimax/MiniMax-M3 on box sebby-ovh-2 — 1.22M in / 252.8k out over 10 calls, ~$0.62 on your key (estimate: list price x reported tokens).
…graph pins follow the two entity modules (measured) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Review summary — 2 file(s), 0 finding(s).
Incremental diff: ceiling raises (+2 each) for two new entity modules and a type-explicit update to the date-array test assertion. Both changes are internally consistent and align with the PR description.
No findings from: concern-security (nothing to review: Both changed files are tests. serve-graph.test.ts only updates module-count pins and their explanatory comments — no behaviour, no input boundary, no privileged operation.), concern-tests (nothing to review: Every behaviour changed by this PR is asserted by a test that would fail on revert. The diff only renames a date[] element to its branded form, which is a typescript-level follow-up with the same runtime check.).
Reviewed the 1 new commit(s) since the last review (27bed25…411ca72). Earlier commits were reviewed on this PR already.
🤖 developerz.ai review — automated, running on your model and your box. What is this?
Reviewed by minimax/MiniMax-M3 on box sebby-ovh-1 — 89.8k in / 24.4k out over 3 calls, ~$0.06 on your key (estimate: list price x reported tokens).
Bun.SQL returns uuid[] (and arrays of types it has no parser for) as the Postgres
array literal; decodeRow handed that string to arrayOf's parser, which refused it
(X_INVARIANT_VIOLATED column.array). PGlite parses them, so only a real Postgres
showed it: a row with a uuid[] could be written and never read back.
a typed array becomes one, a string goes through the array-literal grammar and
each element through its declared kind. A non-array column is never inspected.
insert/read/update on Bun.SQL against Postgres (gate live) and on PGlite (unit).
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Summary by CodeRabbit