compiler/eda; (#647) use Database::Begin and Database::Commit around database initial...
authorRejean Loyer <rejean.loyer@gmail.com>
Thu, 19 Sep 2013 15:25:59 +0000 (11:25 -0400)
committerJerome St-Louis <jerome@ecere.com>
Sat, 28 Sep 2013 23:55:44 +0000 (19:55 -0400)
compiler/libec/src/dbpass.ec

index 3e93113..a1d80c5 100644 (file)
@@ -271,6 +271,9 @@ static void ProcessExpression(Expression exp)
             ifDBStmt.compound.declarations->Add(MkDeclaration(MkListOne(MkSpecifierName("FieldIndex")), MkListOne(MkInitDeclarator(MkDeclaratorArray(MkDeclaratorIdentifier(MkIdentifier("indexes")), 
                MkExpConstant(numIndexesString)), MkInitializerList(MkListOne(MkInitializerList(MkListOne(MkInitializerAssignment(MkExpIdentifier(MkIdentifier("null")))))))))));
             
+            // db.Begin();
+            ifDBStmt.compound.statements->Add(MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Begin")), MkList()))));
+
             ifDBStmt.compound.statements->Add(compound = MkCompoundStmt(null, tableStatements));
             compound.compound.context = Context { parent = ifDBStmt.compound.context };
             /*
@@ -285,6 +288,9 @@ static void ProcessExpression(Expression exp)
             ifDBStmt.compound.statements->Add(compound = MkCompoundStmt(null, indexStatements));
             compound.compound.context = Context { parent = ifDBStmt.compound.context };
 
+            // db.Commit();
+            ifDBStmt.compound.statements->Add(MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Commit")), MkList()))));
+
             // TODO: Don't make use of extension
             exp.type = extensionCompoundExp;
             exp.compound = databaseOpenStmt;