diff options
Diffstat (limited to 'src/backend/executor')
| -rw-r--r-- | src/backend/executor/execMain.c | 7 | ||||
| -rw-r--r-- | src/backend/executor/execUtils.c | 12 | ||||
| -rw-r--r-- | src/backend/executor/nodeTidscan.c | 9 |
3 files changed, 14 insertions, 14 deletions
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 29687a54ba..fa276aaeec 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -27,7 +27,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.163 2002/05/21 22:59:01 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.164 2002/05/24 18:57:56 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1489,7 +1489,7 @@ lreplace:; numIndices = resultRelInfo->ri_NumIndices; if (numIndices > 0) - ExecInsertIndexTuples(slot, &(tuple->t_self), estate, true); + ExecInsertIndexTuples(slot, &(tuple->t_self), estate, false); /* AFTER ROW UPDATE Triggers */ if (resultRelInfo->ri_TrigDesc) @@ -1639,8 +1639,7 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid) { Buffer buffer; - heap_fetch(relation, SnapshotDirty, &tuple, &buffer, NULL); - if (tuple.t_data != NULL) + if (heap_fetch(relation, SnapshotDirty, &tuple, &buffer, false, NULL)) { TransactionId xwait = SnapshotDirty->xmax; diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index a6b5048326..32cd88ed07 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.81 2002/05/12 20:10:02 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.82 2002/05/24 18:57:56 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -599,7 +599,7 @@ void ExecInsertIndexTuples(TupleTableSlot *slot, ItemPointer tupleid, EState *estate, - bool is_update) + bool is_vacuum) { HeapTuple heapTuple; ResultRelInfo *resultRelInfo; @@ -667,11 +667,17 @@ ExecInsertIndexTuples(TupleTableSlot *slot, datum, nullv); + /* + * The index AM does the rest. Note we suppress unique-index + * checks if we are being called from VACUUM, since VACUUM may + * need to move dead tuples that have the same keys as live ones. + */ result = index_insert(relationDescs[i], /* index relation */ datum, /* array of heaptuple Datums */ nullv, /* info on nulls */ &(heapTuple->t_self), /* tid of heap tuple */ - heapRelation); + heapRelation, + relationDescs[i]->rd_uniqueindex && !is_vacuum); /* * keep track of index inserts for debugging diff --git a/src/backend/executor/nodeTidscan.c b/src/backend/executor/nodeTidscan.c index 5ee222744d..46e9daed6c 100644 --- a/src/backend/executor/nodeTidscan.c +++ b/src/backend/executor/nodeTidscan.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeTidscan.c,v 1.23 2002/02/19 20:11:14 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeTidscan.c,v 1.24 2002/05/24 18:57:56 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -150,11 +150,8 @@ TidNext(TidScan *node) { bool slot_is_valid = false; - tuple->t_datamcxt = NULL; - tuple->t_data = NULL; tuple->t_self = tidList[tidstate->tss_TidPtr]; - heap_fetch(heapRelation, snapshot, tuple, &buffer, NULL); - if (tuple->t_data != NULL) + if (heap_fetch(heapRelation, snapshot, tuple, &buffer, false, NULL)) { bool prev_matches = false; int prev_tid; @@ -198,8 +195,6 @@ TidNext(TidScan *node) else ExecClearTuple(slot); } - else if (BufferIsValid(buffer)) - ReleaseBuffer(buffer); tidNumber++; if (bBackward) tidstate->tss_TidPtr--; |
