diff options
| author | Vadim B. Mikheev <vadim4o@yahoo.com> | 2000-09-07 09:58:38 +0000 |
|---|---|---|
| committer | Vadim B. Mikheev <vadim4o@yahoo.com> | 2000-09-07 09:58:38 +0000 |
| commit | f2bfe8a24c46133f81e188653a127f939eb33c4a (patch) | |
| tree | 51525a498eba055dda2fb362985af1231d02a831 /src/include | |
| parent | c18c321365117cd60fe42f562838fe126317bf52 (diff) | |
| download | postgresql-f2bfe8a24c46133f81e188653a127f939eb33c4a.tar.gz | |
Heap redo/undo (except for tuple moving used by vacuum).
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/access/hio.h | 4 | ||||
| -rw-r--r-- | src/include/access/htup.h | 23 | ||||
| -rw-r--r-- | src/include/storage/bufpage.h | 15 | ||||
| -rw-r--r-- | src/include/storage/itemid.h | 12 | ||||
| -rw-r--r-- | src/include/utils/rel.h | 4 |
5 files changed, 41 insertions, 17 deletions
diff --git a/src/include/access/hio.h b/src/include/access/hio.h index c0636a4ff3..df39aed6cb 100644 --- a/src/include/access/hio.h +++ b/src/include/access/hio.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: hio.h,v 1.15 2000/07/03 02:54:17 vadim Exp $ + * $Id: hio.h,v 1.16 2000/09/07 09:58:35 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -18,6 +18,6 @@ extern void RelationPutHeapTuple(Relation relation, Buffer buffer, HeapTuple tuple); -extern Buffer RelationGetBufferForTuple(Relation relation, Size len, Buffer Ubuf); +extern Buffer RelationGetBufferForTuple(Relation relation, Size len); #endif /* HIO_H */ diff --git a/src/include/access/htup.h b/src/include/access/htup.h index 73e6655634..f105dafee2 100644 --- a/src/include/access/htup.h +++ b/src/include/access/htup.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: htup.h,v 1.34 2000/08/07 20:15:40 tgl Exp $ + * $Id: htup.h,v 1.35 2000/09/07 09:58:35 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -15,6 +15,7 @@ #define HTUP_H #include "storage/bufpage.h" +#include "storage/relfilenode.h" #define MinHeapTupleBitmapSize 32 /* 8 * 4 */ @@ -81,8 +82,7 @@ typedef HeapTupleHeaderData *HeapTupleHeader; */ typedef struct xl_heaptid { - Oid dbId; /* database */ - Oid relId; /* relation */ + RelFileNode node; CommandId cid; /* this is for "better" tuple' */ /* identification - it allows to avoid */ /* "compensation" records for undo */ @@ -92,7 +92,7 @@ typedef struct xl_heaptid /* This is what we need to know about delete - ALIGN(18) = 24 bytes */ typedef struct xl_heap_delete { - xl_heaptid dtid; /* deleted tuple id */ + xl_heaptid target; /* deleted tuple id */ } xl_heap_delete; #define SizeOfHeapDelete (offsetof(xl_heaptid, tid) + SizeOfIptrData)) @@ -100,7 +100,7 @@ typedef struct xl_heap_delete /* This is what we need to know about insert - 26 + data */ typedef struct xl_heap_insert { - xl_heaptid itid; /* inserted tuple id */ + xl_heaptid target; /* inserted tuple id */ /* something from tuple header */ int16 t_natts; Oid t_oid; @@ -114,8 +114,8 @@ typedef struct xl_heap_insert /* This is what we need to know about update - 28 + data */ typedef struct xl_heap_update { - xl_heaptid dtid; /* deleted tuple id */ - ItemPointerData itid; /* new inserted tuple id */ + xl_heaptid target; /* deleted tuple id */ + ItemPointerData newtid; /* new inserted tuple id */ /* something from header of new tuple version */ int16 t_natts; uint8 t_hoff; @@ -128,8 +128,8 @@ typedef struct xl_heap_update /* This is what we need to know about tuple move - 24 bytes */ typedef struct xl_heap_move { - xl_heaptid ftid; /* moved from */ - ItemPointerData ttid; /* moved to */ + xl_heaptid target; /* moved from */ + ItemPointerData newtid; /* moved to */ } xl_heap_move; #define SizeOfHeapMove (offsetof(xl_heap_move, ttid) + SizeOfIptrData)) @@ -238,6 +238,9 @@ typedef HeapTupleData *HeapTuple; #define HEAP_HASCOMPRESSED 0x0008 /* has compressed stored */ /* attribute(s) */ #define HEAP_HASEXTENDED 0x000C /* the two above combined */ + +#define HEAP_XMAX_UNLOGGED 0x0080 /* to lock tuple for update */ + /* without logging */ #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 */ @@ -249,7 +252,7 @@ typedef HeapTupleData *HeapTuple; #define HEAP_MOVED_IN 0x8000 /* moved from another place by * vacuum */ -#define HEAP_XACT_MASK 0xFF00 /* */ +#define HEAP_XACT_MASK 0xFFF0 /* */ #define HeapTupleNoNulls(tuple) \ (!(((HeapTuple) (tuple))->t_data->t_infomask & HEAP_HASNULL)) diff --git a/src/include/storage/bufpage.h b/src/include/storage/bufpage.h index 8498c783a1..58ba61f68d 100644 --- a/src/include/storage/bufpage.h +++ b/src/include/storage/bufpage.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: bufpage.h,v 1.31 2000/07/21 06:42:39 tgl Exp $ + * $Id: bufpage.h,v 1.32 2000/09/07 09:58:36 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -296,6 +296,19 @@ typedef enum (sizeof(PageHeaderData) - sizeof(ItemIdData)))) \ / ((int) sizeof(ItemIdData))) +#ifdef XLOG + +#define PageGetLSN(page) \ + (((PageHeader) (page))->pd_lsn) +#define PageSetLSN(page, lsn) \ + (((PageHeader) (page))->pd_lsn = (XLogRecPtr) (lsn)) + +#define PageGetSUI(page) \ + (((PageHeader) (page))->pd_sui) +#define PageSetSUI(page, sui) \ + (((PageHeader) (page))->pd_sui = (StartUpID) (sui)) + +#endif /* ---------------------------------------------------------------- * extern declarations diff --git a/src/include/storage/itemid.h b/src/include/storage/itemid.h index 87aa82ac3c..0b330ce56f 100644 --- a/src/include/storage/itemid.h +++ b/src/include/storage/itemid.h @@ -7,14 +7,13 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: itemid.h,v 1.11 2000/08/07 20:15:50 tgl Exp $ + * $Id: itemid.h,v 1.12 2000/09/07 09:58:36 vadim Exp $ * *------------------------------------------------------------------------- */ #ifndef ITEMID_H #define ITEMID_H - /* * An item pointer (also called line pointer) on a buffer page */ @@ -31,8 +30,15 @@ typedef ItemIdData *ItemId; * lp_flags contains these flags: */ #define LP_USED 0x01 /* this line pointer is being used */ -/* currently, there is one unused flag bit ... */ +#ifdef XLOG + +#define LP_DELETE 0x02 /* item is to be deleted */ + +#define ItemIdDeleted(itemId) \ + (((itemId)->lp_flags & LP_DELETE) != 0) + +#endif /* * Item offsets, lengths, and flags are represented by these types when diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h index c90ba3c5ee..4deec0618a 100644 --- a/src/include/utils/rel.h +++ b/src/include/utils/rel.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: rel.h,v 1.40 2000/07/14 22:18:02 tgl Exp $ + * $Id: rel.h,v 1.41 2000/09/07 09:58:38 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -19,6 +19,7 @@ #include "catalog/pg_am.h" #include "catalog/pg_class.h" #include "rewrite/prs2lock.h" +#include "storage/relfilenode.h" #include "storage/fd.h" /* added to prevent circular dependency. bjm 1999/11/15 */ @@ -86,6 +87,7 @@ typedef struct TriggerDesc typedef struct RelationData { File rd_fd; /* open file descriptor, or -1 if none */ + RelFileNode rd_node; /* relation file node */ int rd_nblocks; /* number of blocks in rel */ uint16 rd_refcnt; /* reference count */ bool rd_myxactonly; /* rel uses the local buffer mgr */ |
