diff --git a/src/backend/access/hash/hashutil.c b/src/backend/access/hash/hashutil.c index 1cc4a56993..224f28e6d5 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 31a858ec4f..84d4c7fff1 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