aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/include/access/htup.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/include/access/htup.h b/src/include/access/htup.h
index 8b330d82ec8..8de6fa852f4 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;