metadataengine/server/src/mdssqldbmaintenance.cpp
branchRCL_3
changeset 21 85f623e1ef41
parent 20 f23c07ec56e2
child 22 29d87345eaeb
equal deleted inserted replaced
20:f23c07ec56e2 21:85f623e1ef41
   186                     }
   186                     }
   187                 }
   187                 }
   188             }
   188             }
   189           }
   189           }
   190     CleanupStack::PopAndDestroy( &col2propQuery );
   190     CleanupStack::PopAndDestroy( &col2propQuery );
       
   191     emptyRowData.Reset();
   191      
   192      
   192     CleanupStack::PopAndDestroy( &emptyRowData );
   193     CleanupStack::PopAndDestroy( &emptyRowData );
   193     
   194     
   194     if(test == KErrCorrupt )
   195     if(test == KErrCorrupt )
   195         {
   196         {
   224     						  majorVersion, minorVersion );
   225     						  majorVersion, minorVersion );
   225 
   226 
   226 	CleanupStack::PopAndDestroy( &emptyRowData );
   227 	CleanupStack::PopAndDestroy( &emptyRowData );
   227     }
   228     }
   228 
   229 
   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