diff --git a/src/include/access/htup.h b/src/include/access/htup.h index 8b330d82ec..8de6fa852f 100644 --- a/src/include/access/htup.h +++ b/src/include/access/htup.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: htup.h,v 1.47 2001/03/22 04:00:27 momjian Exp $ + * $Id: htup.h,v 1.48 2001/03/25 22:40:58 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -83,6 +83,11 @@ typedef HeapTupleHeaderData *HeapTupleHeader; /* * All what we need to find changed tuple (18 bytes) + * + * NB: on most machines, sizeof(xl_heaptid) will include some trailing pad + * bytes for alignment. We don't want to store the pad space in the XLOG, + * so use SizeOfHeapTid for space calculations. Similar comments apply for + * the other xl_FOO structs. */ typedef struct xl_heaptid { @@ -90,13 +95,15 @@ typedef struct xl_heaptid ItemPointerData tid; /* changed tuple id */ } xl_heaptid; +#define SizeOfHeapTid (offsetof(xl_heaptid, tid) + SizeOfIptrData) + /* This is what we need to know about delete */ typedef struct xl_heap_delete { xl_heaptid target; /* deleted tuple id */ } xl_heap_delete; -#define SizeOfHeapDelete (offsetof(xl_heaptid, tid) + SizeOfIptrData) +#define SizeOfHeapDelete (offsetof(xl_heap_delete, target) + SizeOfHeapTid) typedef struct xl_heap_header { @@ -115,14 +122,14 @@ typedef struct xl_heap_insert /* xl_heap_header & TUPLE DATA FOLLOWS AT END OF STRUCT */ } xl_heap_insert; -#define SizeOfHeapInsert (offsetof(xl_heaptid, tid) + SizeOfIptrData) +#define SizeOfHeapInsert (offsetof(xl_heap_insert, target) + SizeOfHeapTid) /* This is what we need to know about update|move */ typedef struct xl_heap_update { xl_heaptid target; /* deleted tuple id */ ItemPointerData newtid; /* new inserted tuple id */ - /* NEW TUPLE xl_heap_header (XMIN & XMAX FOR MOVE OP) */ + /* NEW TUPLE xl_heap_header (PLUS xmax & xmin IF MOVE OP) */ /* and TUPLE DATA FOLLOWS AT END OF STRUCT */ } xl_heap_update;