aboutsummaryrefslogtreecommitdiff
path: root/src/include/access
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>1997-11-02 15:27:14 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>1997-11-02 15:27:14 +0000
commit32cd09ac6d467ec788f8f4181097d47bafcfaee1 (patch)
tree96d5420e42ed087eb9df2d951ba1af38769eded7 /src/include/access
parent6cc0a00deca18681f48a8afd1215659771a2b049 (diff)
downloadpostgresql-32cd09ac6d467ec788f8f4181097d47bafcfaee1.tar.gz
postgresql-32cd09ac6d467ec788f8f4181097d47bafcfaee1.zip
Good Bye, Time Travel!
Diffstat (limited to 'src/include/access')
-rw-r--r--src/include/access/heapam.h4
-rw-r--r--src/include/access/htup.h51
-rw-r--r--src/include/access/transam.h57
-rw-r--r--src/include/access/valid.h11
-rw-r--r--src/include/access/xact.h13
5 files changed, 47 insertions, 89 deletions
diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h
index 4621d836713..a66fcab073a 100644
--- a/src/include/access/heapam.h
+++ b/src/include/access/heapam.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: heapam.h,v 1.20 1997/10/30 23:37:01 momjian Exp $
+ * $Id: heapam.h,v 1.21 1997/11/02 15:26:37 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -142,7 +142,7 @@ extern void heap_restrpos(HeapScanDesc sdesc);
extern Size ComputeDataSize(TupleDesc tupleDesc, Datum value[], char nulls[]);
extern void
DataFill(char *data, TupleDesc tupleDesc,
- Datum value[], char nulls[], char *infomask,
+ Datum value[], char nulls[], uint16 *infomask,
bits8 *bit);
extern int heap_attisnull(HeapTuple tup, int attnum);
extern int heap_sysattrlen(AttrNumber attno);
diff --git a/src/include/access/htup.h b/src/include/access/htup.h
index 0b6653f3865..72fb5a8d314 100644
--- a/src/include/access/htup.h
+++ b/src/include/access/htup.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: htup.h,v 1.6 1997/09/08 21:50:46 momjian Exp $
+ * $Id: htup.h,v 1.7 1997/11/02 15:26:42 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -28,33 +28,25 @@
*/
typedef struct HeapTupleData
{
+ unsigned int t_len; /* length of entire tuple */
- unsigned int t_len; /* length of entire tuple */
+ Oid t_oid; /* OID of this tuple -- 4 bytes */
- ItemPointerData t_ctid; /* current TID of this tuple */
+ CommandId t_cmin; /* insert CID stamp -- 4 bytes each */
+ CommandId t_cmax; /* delete CommandId stamp */
- ItemPointerData t_chain; /* replaced tuple TID */
+ TransactionId t_xmin; /* insert XID stamp -- 4 bytes each */
+ TransactionId t_xmax; /* delete XID stamp */
- Oid t_oid; /* OID of this tuple -- 4 bytes */
+ ItemPointerData t_ctid; /* current TID of this tuple */
+
+ int16 t_natts; /* number of attributes */
- CommandId t_cmin; /* insert CID stamp -- 2 bytes each */
- CommandId t_cmax; /* delete CommandId stamp */
+ uint16 t_infomask; /* various infos */
- TransactionId t_xmin; /* insert XID stamp -- 4 bytes each */
- TransactionId t_xmax; /* delete XID stamp */
+ uint8 t_hoff; /* sizeof tuple header */
- AbsoluteTime t_tmin; /* time stamps -- 4 bytes each */
- AbsoluteTime t_tmax;
-
- int16 t_natts; /* number of attributes */
- char t_vtype; /* not used - padding */
-
- char t_infomask; /* whether tuple as null or variable
- * length attributes */
-
- uint8 t_hoff; /* sizeof tuple header */
-
- bits8 t_bits[MinHeapTupleBitmapSize / 8];
+ bits8 t_bits[MinHeapTupleBitmapSize / 8];
/* bit map of domains */
/* MORE DATA FOLLOWS AT END OF STRUCT */
@@ -69,12 +61,7 @@ typedef HeapTupleData *HeapTuple;
#define MinCommandIdAttributeNumber (-4)
#define MaxTransactionIdAttributeNumber (-5)
#define MaxCommandIdAttributeNumber (-6)
-#define ChainItemPointerAttributeNumber (-7)
-#define AnchorItemPointerAttributeNumber (-8)
-#define MinAbsoluteTimeAttributeNumber (-9)
-#define MaxAbsoluteTimeAttributeNumber (-10)
-#define VersionTypeAttributeNumber (-11)
-#define FirstLowInvalidHeapAttributeNumber (-12)
+#define FirstLowInvalidHeapAttributeNumber (-7)
/* ----------------
@@ -101,9 +88,15 @@ typedef HeapTupleData *HeapTuple;
/*
* information stored in t_infomask:
*/
-#define HEAP_HASNULL 0x01 /* has null attribute(s) */
-#define HEAP_HASVARLENA 0x02 /* has variable length
+#define HEAP_HASNULL 0x0001 /* has null attribute(s) */
+#define HEAP_HASVARLENA 0x0002 /* has variable length
* attribute(s) */
+#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 */
+#define HEAP_XMAX_INVALID 0x0800 /* t_xmax invalid/aborted */
+
+#define HEAP_XACT_MASK 0x0F00 /* */
#define HeapTupleNoNulls(tuple) \
(!(((HeapTuple) (tuple))->t_infomask & HEAP_HASNULL))
diff --git a/src/include/access/transam.h b/src/include/access/transam.h
index efb6e824a7a..fb4a6cd7242 100644
--- a/src/include/access/transam.h
+++ b/src/include/access/transam.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: transam.h,v 1.11 1997/09/08 21:51:03 momjian Exp $
+ * $Id: transam.h,v 1.12 1997/11/02 15:26:44 vadim Exp $
*
* NOTES
* Transaction System Version 101 now support proper oid
@@ -18,7 +18,6 @@
#define TRANSAM_H
#include <storage/bufmgr.h>
-#include <utils/nabstime.h>
/* ----------------
* transaction system version id
@@ -33,19 +32,19 @@
* even if their minor versions differ.
* ----------------
*/
-#define TRANS_SYSTEM_VERSION 101
+#define TRANS_SYSTEM_VERSION 200
/* ----------------
* transaction id status values
*
- * someday we will use "11" = 3 = XID_INVALID to mean the
- * starting of run-length encoded log data.
+ * someday we will use "11" = 3 = XID_COMMIT_CHILD to mean the
+ * commiting of child xactions.
* ----------------
*/
-#define XID_COMMIT 2 /* transaction commited */
-#define XID_ABORT 1 /* transaction aborted */
-#define XID_INPROGRESS 0 /* transaction in progress */
-#define XID_INVALID 3 /* other */
+#define XID_COMMIT 2 /* transaction commited */
+#define XID_ABORT 1 /* transaction aborted */
+#define XID_INPROGRESS 0 /* transaction in progress */
+#define XID_COMMIT_CHILD 3 /* child xact commited */
typedef unsigned char XidStatus;/* (2 bits) */
@@ -69,7 +68,6 @@ typedef unsigned char XidStatus;/* (2 bits) */
*/
#define TP_DataSize BLCKSZ
#define TP_NumXidStatusPerBlock (TP_DataSize * 4)
-#define TP_NumTimePerBlock (TP_DataSize / 4)
/* ----------------
* LogRelationContents structure
@@ -91,25 +89,6 @@ typedef struct LogRelationContentsData
typedef LogRelationContentsData *LogRelationContents;
/* ----------------
- * TimeRelationContents structure
- *
- * This structure describes the storage of the data in the
- * first 2048 bytes of the time relation. This storage is never
- * used for transaction commit times because transaction id's begin
- * their numbering at 512.
- *
- * The first 4 bytes of this relation store the version
- * number of the transction system.
- * ----------------
- */
-typedef struct TimeRelationContentsData
-{
- int TransSystemVersion;
-} TimeRelationContentsData;
-
-typedef TimeRelationContentsData *TimeRelationContents;
-
-/* ----------------
* VariableRelationContents structure
*
* The variable relation is a special "relation" which
@@ -127,10 +106,10 @@ typedef TimeRelationContentsData *TimeRelationContents;
*/
typedef struct VariableRelationContentsData
{
- int TransSystemVersion;
- TransactionId nextXidData;
- TransactionId lastXidData;
- Oid nextOid;
+ int TransSystemVersion;
+ TransactionId nextXidData;
+ TransactionId lastXidData; /* unused */
+ Oid nextOid;
} VariableRelationContentsData;
typedef VariableRelationContentsData *VariableRelationContents;
@@ -143,7 +122,6 @@ typedef VariableRelationContentsData *VariableRelationContents;
/*
* prototypes for functions in transam/transam.c
*/
-extern AbsoluteTime TransactionIdGetCommitTime(TransactionId transactionId);
extern void InitializeTransactionLog(void);
extern bool TransactionIdDidCommit(TransactionId transactionId);
extern bool TransactionIdDidAbort(TransactionId transactionId);
@@ -162,18 +140,10 @@ extern void
TransBlockNumberSetXidStatus(Relation relation,
BlockNumber blockNumber, TransactionId xid, XidStatus xstatus,
bool *failP);
-extern AbsoluteTime
-TransBlockNumberGetCommitTime(Relation relation,
- BlockNumber blockNumber, TransactionId xid, bool *failP);
-extern void
-TransBlockNumberSetCommitTime(Relation relation,
- BlockNumber blockNumber, TransactionId xid, AbsoluteTime xtime,
- bool *failP);
/* in transam/varsup.c */
extern void VariableRelationPutNextXid(TransactionId xid);
extern void GetNewTransactionId(TransactionId *xid);
-extern void UpdateLastCommittedXid(TransactionId xid);
extern void GetNewObjectId(Oid *oid_return);
extern void CheckMaxObjectId(Oid assigned_oid);
@@ -184,11 +154,8 @@ extern void CheckMaxObjectId(Oid assigned_oid);
/* in transam.c */
extern Relation LogRelation;
-extern Relation TimeRelation;
extern Relation VariableRelation;
-extern TransactionId cachedGetCommitTimeXid;
-extern AbsoluteTime cachedGetCommitTime;
extern TransactionId cachedTestXid;
extern XidStatus cachedTestXidStatus;
diff --git a/src/include/access/valid.h b/src/include/access/valid.h
index a37258c62a6..d7707fa495b 100644
--- a/src/include/access/valid.h
+++ b/src/include/access/valid.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: valid.h,v 1.8 1997/09/18 14:20:45 momjian Exp $
+ * $Id: valid.h,v 1.9 1997/11/02 15:26:46 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -122,8 +122,6 @@ do \
/* We use underscores to protect the variable passed in as parameters */ \
HeapTuple _tuple; \
bool _res; \
- TransactionId _old_tmin, \
- _old_tmax; \
\
if (!ItemIdIsUsed(itemId)) \
(result) = (HeapTuple) NULL; \
@@ -144,11 +142,10 @@ do \
(result) = _tuple; \
else \
{ \
- _old_tmin = _tuple->t_tmin; \
- _old_tmax = _tuple->t_tmax; \
+ uint16 _infomask = _tuple->t_infomask; \
+ \
_res = HeapTupleSatisfiesTimeQual(_tuple, (qual)); \
- if (_tuple->t_tmin != _old_tmin || \
- _tuple->t_tmax != _old_tmax) \
+ if (_tuple->t_infomask != _infomask) \
SetBufferCommitInfoNeedsSave(buffer); \
if (_res) \
(result) = _tuple; \
diff --git a/src/include/access/xact.h b/src/include/access/xact.h
index 67f59425361..80d220bc805 100644
--- a/src/include/access/xact.h
+++ b/src/include/access/xact.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: xact.h,v 1.9 1997/09/08 21:51:06 momjian Exp $
+ * $Id: xact.h,v 1.10 1997/11/02 15:26:48 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -53,6 +53,12 @@ typedef struct TransactionStateData
typedef TransactionStateData *TransactionState;
+#define TransactionIdIsValid(xid) ((bool) (xid != NullTransactionId))
+#define TransactionIdStore(xid, dest) \
+ (*((TransactionId*)dest) = (TransactionId)xid)
+#define StoreInvalidTransactionId(dest) \
+ (*((TransactionId*)dest) = NullTransactionId)
+
/* ----------------
* extern definitions
* ----------------
@@ -88,11 +94,6 @@ extern TransactionId DisabledTransactionId;
extern TransactionId xidin(char *representation);
extern char *xidout(TransactionId transactionId);
extern bool xideq(TransactionId xid1, TransactionId xid2);
-extern bool TransactionIdIsValid(TransactionId transactionId);
-extern void StoreInvalidTransactionId(TransactionId *destination);
-extern void
-TransactionIdStore(TransactionId transactionId,
- TransactionId *destination);
extern bool TransactionIdEquals(TransactionId id1, TransactionId id2);
extern bool TransactionIdIsLessThan(TransactionId id1, TransactionId id2);
extern void TransactionIdAdd(TransactionId *xid, int value);