Commit 7269603
Mohammad Tafzeel Shams
Bug #36993445 : virtual index unstable after rollback when index_id is
greater than max uint32
SYMPTOM:
When performing an insert operation on a table with a virtual index,
re-inserting the same row after rolling back the previous insert causes
unexpected behaviour failure if the index_id is greater than or equal to 2^32.
ROOT CAUSE:
The function used to log and read the index_id for virtual indexes in
the undo record does not support 64-bit integers, causing issues when
the index_id exceeds the maximum value of a 32-bit unsigned integer.
FIX:
Replace the existing logging and reading functions with
mach_u64_write_much_compressed() and mach_read_next_much_compressed(),
which support 64-bit integers.
Change-Id: I4831a3c979a4a797185e37318999af83132d58d51 parent dc0f623 commit 7269603
2 files changed
+8
-6
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
| 138 | + | |
| 139 | + | |
138 | 140 | | |
139 | 141 | | |
140 | 142 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
243 | 243 | | |
244 | 244 | | |
245 | 245 | | |
246 | | - | |
| 246 | + | |
247 | 247 | | |
248 | 248 | | |
249 | | - | |
| 249 | + | |
250 | 250 | | |
251 | 251 | | |
252 | 252 | | |
| |||
271 | 271 | | |
272 | 272 | | |
273 | 273 | | |
274 | | - | |
| 274 | + | |
275 | 275 | | |
276 | 276 | | |
277 | 277 | | |
| |||
310 | 310 | | |
311 | 311 | | |
312 | 312 | | |
313 | | - | |
| 313 | + | |
314 | 314 | | |
315 | 315 | | |
316 | 316 | | |
| |||
0 commit comments