forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit4f5d461
committed
amcheck: Fix FullTransactionIdFromXidAndCtx() for xids before epoch 0
64bit xids can't represent xids before epoch 0 (see alsobe504a3). WhenFullTransactionIdFromXidAndCtx() was passed such an xid, it'd create a 64bitxid far into the future. Noticed while adding assertions in the course ofinvestigatingbe504a3, as amcheck's test create such xids.To fix the issue, just return FirstNormalFullTransactionId in this case. Afreshly initdb'd cluster already has a newer horizon. The most minimal versionof this would make the messages for some detected corruptions differentlyinaccurate. To make those cases accurate, switchFullTransactionIdFromXidAndCtx() to use the 32bit modulo difference betweenxid and nextxid to compute the 64bit xid, yielding sensible "in the future" /"in the past" answers.Reviewed-by: Mark Dilger <mark.dilger@enterprisedb.com>Discussion:https://postgr.es/m/20230108002923.cyoser3ttmt63bfn@awork3.anarazel.deBackpatch: 14-, where heapam verification was introduced1 parent1632724 commit4f5d461
File tree
2 files changed
+48
-13
lines changed- contrib/amcheck
- src/bin/pg_amcheck/t
2 files changed
+48
-13
lines changedLines changed: 28 additions & 5 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1574 | 1574 |
| |
1575 | 1575 |
| |
1576 | 1576 |
| |
1577 |
| - | |
| 1577 | + | |
| 1578 | + | |
| 1579 | + | |
1578 | 1580 |
| |
1579 | 1581 |
| |
1580 | 1582 |
| |
| 1583 | + | |
1581 | 1584 |
| |
1582 | 1585 |
| |
1583 | 1586 |
| |
1584 |
| - | |
1585 |
| - | |
1586 |
| - | |
1587 |
| - | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
1588 | 1611 |
| |
1589 | 1612 |
| |
1590 | 1613 |
| |
|
Lines changed: 20 additions & 8 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
217 | 217 |
| |
218 | 218 |
| |
219 | 219 |
| |
220 |
| - | |
| 220 | + | |
221 | 221 |
| |
222 | 222 |
| |
223 | 223 |
| |
| |||
378 | 378 |
| |
379 | 379 |
| |
380 | 380 |
| |
381 |
| - | |
382 |
| - | |
383 |
| - | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
384 | 384 |
| |
385 | 385 |
| |
386 | 386 |
| |
387 | 387 |
| |
388 |
| - | |
| 388 | + | |
389 | 389 |
| |
390 | 390 |
| |
391 | 391 |
| |
392 | 392 |
| |
393 |
| - | |
| 393 | + | |
| 394 | + | |
394 | 395 |
| |
395 | 396 |
| |
396 | 397 |
| |
397 |
| - | |
| 398 | + | |
398 | 399 |
| |
399 | 400 |
| |
400 | 401 |
| |
| |||
502 | 503 |
| |
503 | 504 |
| |
504 | 505 |
| |
505 |
| - | |
| 506 | + | |
506 | 507 |
| |
507 | 508 |
| |
508 | 509 |
| |
| |||
512 | 513 |
| |
513 | 514 |
| |
514 | 515 |
| |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
515 | 527 |
| |
516 | 528 |
| |
517 | 529 |
| |
|
0 commit comments
Comments
(0)