From c9a734521712797b1cd6a77bf9cabfe4c503e186 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Tue, 2 Jul 2002 06:18:57 +0000
Subject: [PATCH] >the extra level of struct naming for pd_opaque has no
 obvious >usefulness. > >> [...] should I post a patch that puts pagesize
 directly into >> PageHeaderData? > >If you're so inclined.  Given that
 pd_opaque is hidden in those macros, >there wouldn't be much of any gain in
 readability either, so I haven't >worried about changing the declaration.

Thanks for the clarification.  Here is the patch.  Not much gain, but at
least it saves the next junior hacker from scratching his head ...


Manfred Koizar
---
 src/backend/access/hash/hashutil.c |  6 ++---
 src/include/storage/bufpage.h      | 38 ++++++++++++------------------
 2 files changed, 18 insertions(+), 26 deletions(-)

diff --git a/src/backend/access/hash/hashutil.c b/src/backend/access/hash/hashutil.c
index 1cc4a56993d..224f28e6d55 100644
--- a/src/backend/access/hash/hashutil.c
+++ b/src/backend/access/hash/hashutil.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/access/hash/hashutil.c,v 1.30 2002/06/20 20:29:24 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/access/hash/hashutil.c,v 1.31 2002/07/02 06:18:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -131,13 +131,13 @@ _hash_checkpage(Page page, int flags)
 	HashPageOpaque opaque;
 
 	Assert(page);
-	Assert(((PageHeader) (page))->pd_lower >= (sizeof(PageHeaderData) - sizeof(ItemIdData)));
+	Assert(((PageHeader) (page))->pd_lower >= SizeOfPageHeaderData);
 #if 1
 	Assert(((PageHeader) (page))->pd_upper <=
 		   (BLCKSZ - MAXALIGN(sizeof(HashPageOpaqueData))));
 	Assert(((PageHeader) (page))->pd_special ==
 		   (BLCKSZ - MAXALIGN(sizeof(HashPageOpaqueData))));
-	Assert(((PageHeader) (page))->pd_opaque.od_pagesize == BLCKSZ);
+	Assert(PageGetPageSize(page) == BLCKSZ);
 #endif
 	if (flags)
 	{
diff --git a/src/include/storage/bufpage.h b/src/include/storage/bufpage.h
index 31a858ec4ff..84d4c7fff17 100644
--- a/src/include/storage/bufpage.h
+++ b/src/include/storage/bufpage.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: bufpage.h,v 1.49 2002/07/02 05:48:44 momjian Exp $
+ * $Id: bufpage.h,v 1.50 2002/07/02 06:18:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -65,8 +65,7 @@
  * byte-offset position, tuples can be physically shuffled on a page
  * whenever the need arises.
  *
- * AM-generic per-page information is kept in the pd_opaque field of
- * the PageHeaderData.	(Currently, only the page size is kept here.)
+ * AM-generic per-page information is kept in PageHeaderData.
  *
  * AM-specific per-page data (if any) is kept in the area marked "special
  * space"; each AM has an "opaque" structure defined somewhere that is
@@ -92,25 +91,18 @@ typedef uint16 LocationIndex;
 
 
 /*
+ * disk page organization
  * space management information generic to any page
  *
- *		od_pagesize		- size in bytes.
- *						  Minimum possible page size is perhaps 64B to fit
- *						  page header, opaque space and a minimal tuple;
- *						  of course, in reality you want it much bigger.
- *						  On the high end, we can only support pages up
- *						  to 32KB because lp_off/lp_len are 15 bits.
- */
-typedef struct OpaqueData
-{
-	uint16		od_pagesize;
-} OpaqueData;
-
-typedef OpaqueData *Opaque;
-
-
-/*
- * disk page organization
+ *		pd_lower   	- offset to start of free space.
+ *		pd_upper   	- offset to end of free space.
+ *		pd_special 	- offset to start of special space.
+ *		pd_pagesize	- size in bytes.
+ *					  Minimum possible page size is perhaps 64B to fit
+ *					  page header, opaque space and a minimal tuple;
+ *					  of course, in reality you want it much bigger.
+ *					  On the high end, we can only support pages up
+ *					  to 32KB because lp_off/lp_len are 15 bits.
  */
 typedef struct PageHeaderData
 {
@@ -124,7 +116,7 @@ typedef struct PageHeaderData
 	LocationIndex pd_lower;		/* offset to start of free space */
 	LocationIndex pd_upper;		/* offset to end of free space */
 	LocationIndex pd_special;	/* offset to start of special space */
-	OpaqueData	pd_opaque;		/* AM-generic information */
+	uint16		pd_pagesize;
 	ItemIdData	pd_linp[1];		/* beginning of line pointer array */
 } PageHeaderData;
 
@@ -216,14 +208,14 @@ typedef enum
  * however, it can be called on a page for which there is no buffer.
  */
 #define PageGetPageSize(page) \
-	((Size) ((PageHeader) (page))->pd_opaque.od_pagesize)
+	((Size) ((PageHeader) (page))->pd_pagesize)
 
 /*
  * PageSetPageSize
  *		Sets the page size of a page.
  */
 #define PageSetPageSize(page, size) \
-	(((PageHeader) (page))->pd_opaque.od_pagesize = (size))
+	(((PageHeader) (page))->pd_pagesize = (size))
 
 /* ----------------
  *		page special data macros
-- 
GitLab