Index: sql/connection_unittest.cc |
diff --git a/sql/connection_unittest.cc b/sql/connection_unittest.cc |
index 565c12fb9ab113c781de7ebe4e29bd3edb530f8a..539c1056ea9ef2a5e98d54447c7e8bd2895287f4 100644 |
--- a/sql/connection_unittest.cc |
+++ b/sql/connection_unittest.cc |
@@ -142,10 +142,20 @@ TEST_F(SQLConnectionTest, Raze) { |
ASSERT_TRUE(db().Execute(kCreateSql)); |
ASSERT_TRUE(db().Execute("INSERT INTO foo (value) VALUES (12)")); |
+ int pragma_auto_vacuum = 0; |
+ { |
+ sql::Statement s(db().GetUniqueStatement("PRAGMA auto_vacuum")); |
+ ASSERT_TRUE(s.Step()); |
+ pragma_auto_vacuum = s.ColumnInt(0); |
+ } |
Scott Hess - ex-Googler
2012/08/05 15:34:46
2 is a valid auto_vacuum result. I don't know how
Yaron
2012/08/06 17:23:43
Done.
|
+ |
+ // If auto_vacuum is set, there's an extra page to maintain a freelist. |
+ const int kExpectedPageCount = 2 + pragma_auto_vacuum; |
+ |
{ |
sql::Statement s(db().GetUniqueStatement("PRAGMA page_count")); |
ASSERT_TRUE(s.Step()); |
- EXPECT_EQ(2, s.ColumnInt(0)); |
+ EXPECT_EQ(kExpectedPageCount, s.ColumnInt(0)); |
} |
{ |
@@ -154,7 +164,8 @@ TEST_F(SQLConnectionTest, Raze) { |
EXPECT_EQ("table", s.ColumnString(0)); |
EXPECT_EQ("foo", s.ColumnString(1)); |
EXPECT_EQ("foo", s.ColumnString(2)); |
- EXPECT_EQ(2, s.ColumnInt(3)); |
+ // Table "foo" is stored in the last page of the file. |
+ EXPECT_EQ(kExpectedPageCount, s.ColumnInt(3)); |
EXPECT_EQ(kCreateSql, s.ColumnString(4)); |
} |
@@ -170,6 +181,13 @@ TEST_F(SQLConnectionTest, Raze) { |
sql::Statement s(db().GetUniqueStatement("SELECT * FROM sqlite_master")); |
ASSERT_FALSE(s.Step()); |
} |
+ |
+ { |
+ sql::Statement s(db().GetUniqueStatement("PRAGMA auto_vacuum")); |
+ ASSERT_TRUE(s.Step()); |
+ // auto_vacuum must be preserved across a Raze. |
+ EXPECT_EQ(pragma_auto_vacuum, s.ColumnInt(0)); |
+ } |
} |
// Test that Raze() maintains page_size. |