|
23 | 23 | * |
24 | 24 | * |
25 | 25 | * IDENTIFICATION |
26 | | - * $PostgreSQL: pgsql/src/backend/storage/ipc/procarray.c,v 1.15 2006/07/3002:07:18 alvherre Exp $ |
| 26 | + * $PostgreSQL: pgsql/src/backend/storage/ipc/procarray.c,v 1.16 2006/07/3020:17:11 tgl Exp $ |
27 | 27 | * |
28 | 28 | *------------------------------------------------------------------------- |
29 | 29 | */ |
@@ -446,10 +446,8 @@ GetOldestXmin(bool allDbs, bool ignoreVacuum) |
446 | 446 | /* |
447 | 447 | * Also consider the transaction's Xmin, if set. |
448 | 448 | * |
449 | | - * Note that this Xmin may seem to be guaranteed to be always |
450 | | - * lower than the transaction's Xid, but this is not so because |
451 | | - * there is a time window on which the Xid is already assigned |
452 | | - * but the Xmin has not being calculated yet. |
| 449 | + * We must check both Xid and Xmin because there is a window |
| 450 | + * where an xact's Xid is set but Xmin isn't yet. |
453 | 451 | */ |
454 | 452 | xid=proc->xmin; |
455 | 453 | if (TransactionIdIsNormal(xid)) |
@@ -489,7 +487,7 @@ GetOldestXmin(bool allDbs, bool ignoreVacuum) |
489 | 487 | *older than this are known not running any more. |
490 | 488 | *RecentGlobalXmin: the global xmin (oldest TransactionXmin across all |
491 | 489 | *running transactions, except those running LAZY VACUUM). This is |
492 | | - *the same computation done by GetOldestXmin(true,false). |
| 490 | + *the same computation done by GetOldestXmin(true,true). |
493 | 491 | *---------- |
494 | 492 | */ |
495 | 493 | Snapshot |
|