--- a/mpserviceplugins/mpxsqlitedbcommon/src/mpxdbmanager.cpp Fri Jun 11 19:36:32 2010 -0500
+++ b/mpserviceplugins/mpxsqlitedbcommon/src/mpxdbmanager.cpp Fri Jun 25 17:21:37 2010 -0500
@@ -867,30 +867,27 @@
{
MPX_FUNC("CMPXDbManager::CloseAllDatabases");
- if (iInitialized)
- {
- // Close all prepared statements if a db is closed
- //
- ResetPreparedQueries();
+ // Close all prepared statements if a db is closed
+ //
+ ResetPreparedQueries();
- TInt count(iDatabaseHandles.Count());
- for (TInt i = 0; i < count; ++i)
- {
- delete iDatabaseHandles[i].iAliasname;
- iDatabaseHandles[i].iAliasname = 0;
+ TInt count(iDatabaseHandles.Count());
+ for (TInt i = 0; i < count; ++i)
+ {
+ delete iDatabaseHandles[i].iAliasname;
+ iDatabaseHandles[i].iAliasname = 0;
#ifdef __RAMDISK_PERF_ENABLE
- RemoveDummyFile(i);
- delete iDatabaseHandles[i].iOrigFullFilePath;
- iDatabaseHandles[i].iOrigFullFilePath = 0;
- delete iDatabaseHandles[i].iTargetFullFilePath;
- iDatabaseHandles[i].iTargetFullFilePath = 0;
+ RemoveDummyFile(i);
+ delete iDatabaseHandles[i].iOrigFullFilePath;
+ iDatabaseHandles[i].iOrigFullFilePath = 0;
+ delete iDatabaseHandles[i].iTargetFullFilePath;
+ iDatabaseHandles[i].iTargetFullFilePath = 0;
#endif //__RAMDISK_PERF_ENABLE
- }
+ }
- iDatabaseHandles.Reset();
- iDatabase.Close();
- iInitialized = EFalse;
- }
+ iDatabaseHandles.Reset();
+ iDatabase.Close();
+ iInitialized = EFalse;
}
// ----------------------------------------------------------------------------
@@ -1732,6 +1729,16 @@
}
// ----------------------------------------------------------------------------
+// CleanupTransaction: close transaction when creating DB
+// ----------------------------------------------------------------------------
+//
+static void CleanupTransaction(TAny * aDatabase)
+ {
+ TInt err = ((RSqlDatabase*)aDatabase)->Exec(KRollbackTransaction);
+ MPX_DEBUG2("CMPXDbManager CleanupTransaction rollback, error %d", err);
+ }
+
+// ----------------------------------------------------------------------------
// CMPXDbManager::CreateTablesL
// ----------------------------------------------------------------------------
//
@@ -1739,11 +1746,26 @@
RSqlDatabase& aDatabase,
TBool aCorrupt)
{
+ MPX_FUNC("CMPXDbManager::CreateTablesL");
+ TInt err = aDatabase.Exec(KBeginTransaction);
+ if (err < 0)
+ {
+ MPX_DEBUG2("SQL BEGIN TRANSACTION error %d", err);
+ User::Leave (err);
+ }
+ CleanupStack::PushL(TCleanupItem(&CleanupTransaction, &aDatabase));
TInt count(iTables.Count());
for (TInt i = 0; i < count; ++i)
{
iTables[i]->CreateTableL(aDatabase, aCorrupt);
}
+ err = aDatabase.Exec(KCommitTransaction);
+ if (err < 0)
+ {
+ MPX_DEBUG2("SQL COMMIT TRANSACTION error %d", err);
+ User::Leave (err);
+ }
+ CleanupStack::Pop();
}
// ----------------------------------------------------------------------------