88 * Portions Copyright (c) 1994, Regents of the University of California
99 *
1010 * IDENTIFICATION
11- * $PostgreSQL: pgsql/src/backend/access/gist/gistxlog.c,v 1.11 2006/03/24 04:32:12 tgl Exp $
11+ * $PostgreSQL: pgsql/src/backend/access/gist/gistxlog.c,v 1.12 2006/03/29 21:17:36 tgl Exp $
1212 *-------------------------------------------------------------------------
1313 */
1414#include "postgres.h"
@@ -177,9 +177,7 @@ gistRedoEntryUpdateRecord(XLogRecPtr lsn, XLogRecord *record, bool isnewroot)
177177 decodeEntryUpdateRecord (& xlrec , record );
178178
179179 reln = XLogOpenRelation (xlrec .data -> node );
180- if (!RelationIsValid (reln ))
181- return ;
182- buffer = XLogReadBuffer (false, reln , xlrec .data -> blkno );
180+ buffer = XLogReadBuffer (reln , xlrec .data -> blkno , false);
183181 if (!BufferIsValid (buffer ))
184182 elog (PANIC , "block %u unfound" , xlrec .data -> blkno );
185183 page = (Page ) BufferGetPage (buffer );
@@ -195,8 +193,6 @@ gistRedoEntryUpdateRecord(XLogRecPtr lsn, XLogRecord *record, bool isnewroot)
195193 }
196194 else
197195 {
198- if (PageIsNew ((PageHeader ) page ))
199- elog (PANIC , "uninitialized page %u" , xlrec .data -> blkno );
200196 if (XLByteLE (lsn , PageGetLSN (page )))
201197 {
202198 LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
@@ -302,17 +298,12 @@ gistRedoPageSplitRecord(XLogRecPtr lsn, XLogRecord *record)
302298
303299 decodePageSplitRecord (& xlrec , record );
304300 reln = XLogOpenRelation (xlrec .data -> node );
305- if (!RelationIsValid (reln ))
306- return ;
307301
308302 /* first of all wee need get F_LEAF flag from original page */
309- buffer = XLogReadBuffer (false, reln , xlrec .data -> origblkno );
303+ buffer = XLogReadBuffer (reln , xlrec .data -> origblkno , false );
310304 if (!BufferIsValid (buffer ))
311305 elog (PANIC , "block %u unfound" , xlrec .data -> origblkno );
312306 page = (Page ) BufferGetPage (buffer );
313- if (PageIsNew ((PageHeader ) page ))
314- elog (PANIC , "uninitialized page %u" , xlrec .data -> origblkno );
315-
316307 flags = (GistPageIsLeaf (page )) ? F_LEAF : 0 ;
317308 LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
318309 ReleaseBuffer (buffer );
@@ -323,7 +314,7 @@ gistRedoPageSplitRecord(XLogRecPtr lsn, XLogRecord *record)
323314 NewPage * newpage = xlrec .page + i ;
324315 bool isorigpage = (xlrec .data -> origblkno == newpage -> header -> blkno ) ? true : false;
325316
326- buffer = XLogReadBuffer (! isorigpage , reln , newpage -> header -> blkno );
317+ buffer = XLogReadBuffer (reln , newpage -> header -> blkno , ! isorigpage );
327318 if (!BufferIsValid (buffer ))
328319 elog (PANIC , "block %u unfound" , newpage -> header -> blkno );
329320 page = (Page ) BufferGetPage (buffer );
@@ -367,24 +358,15 @@ gistRedoCreateIndex(XLogRecPtr lsn, XLogRecord *record)
367358 Page page ;
368359
369360 reln = XLogOpenRelation (* node );
370- if (!RelationIsValid (reln ))
371- return ;
372- buffer = XLogReadBuffer (true, reln , GIST_ROOT_BLKNO );
373- if (!BufferIsValid (buffer ))
374- elog (PANIC , "root block unfound" );
361+ buffer = XLogReadBuffer (reln , GIST_ROOT_BLKNO , true);
362+ Assert (BufferIsValid (buffer ));
375363 page = (Page ) BufferGetPage (buffer );
376364
377- if (!PageIsNew ((PageHeader ) page ) && XLByteLE (lsn , PageGetLSN (page )))
378- {
379- LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
380- ReleaseBuffer (buffer );
381- return ;
382- }
383-
384365 GISTInitBuffer (buffer , F_LEAF );
385366
386367 PageSetLSN (page , lsn );
387368 PageSetTLI (page , ThisTimeLineID );
369+
388370 LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
389371 WriteBuffer (buffer );
390372}
@@ -527,12 +509,10 @@ gist_form_invalid_tuple(BlockNumber blkno)
527509static Buffer
528510gistXLogReadAndLockBuffer (Relation r , BlockNumber blkno )
529511{
530- Buffer buffer = XLogReadBuffer (false, r , blkno );
512+ Buffer buffer = XLogReadBuffer (r , blkno , false );
531513
532514 if (!BufferIsValid (buffer ))
533515 elog (PANIC , "block %u unfound" , blkno );
534- if (PageIsNew ((PageHeader ) (BufferGetPage (buffer ))))
535- elog (PANIC , "uninitialized page %u" , blkno );
536516
537517 return buffer ;
538518}
@@ -590,8 +570,6 @@ gistContinueInsert(gistIncompleteInsert *insert)
590570 Relation index ;
591571
592572 index = XLogOpenRelation (insert -> node );
593- if (!RelationIsValid (index ))
594- return ;
595573
596574 /*
597575 * needed vector itup never will be more than initial lenblkno+2, because
@@ -606,29 +584,22 @@ gistContinueInsert(gistIncompleteInsert *insert)
606584 if (insert -> origblkno == GIST_ROOT_BLKNO )
607585 {
608586 /*
609- * it was split root, so we should only make new root. it can't be
587+ * it was split root, so we should only make new root. it can't be
610588 * simple insert into root, look at call pushIncompleteInsert in
611589 * gistRedoPageSplitRecord
612590 */
613- Buffer buffer = XLogReadBuffer (true, index , GIST_ROOT_BLKNO );
591+ Buffer buffer = XLogReadBuffer (index , GIST_ROOT_BLKNO , true );
614592 Page page ;
615593
616- if (!BufferIsValid (buffer ))
617- elog (PANIC , "root block unfound" );
618-
594+ Assert (BufferIsValid (buffer ));
619595 page = BufferGetPage (buffer );
620- if (XLByteLE (insert -> lsn , PageGetLSN (page )))
621- {
622- LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
623- ReleaseBuffer (buffer );
624- return ;
625- }
626596
627597 GISTInitBuffer (buffer , 0 );
628- page = BufferGetPage (buffer );
629598 gistfillbuffer (index , page , itup , lenitup , FirstOffsetNumber );
599+
630600 PageSetLSN (page , insert -> lsn );
631601 PageSetTLI (page , ThisTimeLineID );
602+
632603 LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
633604 WriteBuffer (buffer );
634605 }
@@ -654,12 +625,10 @@ gistContinueInsert(gistIncompleteInsert *insert)
654625 childfound = 0 ;
655626
656627 numbuffer = 1 ;
657- buffers [numbuffer - 1 ] = XLogReadBuffer (false, index , insert -> path [i ]);
628+ buffers [numbuffer - 1 ] = XLogReadBuffer (index , insert -> path [i ], false );
658629 if (!BufferIsValid (buffers [numbuffer - 1 ]))
659630 elog (PANIC , "block %u unfound" , insert -> path [i ]);
660631 pages [numbuffer - 1 ] = BufferGetPage (buffers [numbuffer - 1 ]);
661- if (PageIsNew ((PageHeader ) (pages [numbuffer - 1 ])))
662- elog (PANIC , "uninitialized page %u" , insert -> path [i ]);
663632
664633 if (XLByteLE (insert -> lsn , PageGetLSN (pages [numbuffer - 1 ])))
665634 {
@@ -693,7 +662,7 @@ gistContinueInsert(gistIncompleteInsert *insert)
693662 if (gistnospace (pages [numbuffer - 1 ], itup , lenitup ))
694663 {
695664 /* no space left on page, so we should split */
696- buffers [numbuffer ] = XLogReadBuffer (true, index , P_NEW );
665+ buffers [numbuffer ] = XLogReadBuffer (index , P_NEW , true );
697666 if (!BufferIsValid (buffers [numbuffer ]))
698667 elog (PANIC , "could not obtain new block" );
699668 GISTInitBuffer (buffers [numbuffer ], 0 );
@@ -717,7 +686,7 @@ gistContinueInsert(gistIncompleteInsert *insert)
717686 RelationGetRelationName (index ));
718687
719688 /* fill new page */
720- buffers [numbuffer ] = XLogReadBuffer (true, index , P_NEW );
689+ buffers [numbuffer ] = XLogReadBuffer (index , P_NEW , true );
721690 if (!BufferIsValid (buffers [numbuffer ]))
722691 elog (PANIC , "could not obtain new block" );
723692 GISTInitBuffer (buffers [numbuffer ], 0 );
0 commit comments