summaryrefslogtreecommitdiffstats
path: root/sql
diff options
context:
space:
mode:
authormichaelbai@chromium.org <michaelbai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 00:09:05 +0000
committermichaelbai@chromium.org <michaelbai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 00:09:05 +0000
commit44ad7d90529b53baf308b5fdbb8b8e5f654fe987 (patch)
tree23cbfb0c7133f359651f6827f788ce82291095f0 /sql
parent6a0335930245ffee564b966851e662af95f53296 (diff)
downloadchromium_src-44ad7d90529b53baf308b5fdbb8b8e5f654fe987.zip
chromium_src-44ad7d90529b53baf308b5fdbb8b8e5f654fe987.tar.gz
chromium_src-44ad7d90529b53baf308b5fdbb8b8e5f654fe987.tar.bz2
Reset needs_rollback after rollback.
Fix issue that the transaction can not be started if the nesting_transaction rollback. BUG= TEST=Add a new test to cover this case. Also pass the existing tests. Review URL: http://codereview.chromium.org/9839021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128352 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sql')
-rw-r--r--sql/connection.cc1
-rw-r--r--sql/connection_unittest.cc11
2 files changed, 11 insertions, 1 deletions
diff --git a/sql/connection.cc b/sql/connection.cc
index 378e014..58bfb11 100644
--- a/sql/connection.cc
+++ b/sql/connection.cc
@@ -456,6 +456,7 @@ bool Connection::OpenInternal(const std::string& file_name) {
void Connection::DoRollback() {
Statement rollback(GetCachedStatement(SQL_FROM_HERE, "ROLLBACK"));
rollback.Run();
+ needs_rollback_ = false;
}
void Connection::StatementRefCreated(StatementRef* ref) {
diff --git a/sql/connection_unittest.cc b/sql/connection_unittest.cc
index 9718ce0..58734ac 100644
--- a/sql/connection_unittest.cc
+++ b/sql/connection_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -120,3 +120,12 @@ TEST_F(SQLConnectionTest, GetLastInsertRowId) {
ASSERT_TRUE(s.Step());
EXPECT_EQ(12, s.ColumnInt(0));
}
+
+TEST_F(SQLConnectionTest, Rollback) {
+ ASSERT_TRUE(db().BeginTransaction());
+ ASSERT_TRUE(db().BeginTransaction());
+ EXPECT_EQ(2, db().transaction_nesting());
+ db().RollbackTransaction();
+ EXPECT_FALSE(db().CommitTransaction());
+ EXPECT_TRUE(db().BeginTransaction());
+}