--- a/metadataengine/server/src/mdsschema.cpp Fri Feb 19 23:14:48 2010 +0200
+++ b/metadataengine/server/src/mdsschema.cpp Fri Mar 12 15:44:28 2010 +0200
@@ -256,7 +256,7 @@
{
// add base objectdef[number]
clause->BufferL().Format( KBaseObjectDefinition, &MdeConstants::Object::KBaseObject, namespaceDefId );
- TRAP_IGNORE( connection.ExecuteL( clause->ConstBufferL(), emptyRowData ) );
+ connection.ExecuteL( clause->ConstBufferL(), emptyRowData );
// add relations[number]
clause->BufferL().Format( KCreateRelationsTable, namespaceDefId );
@@ -320,7 +320,8 @@
// add updateremovedrelations[number]
clauseTrigger->ReserveSpaceL( KMdsTriggerUpdateRemovedRelation().Size() + ( KMaxUintValueLength * 5 ) );
- clauseTrigger->BufferL().Format( KMdsTriggerUpdateRemovedRelation, namespaceDefId, namespaceDefId, EMdERelationFlagNotPresent | EMdERelationFlagDeleted, EMdERelationFlagNotPresent | EMdERelationFlagDeleted, namespaceDefId );
+ clauseTrigger->BufferL().Format( KMdsTriggerUpdateRemovedRelation, namespaceDefId, namespaceDefId,
+ EMdERelationFlagNotPresent | EMdERelationFlagDeleted, EMdERelationFlagNotPresent | EMdERelationFlagDeleted, namespaceDefId );
connection.ExecuteL( clauseTrigger->ConstBufferL(), emptyRowData );
// add relationleftobjectidindex[number]
@@ -357,7 +358,7 @@
AddObjectToSqlClauseL( objectDef, clause, ETrue );
clause->AppendL( KMdsSqlClauseObjTableEnd );
- TRAP_IGNORE( connection.ExecuteL( clause->ConstBufferL(), emptyRowData ) );
+ connection.ExecuteL( clause->ConstBufferL(), emptyRowData );
objectDef->SetTableStoredInDB();
}
@@ -393,6 +394,7 @@
CleanupClosePushL( emptyRowData );
clause->BufferL().Format( KMdsPropertyIndexCreate, &aTableName, &aPropertyName, aNamespaceId,
&aTableName, aNamespaceId, &aPropertyName );
+ // Ignore possible SQL error, MDS can still live without this index
TRAP_IGNORE( connection.ExecuteL( clause->ConstBufferL(), emptyRowData ) );
CleanupStack::PopAndDestroy( 2, clause ); // emptyRowData, clause
}
@@ -408,9 +410,6 @@
CreateObjectTablesL();
StoreSchemaToDBL();
CreateCol2PropTableL();
-
- transaction.CommitL();
- CleanupStack::PopAndDestroy( &transaction );
TUint propertyCount = iProperties.Count();
for ( TUint i = 0; i < propertyCount; ++i )
@@ -419,6 +418,10 @@
CreatePropertyIndexL( propertyInfo.iPropertyName, propertyInfo.iTableName,
propertyInfo.iNamespaceId );
}
+
+ transaction.CommitL();
+ CleanupStack::PopAndDestroy( &transaction );
+
iProperties.Reset();
}
@@ -564,7 +567,7 @@
for (TUint i = 0; i < KNumClauses; i++)
{
TRAP( error,connection.ExecuteL( (*descarray)[i], emptyRowData ) );
- if ( error != KErrNone && error != KSqlErrGeneral )
+ if ( error != KErrNone )
{
User::Leave( error );
}
@@ -574,12 +577,26 @@
const TInt count = iNamespaceDefs.Count();
+ RMdSTransaction transaction( connection );
+ CleanupClosePushL(transaction);
+ const TInt beginError( transaction.Error() );
+ if( beginError != KErrNone )
+ {
+ CleanupStack::PopAndDestroy( &transaction );
+ }
+
// add only namespaceDef to DB
for( TInt i = 0; i < count; ++i )
{
iNamespaceDefs[i]->StoreToDBL( ETrue );
}
+ if( beginError == KErrNone )
+ {
+ transaction.CommitL();
+ CleanupStack::PopAndDestroy( &transaction );
+ }
+
CleanupStack::PopAndDestroy( &emptyRowData );
}
@@ -588,6 +605,16 @@
_LIT( KMdsSqlClauseDeleteBoFromOd, "DELETE FROM ObjectDef WHERE ObjectDefId=?;" );
_LIT( KMdsSqlClauseDeleteBoFromPd, "DELETE FROM PropertyDef WHERE ObjectDefId=?;" );
+ CMdSSqLiteConnection& connection = MMdSDbConnectionPool::GetDefaultDBL();
+
+ RMdSTransaction transaction( connection );
+ CleanupClosePushL(transaction);
+ const TInt beginError( transaction.Error() );
+ if( beginError != KErrNone )
+ {
+ CleanupStack::PopAndDestroy( &transaction );
+ }
+
iBaseObject->StoreToDBL( KNoDefId );
const TInt count = iNamespaceDefs.Count();
@@ -598,11 +625,16 @@
iNamespaceDefs[i]->StoreToDBL();
}
+ if( beginError == KErrNone )
+ {
+ transaction.CommitL();
+ CleanupStack::PopAndDestroy( &transaction );
+ }
+
RRowData removeBo;
CleanupClosePushL( removeBo );
removeBo.AppendL( TColumn( KBaseObjectDefId ) );
- CMdSSqLiteConnection& connection = MMdSDbConnectionPool::GetDefaultDBL();
TRAPD( err, connection.ExecuteL( KMdsSqlClauseDeleteBoFromOd, removeBo ) );
TRAP ( err, connection.ExecuteL( KMdsSqlClauseDeleteBoFromPd, removeBo ) );