summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane2005-03-28 01:50:34 +0000
committerTom Lane2005-03-28 01:50:34 +0000
commit119191609c507528b20d74c59be69f2129127575 (patch)
tree7546fa12bcade7921244778dfc75bce90ce5a739 /src
parent5db2e83852cc3f25fdea48c4aa0da8696c88a826 (diff)
Remove dead push/pop rollback code. Vadim once planned to implement
transaction rollback via UNDO but I think that's highly unlikely to happen, so we may as well remove the stubs. (Someday we ought to rip out the stub xxx_undo routines, too.) Per Alvaro.
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/heap/heapam.c69
-rw-r--r--src/backend/access/transam/xact.c23
-rw-r--r--src/include/access/htup.h6
-rw-r--r--src/include/access/xact.h5
4 files changed, 7 insertions, 96 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index b5020863000..9876f8b695b 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.185 2005/03/27 23:52:58 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.186 2005/03/28 01:50:32 tgl Exp $
*
*
* INTERFACE ROUTINES
@@ -53,9 +53,6 @@
#include "pgstat.h"
-/* comments are in heap_update */
-static xl_heaptid _locked_tuple_;
-static void _heap_unlock_tuple(void *data);
static XLogRecPtr log_heap_update(Relation reln, Buffer oldbuf,
ItemPointerData from, Buffer newbuf, HeapTuple newtup, bool move);
@@ -1620,15 +1617,7 @@ l2:
* context lock (but not the pin!) on the old tuple's buffer while we
* are off doing TOAST and/or table-file-extension work. We must mark
* the old tuple to show that it's already being updated, else other
- * processes may try to update it themselves. To avoid second XLOG log
- * record, we use xact mgr hook to unlock old tuple without reading
- * log if xact will abort before update is logged. In the event of
- * crash prio logging, TQUAL routines will see HEAP_XMAX_UNLOGGED
- * flag...
- *
- * NOTE: this trick is useless currently but saved for future when we'll
- * implement UNDO and will re-use transaction IDs after postmaster
- * startup.
+ * processes may try to update it themselves.
*
* We need to invoke the toaster if there are already any out-of-line
* toasted values present, or if the new tuple is over-threshold.
@@ -1642,15 +1631,10 @@ l2:
if (need_toast || newtupsize > pagefree)
{
- _locked_tuple_.node = relation->rd_node;
- _locked_tuple_.tid = oldtup.t_self;
- XactPushRollback(_heap_unlock_tuple, (void *) &_locked_tuple_);
-
oldtup.t_data->t_infomask &= ~(HEAP_XMAX_COMMITTED |
HEAP_XMAX_INVALID |
HEAP_MARKED_FOR_UPDATE |
HEAP_MOVED);
- oldtup.t_data->t_infomask |= HEAP_XMAX_UNLOGGED;
HeapTupleHeaderSetXmax(oldtup.t_data, xid);
HeapTupleHeaderSetCmax(oldtup.t_data, cid);
already_marked = true;
@@ -1731,12 +1715,7 @@ l2:
RelationPutHeapTuple(relation, newbuf, newtup); /* insert new tuple */
- if (already_marked)
- {
- oldtup.t_data->t_infomask &= ~HEAP_XMAX_UNLOGGED;
- XactPopRollback();
- }
- else
+ if (!already_marked)
{
oldtup.t_data->t_infomask &= ~(HEAP_XMAX_COMMITTED |
HEAP_XMAX_INVALID |
@@ -2585,48 +2564,6 @@ newsame:;
}
-static void
-_heap_unlock_tuple(void *data)
-{
- TransactionId xid = GetCurrentTransactionId();
- xl_heaptid *xltid = (xl_heaptid *) data;
- Relation reln = XLogOpenRelation(false, RM_HEAP_ID, xltid->node);
- Buffer buffer;
- Page page;
- OffsetNumber offnum;
- ItemId lp;
- HeapTupleHeader htup;
-
- if (!RelationIsValid(reln))
- elog(PANIC, "_heap_unlock_tuple: can't open relation");
-
- buffer = XLogReadBuffer(false, reln,
- ItemPointerGetBlockNumber(&(xltid->tid)));
- if (!BufferIsValid(buffer))
- elog(PANIC, "_heap_unlock_tuple: can't read buffer");
-
- page = (Page) BufferGetPage(buffer);
- if (PageIsNew((PageHeader) page))
- elog(PANIC, "_heap_unlock_tuple: uninitialized page");
-
- offnum = ItemPointerGetOffsetNumber(&(xltid->tid));
- if (offnum > PageGetMaxOffsetNumber(page))
- elog(PANIC, "_heap_unlock_tuple: invalid itemid");
- lp = PageGetItemId(page, offnum);
-
- if (!ItemIdIsUsed(lp) || ItemIdDeleted(lp))
- elog(PANIC, "_heap_unlock_tuple: unused/deleted tuple in rollback");
-
- htup = (HeapTupleHeader) PageGetItem(page, lp);
-
- if (!TransactionIdEquals(HeapTupleHeaderGetXmax(htup), xid))
- elog(PANIC, "_heap_unlock_tuple: invalid xmax in rollback");
- htup->t_infomask &= ~HEAP_XMAX_UNLOGGED;
- htup->t_infomask |= HEAP_XMAX_INVALID;
- LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
- WriteBuffer(buffer);
-}
-
void
heap_redo(XLogRecPtr lsn, XLogRecord *record)
{
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 5c84bb99554..b5bb3d5b1fc 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.197 2005/02/20 21:46:48 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.198 2005/03/28 01:50:33 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -196,9 +196,6 @@ typedef struct SubXactCallbackItem
static SubXactCallbackItem *SubXact_callbacks = NULL;
-static void (*_RollbackFunc) (void *) = NULL;
-static void *_RollbackData = NULL;
-
/* local function prototypes */
static void AssignSubTransactionId(TransactionState s);
@@ -3902,21 +3899,3 @@ xact_desc(char *buf, uint8 xl_info, char *rec)
else
strcat(buf, "UNKNOWN");
}
-
-void
- XactPushRollback(void (*func) (void *), void *data)
-{
-#ifdef XLOG_II
- if (_RollbackFunc != NULL)
- elog(PANIC, "XactPushRollback: already installed");
-#endif
-
- _RollbackFunc = func;
- _RollbackData = data;
-}
-
-void
-XactPopRollback(void)
-{
- _RollbackFunc = NULL;
-}
diff --git a/src/include/access/htup.h b/src/include/access/htup.h
index 51da662df1f..e57ce8a3cbe 100644
--- a/src/include/access/htup.h
+++ b/src/include/access/htup.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/access/htup.h,v 1.72 2004/12/31 22:03:21 pgsql Exp $
+ * $PostgreSQL: pgsql/src/include/access/htup.h,v 1.73 2005/03/28 01:50:34 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -152,9 +152,7 @@ typedef HeapTupleHeaderData *HeapTupleHeader;
* attribute(s) */
#define HEAP_HASEXTENDED 0x000C /* the two above combined */
#define HEAP_HASOID 0x0010 /* has an object-id field */
-/* 0x0020 and 0x0040 are unused */
-#define HEAP_XMAX_UNLOGGED 0x0080 /* to lock tuple for update
- * without logging */
+/* 0x0020, 0x0040 and 0x0080 are unused */
#define HEAP_XMIN_COMMITTED 0x0100 /* t_xmin committed */
#define HEAP_XMIN_INVALID 0x0200 /* t_xmin invalid/aborted */
#define HEAP_XMAX_COMMITTED 0x0400 /* t_xmax committed */
diff --git a/src/include/access/xact.h b/src/include/access/xact.h
index 0039b5b1243..0d3a6383426 100644
--- a/src/include/access/xact.h
+++ b/src/include/access/xact.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/access/xact.h,v 1.74 2004/12/31 22:03:21 pgsql Exp $
+ * $PostgreSQL: pgsql/src/include/access/xact.h,v 1.75 2005/03/28 01:50:34 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -145,9 +145,6 @@ extern void RecordTransactionCommit(void);
extern int xactGetCommittedChildren(TransactionId **ptr);
-extern void XactPushRollback(void (*func) (void *), void *data);
-extern void XactPopRollback(void);
-
extern void xact_redo(XLogRecPtr lsn, XLogRecord *record);
extern void xact_undo(XLogRecPtr lsn, XLogRecord *record);
extern void xact_desc(char *buf, uint8 xl_info, char *rec);