Repository navigation
Commit 1321ee9
authored
improvement(tables): bump rows version once at commit and serialize same-value unique writes (#8335)
* improvement(tables): bump a table's rows version once at commit
* fix(tables): serialize concurrent writes of the same unique value with per-value advisory locks
* fix(tables): take the batched advisory locks on a transaction
* fix(tables): cap value locks at the per-connection lock budget and lock unique columns on every import batch
Lower the per-transaction value-lock cap to 64 so concurrent writers cannot
exhaust the shared lock table; larger writes keep the exclusive column-lock
fallback. Import batches now take the unique-column locks and run their unique
check inside their transaction, batchUpdateRows rejects two updates writing the
same unique value and locks and checks only the unique columns each update
changes, and the 0390 comment describes the mechanism only.
* chore(tables): share one unique-value key between the check and the locks
* fix(tables): lock a table's unique values under one table key so wide schemas stay within the lock budget
* fix(tables): key unique JSON values by canonical form so key order never hides a batch duplicate1 parent 9557c37 commit 1321ee9
13 files changed
Lines changed: 30545 additions & 117 deletions
File tree
- apps/sim/lib
- db
- table
- rows
- packages/db
- migrations
- meta
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| 28 | + | |
28 | 29 | | |
29 | 30 | | |
30 | 31 | | |
| |||
58 | 59 | | |
59 | 60 | | |
60 | 61 | | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
65 | 68 | | |
66 | 69 | | |
67 | 70 | | |
| |||
99 | 102 | | |
100 | 103 | | |
101 | 104 | | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | 105 | | |
119 | | - | |
120 | | - | |
| 106 | + | |
| 107 | + | |
121 | 108 | | |
122 | 109 | | |
123 | 110 | | |
| |||
133 | 120 | | |
134 | 121 | | |
135 | 122 | | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
136 | 139 | | |
137 | 140 | | |
138 | 141 | | |
| |||
282 | 285 | | |
283 | 286 | | |
284 | 287 | | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
285 | 291 | | |
286 | 292 | | |
287 | 293 | | |
| |||
305 | 311 | | |
306 | 312 | | |
307 | 313 | | |
308 | | - | |
| 314 | + | |
| 315 | + | |
309 | 316 | | |
310 | 317 | | |
311 | 318 | | |
| |||
347 | 354 | | |
348 | 355 | | |
349 | 356 | | |
| 357 | + | |
350 | 358 | | |
351 | 359 | | |
352 | 360 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
332 | 332 | | |
333 | 333 | | |
334 | 334 | | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
335 | 340 | | |
336 | 341 | | |
337 | 342 | | |
| |||
354 | 359 | | |
355 | 360 | | |
356 | 361 | | |
| 362 | + | |
357 | 363 | | |
358 | 364 | | |
359 | 365 | | |
| |||
0 commit comments