Use new metapage for hash and btree.
authorRobert Haas <[email protected]>
Wed, 30 May 2012 17:22:55 +0000 (13:22 -0400)
committerRobert Haas <[email protected]>
Thu, 14 Jun 2012 14:31:33 +0000 (10:31 -0400)
src/backend/access/hash/hashpage.c
src/backend/access/nbtree/nbtpage.c
src/backend/access/nbtree/nbtree.c
src/backend/access/nbtree/nbtsort.c
src/include/access/nbtree.h

index 6b647a895bf3d3c8938fb7d83f4dbd5eb75cea1c..48c909ecc97200b21968399515202c168d194c14 100644 (file)
@@ -382,6 +382,7 @@ _hash_metapinit(Relation rel, double num_tuples, ForkNumber forkNum)
         */
        metabuf = _hash_getnewbuf(rel, HASH_METAPAGE, forkNum);
        pg = BufferGetPage(metabuf);
+       MetapageInit(rel, pg);
 
        pageopaque = (HashPageOpaque) PageGetSpecialPointer(pg);
        pageopaque->hasho_prevblkno = InvalidBlockNumber;
index 016ce2283c2655ec3e25178ebe6d40ad7bf9c02a..7853f5bba890de8020c087b011f6b2158a101795 100644 (file)
  *     _bt_initmetapage() -- Fill a page buffer with a correct metapage image
  */
 void
-_bt_initmetapage(Page page, BlockNumber rootbknum, uint32 level)
+_bt_initmetapage(Relation rel, Page page, BlockNumber rootbknum, uint32 level)
 {
        BTMetaPageData *metad;
        BTPageOpaque metaopaque;
 
        _bt_pageinit(page, BLCKSZ);
+       MetapageInit(rel, page);
 
        metad = BTPageGetMeta(page);
        metad->btm_magic = BTREE_MAGIC;
index 41d06edb15487130104a19457b96dacd7ccc0331..74bc144a5a6c54aa93442b3b0118557bcb248696 100644 (file)
@@ -213,7 +213,7 @@ btbuildempty(PG_FUNCTION_ARGS)
 
        /* Construct metapage. */
        metapage = (Page) palloc(BLCKSZ);
-       _bt_initmetapage(metapage, P_NONE, 0);
+       _bt_initmetapage(index, metapage, P_NONE, 0);
 
        /* Write the page.      If archiving/streaming, XLOG it. */
        smgrwrite(index->rd_smgr, INIT_FORKNUM, BTREE_METAPAGE,
index 9aa3a135b576b4e761b213035ef158792f1dff6e..9a84f1da36ccab5668a1038b32a9160dbdd1e8b1 100644 (file)
@@ -658,7 +658,7 @@ _bt_uppershutdown(BTWriteState *wstate, BTPageState *state)
         * by filling in a valid magic number in the metapage.
         */
        metapage = (Page) palloc(BLCKSZ);
-       _bt_initmetapage(metapage, rootblkno, rootlevel);
+       _bt_initmetapage(wstate->index, metapage, rootblkno, rootlevel);
        _bt_blwritepage(wstate, metapage, BTREE_METAPAGE);
 }
 
index c0bcffec22d147fbbdaa7c0a105df7f276b0af25..78efad2d0001667870e94943d8ae71011182406d 100644 (file)
@@ -623,7 +623,8 @@ extern void _bt_insert_parent(Relation rel, Buffer buf, Buffer rbuf,
 /*
  * prototypes for functions in nbtpage.c
  */
-extern void _bt_initmetapage(Page page, BlockNumber rootbknum, uint32 level);
+extern void _bt_initmetapage(Relation rel, Page page, BlockNumber rootbknum,
+                                uint32 level);
 extern Buffer _bt_getroot(Relation rel, int access);
 extern Buffer _bt_gettrueroot(Relation rel);
 extern void _bt_checkpage(Relation rel, Buffer buf);