88 *
99 *
1010 * IDENTIFICATION
11- * $Header: /cvsroot/pgsql/src/backend/access/hash/hashovfl.c,v 1.39 2003/09/0202: 18:38 tgl Exp $
11+ * $Header: /cvsroot/pgsql/src/backend/access/hash/hashovfl.c,v 1.40 2003/09/02 18:13:30 tgl Exp $
1212 *
1313 * NOTES
1414 * Overflow pages look like ordinary relation pages.
@@ -97,12 +97,12 @@ _hash_addovflpage(Relation rel, Buffer metabuf, Buffer buf)
9797
9898/* this had better be the last page in a bucket chain */
9999page = BufferGetPage (buf );
100- _hash_checkpage (page ,LH_BUCKET_PAGE |LH_OVERFLOW_PAGE );
100+ _hash_checkpage (rel , page ,LH_BUCKET_PAGE |LH_OVERFLOW_PAGE );
101101pageopaque = (HashPageOpaque )PageGetSpecialPointer (page );
102102Assert (!BlockNumberIsValid (pageopaque -> hasho_nextblkno ));
103103
104104metap = (HashMetaPage )BufferGetPage (metabuf );
105- _hash_checkpage ((Page )metap ,LH_META_PAGE );
105+ _hash_checkpage (rel , (Page )metap ,LH_META_PAGE );
106106
107107/* allocate an empty overflow page */
108108ovflblkno = _hash_getovflpage (rel ,metabuf );
@@ -114,9 +114,9 @@ _hash_addovflpage(Relation rel, Buffer metabuf, Buffer buf)
114114ovflopaque = (HashPageOpaque )PageGetSpecialPointer (ovflpage );
115115ovflopaque -> hasho_prevblkno = BufferGetBlockNumber (buf );
116116ovflopaque -> hasho_nextblkno = InvalidBlockNumber ;
117- ovflopaque -> hasho_flag = LH_OVERFLOW_PAGE ;
118- ovflopaque -> hasho_oaddr = 0 ;
119117ovflopaque -> hasho_bucket = pageopaque -> hasho_bucket ;
118+ ovflopaque -> hasho_flag = LH_OVERFLOW_PAGE ;
119+ ovflopaque -> hasho_filler = HASHO_FILL ;
120120_hash_wrtnorelbuf (ovflbuf );
121121
122122/* logically chain overflow page to previous page */
@@ -174,7 +174,7 @@ _hash_getovflpage(Relation rel, Buffer metabuf)
174174mapblkno = metap -> hashm_mapp [i ];
175175mapbuf = _hash_getbuf (rel ,mapblkno ,HASH_WRITE );
176176mappage = BufferGetPage (mapbuf );
177- _hash_checkpage (mappage ,LH_BITMAP_PAGE );
177+ _hash_checkpage (rel , mappage ,LH_BITMAP_PAGE );
178178freep = HashPageGetBitmap (mappage );
179179
180180if (i != first_page )
@@ -310,11 +310,11 @@ _hash_freeovflpage(Relation rel, Buffer ovflbuf)
310310
311311metabuf = _hash_getbuf (rel ,HASH_METAPAGE ,HASH_WRITE );
312312metap = (HashMetaPage )BufferGetPage (metabuf );
313- _hash_checkpage ((Page )metap ,LH_META_PAGE );
313+ _hash_checkpage (rel , (Page )metap ,LH_META_PAGE );
314314
315315ovflblkno = BufferGetBlockNumber (ovflbuf );
316316ovflpage = BufferGetPage (ovflbuf );
317- _hash_checkpage (ovflpage ,LH_OVERFLOW_PAGE );
317+ _hash_checkpage (rel , ovflpage ,LH_OVERFLOW_PAGE );
318318ovflopaque = (HashPageOpaque )PageGetSpecialPointer (ovflpage );
319319nextblkno = ovflopaque -> hasho_nextblkno ;
320320prevblkno = ovflopaque -> hasho_prevblkno ;
@@ -337,7 +337,7 @@ _hash_freeovflpage(Relation rel, Buffer ovflbuf)
337337Page prevpage = BufferGetPage (prevbuf );
338338HashPageOpaque prevopaque = (HashPageOpaque )PageGetSpecialPointer (prevpage );
339339
340- _hash_checkpage (prevpage ,LH_BUCKET_PAGE |LH_OVERFLOW_PAGE );
340+ _hash_checkpage (rel , prevpage ,LH_BUCKET_PAGE |LH_OVERFLOW_PAGE );
341341Assert (prevopaque -> hasho_bucket == bucket );
342342prevopaque -> hasho_nextblkno = nextblkno ;
343343_hash_wrtbuf (rel ,prevbuf );
@@ -348,7 +348,7 @@ _hash_freeovflpage(Relation rel, Buffer ovflbuf)
348348Page nextpage = BufferGetPage (nextbuf );
349349HashPageOpaque nextopaque = (HashPageOpaque )PageGetSpecialPointer (nextpage );
350350
351- _hash_checkpage (nextpage ,LH_OVERFLOW_PAGE );
351+ _hash_checkpage (rel , nextpage ,LH_OVERFLOW_PAGE );
352352Assert (nextopaque -> hasho_bucket == bucket );
353353nextopaque -> hasho_prevblkno = prevblkno ;
354354_hash_wrtbuf (rel ,nextbuf );
@@ -368,7 +368,7 @@ _hash_freeovflpage(Relation rel, Buffer ovflbuf)
368368
369369mapbuf = _hash_getbuf (rel ,blkno ,HASH_WRITE );
370370mappage = BufferGetPage (mapbuf );
371- _hash_checkpage (mappage ,LH_BITMAP_PAGE );
371+ _hash_checkpage (rel , mappage ,LH_BITMAP_PAGE );
372372freep = HashPageGetBitmap (mappage );
373373CLRBIT (freep ,bitmapbit );
374374_hash_wrtbuf (rel ,mapbuf );
@@ -406,11 +406,11 @@ _hash_initbitmap(Relation rel, HashMetaPage metap, BlockNumber blkno)
406406pg = BufferGetPage (buf );
407407_hash_pageinit (pg ,BufferGetPageSize (buf ));
408408op = (HashPageOpaque )PageGetSpecialPointer (pg );
409- op -> hasho_oaddr = 0 ;
410409op -> hasho_prevblkno = InvalidBlockNumber ;
411410op -> hasho_nextblkno = InvalidBlockNumber ;
412- op -> hasho_flag = LH_BITMAP_PAGE ;
413411op -> hasho_bucket = -1 ;
412+ op -> hasho_flag = LH_BITMAP_PAGE ;
413+ op -> hasho_filler = HASHO_FILL ;
414414
415415/* set all of the bits to 1 */
416416freep = HashPageGetBitmap (pg );
@@ -471,7 +471,7 @@ _hash_squeezebucket(Relation rel,
471471wblkno = bucket_blkno ;
472472wbuf = _hash_getbuf (rel ,wblkno ,HASH_WRITE );
473473wpage = BufferGetPage (wbuf );
474- _hash_checkpage (wpage ,LH_BUCKET_PAGE );
474+ _hash_checkpage (rel , wpage ,LH_BUCKET_PAGE );
475475wopaque = (HashPageOpaque )PageGetSpecialPointer (wpage );
476476
477477/*
@@ -495,7 +495,7 @@ _hash_squeezebucket(Relation rel,
495495_hash_relbuf (rel ,rbuf ,HASH_WRITE );
496496rbuf = _hash_getbuf (rel ,rblkno ,HASH_WRITE );
497497rpage = BufferGetPage (rbuf );
498- _hash_checkpage (rpage ,LH_OVERFLOW_PAGE );
498+ _hash_checkpage (rel , rpage ,LH_OVERFLOW_PAGE );
499499Assert (!PageIsEmpty (rpage ));
500500ropaque = (HashPageOpaque )PageGetSpecialPointer (rpage );
501501Assert (ropaque -> hasho_bucket == bucket );
@@ -531,7 +531,7 @@ _hash_squeezebucket(Relation rel,
531531
532532wbuf = _hash_getbuf (rel ,wblkno ,HASH_WRITE );
533533wpage = BufferGetPage (wbuf );
534- _hash_checkpage (wpage ,LH_OVERFLOW_PAGE );
534+ _hash_checkpage (rel , wpage ,LH_OVERFLOW_PAGE );
535535Assert (!PageIsEmpty (wpage ));
536536wopaque = (HashPageOpaque )PageGetSpecialPointer (wpage );
537537Assert (wopaque -> hasho_bucket == bucket );
@@ -576,7 +576,7 @@ _hash_squeezebucket(Relation rel,
576576
577577rbuf = _hash_getbuf (rel ,rblkno ,HASH_WRITE );
578578rpage = BufferGetPage (rbuf );
579- _hash_checkpage (rpage ,LH_OVERFLOW_PAGE );
579+ _hash_checkpage (rel , rpage ,LH_OVERFLOW_PAGE );
580580Assert (!PageIsEmpty (rpage ));
581581ropaque = (HashPageOpaque )PageGetSpecialPointer (rpage );
582582Assert (ropaque -> hasho_bucket == bucket );