@@ -160,7 +160,7 @@ transactionGraphAddCommitTest = TestCase $ do
160160 DisplayParseErrorResult _ _ -> assertFailure "displayparseerror?"
161161 DisplayErrorResult err -> assertFailure (show err)
162162 QuietSuccessResult -> do
163− commit sessionId dbconn >>= maybeFail
163+ commit sessionId dbconn ForbidEmptyCommitOption >>= maybeFail
164164 discon <- disconnectedTransaction_ sessionId dbconn
165165 let context = Discon.concreteDatabaseContext discon
166166 assertEqual "ensure x was added" (M.lookup "x" (relationVariables context)) (Just suppliersRel)
@@ -189,7 +189,7 @@ transactionJumpTest = TestCase $ do
189189 case maybeErr of
190190 Just err -> assertFailure (show err)
191191 Nothing -> do
192− commit sessionId dbconn >>= maybeFail
192+ commit sessionId dbconn ForbidEmptyCommitOption >>= maybeFail
193193 --perform the jump
194194 maybeErr2 <- executeGraphExpr sessionId dbconn (JumpToTransaction firstUUID)
195195 case maybeErr2 of
@@ -204,7 +204,7 @@ transactionBranchTest = TestCase $ do
204204 (sessionId, dbconn) <- dateExamplesConnection emptyNotificationCallback
205205 mapM_ (\x -> x >>= maybeFail) [executeGraphExpr sessionId dbconn (Branch "test"),
206206 executeDatabaseContextExpr sessionId dbconn (Assign "x" (RelationVariable "s" ())),
207− commit sessionId dbconn,
207+ commit sessionId dbconn ForbidEmptyCommitOption,
208208 executeGraphExpr sessionId dbconn (JumpToHead "master"),
209209 executeDatabaseContextExpr sessionId dbconn (Assign "y" (RelationVariable "s" ()))
210210 ]
@@ -258,9 +258,9 @@ testNotification = TestCase $ do
258258 let check' x = x >>= maybe (pure ()) (\err -> assertFailure (show err))
259259 check' $ executeDatabaseContextExpr sess conn (Assign "x" (ExistingRelation relationTrue))
260260 check' $ executeDatabaseContextExpr sess conn (AddNotification "test notification" relvarx relvarx)
261− check' $ commit sess conn
261+ check' $ commit sess conn ForbidEmptyCommitOption
262262 check' $ executeDatabaseContextExpr sess conn (Assign "x" (ExistingRelation relationFalse))
263− check' $ commit sess conn
263+ check' $ commit sess conn ForbidEmptyCommitOption
264264 takeMVar notifmvar
265265
266266testTypeConstructors :: Test
@@ -402,19 +402,31 @@ testFunctionalDependencies = TestCase $ do
402402testEmptyCommits :: Test
403403testEmptyCommits = TestCase $ do
404404 (sessionId, dbconn) <- dateExamplesConnection emptyNotificationCallback
405− err1 <- executeGraphExpr sessionId dbconn Commit
405+ err1 <- executeGraphExpr sessionId dbconn (Commit ForbidEmptyCommitOption)
406406 assertEqual "no updates empty commit" (Just EmptyCommitError) err1
407407 --insert no tuples
408408 Nothing <- executeDatabaseContextExpr sessionId dbconn (Insert "s" (RelationVariable "s" ()))
409− err2 <- executeGraphExpr sessionId dbconn Commit
409+ err2 <- executeGraphExpr sessionId dbconn (Commit ForbidEmptyCommitOption)
410410 assertEqual "empty insert empty commit" (Just EmptyCommitError) err2
411411 --update no tuples
412412 Nothing <- executeDatabaseContextExpr sessionId dbconn (Update "s" (M.singleton "sname" (NakedAtomExpr (TextAtom "Bob"))) (AttributeEqualityPredicate "sname" (NakedAtomExpr (TextAtom "Mike"))))
413− err3 <- executeGraphExpr sessionId dbconn Commit
413+ err3 <- executeGraphExpr sessionId dbconn (Commit ForbidEmptyCommitOption)
414414 assertEqual "empty update empty commit" (Just EmptyCommitError) err3
415415 --delete no tuples
416416 Nothing <- executeDatabaseContextExpr sessionId dbconn (Delete "s" (AttributeEqualityPredicate "sname" (NakedAtomExpr (TextAtom "Mike"))))
417− err4 <- executeGraphExpr sessionId dbconn Commit
417+ err4 <- executeGraphExpr sessionId dbconn (Commit ForbidEmptyCommitOption)
418418 assertEqual "empty delete empty commit" (Just EmptyCommitError) err4
419419
420−
420+ --test allow empty commit option
421+ headId5 <- headTransactionId sessionId dbconn
422+ err5 <- executeGraphExpr sessionId dbconn (Commit AllowEmptyCommitOption)
423+ assertEqual "allow empty commit" Nothing err5
424+ headId5' <- headTransactionId sessionId dbconn
425+ assertBool "different heads" (headId5 /= headId5')
426+
427+ --test ignore empty commit option
428+ headId6 <- headTransactionId sessionId dbconn
429+ err6 <- executeGraphExpr sessionId dbconn (Commit IgnoreEmptyCommitOption)
430+ assertEqual "ignore empty commit" Nothing err6
431+ headId6' <- headTransactionId sessionId dbconn
432+ assertEqual "same heads" headId6 headId6'