|
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
|
|