@ -8,7 +8,7 @@
* Portions Copyright ( c ) 1994 , Regents of the University of California
* Portions Copyright ( c ) 1994 , Regents of the University of California
*
*
* IDENTIFICATION
* IDENTIFICATION
* $ PostgreSQL : pgsql / src / backend / storage / freespace / fsmpage . c , v 1.2 2008 / 10 / 07 21 : 10 : 11 tgl Exp $
* $ PostgreSQL : pgsql / src / backend / storage / freespace / fsmpage . c , v 1.3 2008 / 12 / 10 17 : 11 : 18 tgl Exp $
*
*
* NOTES :
* NOTES :
*
*
@ -243,17 +243,20 @@ fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext,
*/
*/
while ( nodeno < NonLeafNodesPerPage )
while ( nodeno < NonLeafNodesPerPage )
{
{
int leftnodeno = leftchild ( nodeno ) ;
int childnodeno = leftchild ( nodeno ) ;
int rightnodeno = leftnodeno + 1 ;
bool leftok = ( leftnodeno < NodesPerPage ) & &
if ( childnodeno < NodesPerPage & &
( fsmpage - > fp_nodes [ leftnodeno ] > = minvalue ) ;
fsmpage - > fp_nodes [ childnodeno ] > = minvalue )
bool rightok = ( rightnodeno < NodesPerPage ) & &
{
( fsmpage - > fp_nodes [ rightnodeno ] > = minvalue ) ;
nodeno = childnodeno ;
continue ;
if ( leftok )
}
nodeno = leftnodeno ;
childnodeno + + ; /* point to right child */
else if ( rightok )
if ( childnodeno < NodesPerPage & &
nodeno = rightnodeno ;
fsmpage - > fp_nodes [ childnodeno ] > = minvalue )
{
nodeno = childnodeno ;
}
else
else
{
{
/*
/*