metadataengine/server/src/mdssqldbmaintenance.cpp
branchRCL_3
changeset 53 29d87345eaeb
parent 50 85f623e1ef41
child 63 e538444823de
equal deleted inserted replaced
50:85f623e1ef41 53:29d87345eaeb
   186                     }
   186                     }
   187                 }
   187                 }
   188             }
   188             }
   189           }
   189           }
   190     CleanupStack::PopAndDestroy( &col2propQuery );
   190     CleanupStack::PopAndDestroy( &col2propQuery );
   191     emptyRowData.Reset();
       
   192      
   191      
   193     CleanupStack::PopAndDestroy( &emptyRowData );
   192     CleanupStack::PopAndDestroy( &emptyRowData );
   194     
   193     
   195     if(test == KErrCorrupt )
   194     if(test == KErrCorrupt )
   196         {
   195         {
   225     						  majorVersion, minorVersion );
   224     						  majorVersion, minorVersion );
   226 
   225 
   227 	CleanupStack::PopAndDestroy( &emptyRowData );
   226 	CleanupStack::PopAndDestroy( &emptyRowData );
   228     }
   227     }
   229 
   228 
       
   229 TBool CMdSSqlDbMaintenance::CheckForCorruptionL()
       
   230     {
       
   231     // Check the MDS default namespace main table for validity
       
   232     // This table should always contain at least 1 default system folder object
       
   233     _LIT( KValidateData, "SELECT COUNT(*) FROM Object%u;" );
       
   234  
       
   235     RBuf commonClauseOne;
       
   236     User::LeaveIfError( commonClauseOne.Create( KValidateData.iTypeLength + KMaxUintValueLength ) );
       
   237     CleanupClosePushL( commonClauseOne ); 
       
   238     commonClauseOne.Format( KValidateData, KDefaultNamespaceDefId );    
       
   239     
       
   240     RRowData emptyRowData;
       
   241     CleanupClosePushL( emptyRowData );
       
   242         
       
   243     RMdsStatement validationQuery;
       
   244     CleanupClosePushL( validationQuery );
       
   245     
       
   246     CMdSSqLiteConnection& connection = MMdSDbConnectionPool::GetDefaultDBL();
       
   247     
       
   248     TInt test( KErrNone );
       
   249     TUint32 count( 0 );
       
   250     TRAP( test, connection.ExecuteQueryL( commonClauseOne, validationQuery, emptyRowData ) );
       
   251     if( test == KErrNone )
       
   252         {
       
   253         emptyRowData.AppendL( TColumn( count ) );
       
   254         TRAP( test, connection.NextRowL(validationQuery, emptyRowData));
       
   255         if(test == KErrNone)
       
   256             {
       
   257             emptyRowData.Column(0).Get( count );
       
   258                     
       
   259             if(count <= 0)
       
   260                 {
       
   261                 test = KErrCorrupt;
       
   262                 }
       
   263             }
       
   264         }
       
   265     
       
   266     CleanupStack::PopAndDestroy( &validationQuery );
       
   267      
       
   268     CleanupStack::PopAndDestroy( &emptyRowData );
       
   269     
       
   270     CleanupStack::PopAndDestroy( &commonClauseOne );
       
   271     
       
   272     return ( test == KErrNone );
       
   273     }
       
   274