diff options
Diffstat (limited to 'src/backend/catalog/index.c')
-rw-r--r-- | src/backend/catalog/index.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index 36b61dc3d59..2b2ab11702a 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/index.c,v 1.298 2008/05/12 00:00:47 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/index.c,v 1.299 2008/05/12 20:01:59 alvherre Exp $ * * * INTERFACE ROUTINES @@ -1507,7 +1507,7 @@ IndexBuildHeapScan(Relation heapRelation, } else if (indexInfo->ii_Concurrent) { - snapshot = CopySnapshot(GetTransactionSnapshot()); + snapshot = RegisterSnapshot(GetTransactionSnapshot()); OldestXmin = InvalidTransactionId; /* not used */ } else @@ -1517,10 +1517,7 @@ IndexBuildHeapScan(Relation heapRelation, OldestXmin = GetOldestXmin(heapRelation->rd_rel->relisshared, true); } - scan = heap_beginscan(heapRelation, /* relation */ - snapshot, /* seeself */ - 0, /* number of keys */ - NULL); /* scan key */ + scan = heap_beginscan(heapRelation, snapshot, 0, NULL); reltuples = 0; @@ -1793,6 +1790,10 @@ IndexBuildHeapScan(Relation heapRelation, heap_endscan(scan); + /* we can now forget our snapshot, if set */ + if (indexInfo->ii_Concurrent) + UnregisterSnapshot(snapshot); + ExecDropSingleTupleTableSlot(slot); FreeExecutorState(estate); |