aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>1997-08-06 02:08:39 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>1997-08-06 02:08:39 +0000
commitb3d8beaa1ad8f0e472f8df0fac85710a3301c5a1 (patch)
tree0025b2b6cd58b3cfb284b871e88fcbb17dbd38f8
parent6ed1715b1f5d273f6f2a0facc4ad7f5485c433e0 (diff)
downloadpostgresql-b3d8beaa1ad8f0e472f8df0fac85710a3301c5a1.tar.gz
postgresql-b3d8beaa1ad8f0e472f8df0fac85710a3301c5a1.zip
Catch non-functional delete attempts.
-rw-r--r--src/backend/access/heap/heapam.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index 67806925b17..63157734cd7 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.11 1997/03/28 07:04:11 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.12 1997/08/06 02:08:39 vadim Exp $
*
*
* INTERFACE ROUTINES
@@ -1150,6 +1150,19 @@ heap_delete(Relation relation, ItemPointer tid)
dp = (PageHeader) BufferGetPage(b);
lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(tid));
+ /*
+ * Just like test against non-functional updates we try to catch
+ * non-functional delete attempts. - vadim 05/05/97
+ */
+ tp = (HeapTuple) PageGetItem((Page)dp, lp);
+ Assert(HeapTupleIsValid(tp));
+ if (TupleUpdatedByCurXactAndCmd(tp)) {
+ elog(NOTICE, "Non-functional delete, tuple already deleted");
+ if ( IsSystemRelationName(RelationGetRelationName(relation)->data) )
+ RelationUnsetLockForWrite(relation);
+ ReleaseBuffer(b);
+ return;
+ }
/* ----------------
* check that we're deleteing a valid item
* ----------------