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 |