Logo Search packages:      
Sourcecode: maxdb-7.5.00 version File versions  Download package

void cbd600_Node::bd600Check ( const bool  bWithExtendedCheck  )  const

function: bd600Check

Definition at line 532 of file vbd600.cpp.

{
    ROUTINE_DBG_MEO00 ("bd600Check");
    
    if ((e_ok == m_TrError) && (NIL_PAGE_NO_GG00 != m_pNode->nd_id()))
    {
        tsp00_TaskId     &taskId = m_Current.curr_trans->trTaskId_gg00;
        tbd_node_ptrs    nptrs   = m_NodePtrs; // necessary, because of pascal/c++ mix and const method
        
        bd13CheckNode( taskId, m_TrError, nptrs, m_Current.curr_tree_id, bWithExtendedCheck );
        
        if(
            ( bWithExtendedCheck                            ) &&
            ( e_ok            == m_TrError                  ) &&
            ( LEAF_LEVEL_BD00 == m_pNode->nd_level()        ) &&
            ( pt2Inv_egg00    == m_pNode->nd_pt2()          ) && // beware of pt2InvSubtree_egg00
            ( ! m_pNode->nd_pmode().includes( pmTemp_egg00 ))    // beware of tfnTempInv_egg00
            )
        {
            for( tsp00_Int4 recIndex = FIRST_REC_INDEX_BD00;
            recIndex <= bd600MaxRecIndex(); ++recIndex)
            {
                const tgg00_RecPtr pRec = bd600RecPtr( recIndex );
                
                switch( pRec->recInvListKind_gg00())
                {
                case( ilkArray_egg00 ):
                    {
                        // the destructor checks the record on failure it is aborted 
                        cbd450_InvListArray InvListArrayRec (pRec);
                    }
                    break;
                case( ilkSubTree_egg00 ):
                    break;
                default:
                    m_TrError = e_data_page_corrupted;
                    g01opmsg (sp3p_knldiag, sp3m_error, bd600c1WrongKeyOrder_csp03,
                        csp3_n_btree, "Wrong InvListKind       ", recIndex);
                    bd600Dump (csp3_bd_msg, "bd600Check              ");
                    break;
                }
            }
        }
    }
    if(
        ( e_ok == m_TrError   ) && 
        ( ! m_pNode->nd_pmode().includes( pmTemp_egg00 )) &&
        ( bWithExtendedCheck ) 
        )
    {
        bd600_CheckLeafCount(); 
    }
}


Generated by  Doxygen 1.6.0   Back to index