Index: sync/syncable/directory_backing_store_unittest.cc |
diff --git a/sync/syncable/directory_backing_store_unittest.cc b/sync/syncable/directory_backing_store_unittest.cc |
deleted file mode 100644 |
index ed4d375b1bc394b875cccf9c1194d1259ea1dba8..0000000000000000000000000000000000000000 |
--- a/sync/syncable/directory_backing_store_unittest.cc |
+++ /dev/null |
@@ -1,4273 +0,0 @@ |
-// Copyright 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. |
- |
-#include "sync/syncable/directory_backing_store.h" |
- |
-#include <stddef.h> |
-#include <stdint.h> |
- |
-#include <map> |
-#include <memory> |
-#include <string> |
- |
-#include "base/files/file_path.h" |
-#include "base/files/scoped_temp_dir.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/run_loop.h" |
-#include "base/stl_util.h" |
-#include "base/strings/string_number_conversions.h" |
-#include "base/strings/stringprintf.h" |
-#include "build/build_config.h" |
-#include "sql/connection.h" |
-#include "sql/statement.h" |
-#include "sql/test/test_helpers.h" |
-#include "sync/base/sync_export.h" |
-#include "sync/internal_api/public/base/node_ordinal.h" |
-#include "sync/protocol/bookmark_specifics.pb.h" |
-#include "sync/protocol/sync.pb.h" |
-#include "sync/syncable/directory.h" |
-#include "sync/syncable/on_disk_directory_backing_store.h" |
-#include "sync/syncable/syncable-inl.h" |
-#include "sync/test/directory_backing_store_corruption_testing.h" |
-#include "sync/test/test_directory_backing_store.h" |
-#include "sync/util/time.h" |
-#include "testing/gtest/include/gtest/gtest-param-test.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace syncer { |
-namespace syncable { |
-namespace { |
- |
-// A handler that simply sets |catastrophic_error_handler_was_called| to true. |
-void CatastrophicErrorHandler(bool* catastrophic_error_handler_was_called) { |
- *catastrophic_error_handler_was_called = true; |
-} |
- |
-// Create a dirty EntryKernel with an ID derived from |id| + |id_suffix|. |
-std::unique_ptr<EntryKernel> CreateEntry(int id, const std::string& id_suffix) { |
- std::unique_ptr<EntryKernel> entry(new EntryKernel()); |
- std::string id_string = base::Int64ToString(id) + id_suffix; |
- entry->put(ID, Id::CreateFromClientString(id_string)); |
- entry->put(META_HANDLE, id); |
- entry->mark_dirty(NULL); |
- return entry; |
-} |
- |
-} // namespace |
- |
-SYNC_EXPORT extern const int32_t kCurrentPageSizeKB; |
-SYNC_EXPORT extern const int32_t kCurrentDBVersion; |
- |
-class MigrationTest : public testing::TestWithParam<int> { |
- public: |
- void SetUp() override { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); } |
- |
- protected: |
- std::string GetUsername() { |
- return "nick@chromium.org"; |
- } |
- |
- base::FilePath GetDatabasePath() { |
- return temp_dir_.path().Append(Directory::kSyncDatabaseFilename); |
- } |
- |
- static bool LoadAndIgnoreReturnedData(DirectoryBackingStore *dbs) { |
- Directory::MetahandlesMap tmp_handles_map; |
- JournalIndex delete_journals; |
- MetahandleSet metahandles_to_purge; |
- STLValueDeleter<Directory::MetahandlesMap> deleter(&tmp_handles_map); |
- Directory::KernelLoadInfo kernel_load_info; |
- return dbs->Load(&tmp_handles_map, &delete_journals, &metahandles_to_purge, |
- &kernel_load_info) == OPENED; |
- } |
- |
- void SetUpVersion67Database(sql::Connection* connection); |
- void SetUpVersion68Database(sql::Connection* connection); |
- void SetUpVersion69Database(sql::Connection* connection); |
- void SetUpVersion70Database(sql::Connection* connection); |
- void SetUpVersion71Database(sql::Connection* connection); |
- void SetUpVersion72Database(sql::Connection* connection); |
- void SetUpVersion73Database(sql::Connection* connection); |
- void SetUpVersion74Database(sql::Connection* connection); |
- void SetUpVersion75Database(sql::Connection* connection); |
- void SetUpVersion76Database(sql::Connection* connection); |
- void SetUpVersion77Database(sql::Connection* connection); |
- void SetUpVersion78Database(sql::Connection* connection); |
- void SetUpVersion79Database(sql::Connection* connection); |
- void SetUpVersion80Database(sql::Connection* connection); |
- void SetUpVersion81Database(sql::Connection* connection); |
- void SetUpVersion82Database(sql::Connection* connection); |
- void SetUpVersion83Database(sql::Connection* connection); |
- void SetUpVersion84Database(sql::Connection* connection); |
- void SetUpVersion85Database(sql::Connection* connection); |
- void SetUpVersion86Database(sql::Connection* connection); |
- void SetUpVersion87Database(sql::Connection* connection); |
- void SetUpVersion88Database(sql::Connection* connection); |
- void SetUpVersion89Database(sql::Connection* connection); |
- void SetUpVersion90Database(sql::Connection* connection); |
- |
- void SetUpCurrentDatabaseAndCheckVersion(sql::Connection* connection) { |
- SetUpVersion90Database(connection); // Prepopulates data. |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), connection)); |
- ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); |
- |
- ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- } |
- |
- private: |
- base::MessageLoop message_loop_; |
- base::ScopedTempDir temp_dir_; |
-}; |
- |
-class DirectoryBackingStoreTest : public MigrationTest {}; |
- |
-#if defined(OS_WIN) |
- |
-// On Windows, we used to store timestamps in FILETIME format. |
-#define LEGACY_META_PROTO_TIMES_1 129079956640320000LL |
-#define LEGACY_META_PROTO_TIMES_2 128976886618480000LL |
-#define LEGACY_META_PROTO_TIMES_4 129002163642690000LL |
-#define LEGACY_META_PROTO_TIMES_5 129001555500000000LL |
-#define LEGACY_META_PROTO_TIMES_6 129053976170000000LL |
-#define LEGACY_META_PROTO_TIMES_7 128976864758480000LL |
-#define LEGACY_META_PROTO_TIMES_8 128976864758480000LL |
-#define LEGACY_META_PROTO_TIMES_9 128976864758480000LL |
-#define LEGACY_META_PROTO_TIMES_10 128976864758480000LL |
-#define LEGACY_META_PROTO_TIMES_11 129079956948440000LL |
-#define LEGACY_META_PROTO_TIMES_12 129079957513650000LL |
-#define LEGACY_META_PROTO_TIMES_13 129079957985300000LL |
-#define LEGACY_META_PROTO_TIMES_14 129079958383000000LL |
- |
-#define LEGACY_META_PROTO_TIMES_STR_1 "129079956640320000" |
-#define LEGACY_META_PROTO_TIMES_STR_2 "128976886618480000" |
-#define LEGACY_META_PROTO_TIMES_STR_4 "129002163642690000" |
-#define LEGACY_META_PROTO_TIMES_STR_5 "129001555500000000" |
-#define LEGACY_META_PROTO_TIMES_STR_6 "129053976170000000" |
-#define LEGACY_META_PROTO_TIMES_STR_7 "128976864758480000" |
-#define LEGACY_META_PROTO_TIMES_STR_8 "128976864758480000" |
-#define LEGACY_META_PROTO_TIMES_STR_9 "128976864758480000" |
-#define LEGACY_META_PROTO_TIMES_STR_10 "128976864758480000" |
-#define LEGACY_META_PROTO_TIMES_STR_11 "129079956948440000" |
-#define LEGACY_META_PROTO_TIMES_STR_12 "129079957513650000" |
-#define LEGACY_META_PROTO_TIMES_STR_13 "129079957985300000" |
-#define LEGACY_META_PROTO_TIMES_STR_14 "129079958383000000" |
- |
-// Generated via: |
-// |
-// ruby -ane '$F[1].sub!("LEGACY_", ""); $F[2] = Integer($F[2].sub!("LL", "")) / |
-// 10000 - 11644473600000; print "#{$F[0]} #{$F[1]} #{$F[2]}LL"' |
-// |
-// Magic numbers taken from |
-// http://stackoverflow.com/questions/5398557/ |
-// java-library-for-dealing-with-win32-filetime . |
- |
-// Now we store them in Java format (ms since the Unix epoch). |
-#define META_PROTO_TIMES_1 1263522064032LL |
-#define META_PROTO_TIMES_2 1253215061848LL |
-#define META_PROTO_TIMES_4 1255742764269LL |
-#define META_PROTO_TIMES_5 1255681950000LL |
-#define META_PROTO_TIMES_6 1260924017000LL |
-#define META_PROTO_TIMES_7 1253212875848LL |
-#define META_PROTO_TIMES_8 1253212875848LL |
-#define META_PROTO_TIMES_9 1253212875848LL |
-#define META_PROTO_TIMES_10 1253212875848LL |
-#define META_PROTO_TIMES_11 1263522094844LL |
-#define META_PROTO_TIMES_12 1263522151365LL |
-#define META_PROTO_TIMES_13 1263522198530LL |
-#define META_PROTO_TIMES_14 1263522238300LL |
- |
-#define META_PROTO_TIMES_STR_1 "1263522064032" |
-#define META_PROTO_TIMES_STR_2 "1253215061848" |
-#define META_PROTO_TIMES_STR_4 "1255742764269" |
-#define META_PROTO_TIMES_STR_5 "1255681950000" |
-#define META_PROTO_TIMES_STR_6 "1260924017000" |
-#define META_PROTO_TIMES_STR_7 "1253212875848" |
-#define META_PROTO_TIMES_STR_8 "1253212875848" |
-#define META_PROTO_TIMES_STR_9 "1253212875848" |
-#define META_PROTO_TIMES_STR_10 "1253212875848" |
-#define META_PROTO_TIMES_STR_11 "1263522094844" |
-#define META_PROTO_TIMES_STR_12 "1263522151365" |
-#define META_PROTO_TIMES_STR_13 "1263522198530" |
-#define META_PROTO_TIMES_STR_14 "1263522238300" |
- |
-#else |
- |
-// On other platforms, we used to store timestamps in time_t format (s |
-// since the Unix epoch). |
-#define LEGACY_META_PROTO_TIMES_1 1263522064LL |
-#define LEGACY_META_PROTO_TIMES_2 1253215061LL |
-#define LEGACY_META_PROTO_TIMES_4 1255742764LL |
-#define LEGACY_META_PROTO_TIMES_5 1255681950LL |
-#define LEGACY_META_PROTO_TIMES_6 1260924017LL |
-#define LEGACY_META_PROTO_TIMES_7 1253212875LL |
-#define LEGACY_META_PROTO_TIMES_8 1253212875LL |
-#define LEGACY_META_PROTO_TIMES_9 1253212875LL |
-#define LEGACY_META_PROTO_TIMES_10 1253212875LL |
-#define LEGACY_META_PROTO_TIMES_11 1263522094LL |
-#define LEGACY_META_PROTO_TIMES_12 1263522151LL |
-#define LEGACY_META_PROTO_TIMES_13 1263522198LL |
-#define LEGACY_META_PROTO_TIMES_14 1263522238LL |
- |
-#define LEGACY_META_PROTO_TIMES_STR_1 "1263522064" |
-#define LEGACY_META_PROTO_TIMES_STR_2 "1253215061" |
-#define LEGACY_META_PROTO_TIMES_STR_4 "1255742764" |
-#define LEGACY_META_PROTO_TIMES_STR_5 "1255681950" |
-#define LEGACY_META_PROTO_TIMES_STR_6 "1260924017" |
-#define LEGACY_META_PROTO_TIMES_STR_7 "1253212875" |
-#define LEGACY_META_PROTO_TIMES_STR_8 "1253212875" |
-#define LEGACY_META_PROTO_TIMES_STR_9 "1253212875" |
-#define LEGACY_META_PROTO_TIMES_STR_10 "1253212875" |
-#define LEGACY_META_PROTO_TIMES_STR_11 "1263522094" |
-#define LEGACY_META_PROTO_TIMES_STR_12 "1263522151" |
-#define LEGACY_META_PROTO_TIMES_STR_13 "1263522198" |
-#define LEGACY_META_PROTO_TIMES_STR_14 "1263522238" |
- |
-// Now we store them in Java format (ms since the Unix epoch). |
-#define META_PROTO_TIMES_1 1263522064000LL |
-#define META_PROTO_TIMES_2 1253215061000LL |
-#define META_PROTO_TIMES_4 1255742764000LL |
-#define META_PROTO_TIMES_5 1255681950000LL |
-#define META_PROTO_TIMES_6 1260924017000LL |
-#define META_PROTO_TIMES_7 1253212875000LL |
-#define META_PROTO_TIMES_8 1253212875000LL |
-#define META_PROTO_TIMES_9 1253212875000LL |
-#define META_PROTO_TIMES_10 1253212875000LL |
-#define META_PROTO_TIMES_11 1263522094000LL |
-#define META_PROTO_TIMES_12 1263522151000LL |
-#define META_PROTO_TIMES_13 1263522198000LL |
-#define META_PROTO_TIMES_14 1263522238000LL |
- |
-#define META_PROTO_TIMES_STR_1 "1263522064000" |
-#define META_PROTO_TIMES_STR_2 "1253215061000" |
-#define META_PROTO_TIMES_STR_4 "1255742764000" |
-#define META_PROTO_TIMES_STR_5 "1255681950000" |
-#define META_PROTO_TIMES_STR_6 "1260924017000" |
-#define META_PROTO_TIMES_STR_7 "1253212875000" |
-#define META_PROTO_TIMES_STR_8 "1253212875000" |
-#define META_PROTO_TIMES_STR_9 "1253212875000" |
-#define META_PROTO_TIMES_STR_10 "1253212875000" |
-#define META_PROTO_TIMES_STR_11 "1263522094000" |
-#define META_PROTO_TIMES_STR_12 "1263522151000" |
-#define META_PROTO_TIMES_STR_13 "1263522198000" |
-#define META_PROTO_TIMES_STR_14 "1263522238000" |
- |
-#endif |
- |
-// Helper macros for the database dumps in the SetUpVersion*Database |
-// functions. |
-#define LEGACY_META_PROTO_TIMES(x) LEGACY_META_PROTO_TIMES_##x |
-#define LEGACY_META_PROTO_TIMES_STR(x) LEGACY_META_PROTO_TIMES_STR_##x |
-#define LEGACY_PROTO_TIME_VALS(x) \ |
- LEGACY_META_PROTO_TIMES_STR(x) "," \ |
- LEGACY_META_PROTO_TIMES_STR(x) "," \ |
- LEGACY_META_PROTO_TIMES_STR(x) "," \ |
- LEGACY_META_PROTO_TIMES_STR(x) |
-#define META_PROTO_TIMES(x) META_PROTO_TIMES_##x |
-#define META_PROTO_TIMES_STR(x) META_PROTO_TIMES_STR_##x |
-#define META_PROTO_TIMES_VALS(x) \ |
- META_PROTO_TIMES_STR(x) "," \ |
- META_PROTO_TIMES_STR(x) "," \ |
- META_PROTO_TIMES_STR(x) "," \ |
- META_PROTO_TIMES_STR(x) |
- |
-namespace { |
- |
-// Helper functions for testing. |
- |
-enum ShouldIncludeDeletedItems { |
- INCLUDE_DELETED_ITEMS, |
- DONT_INCLUDE_DELETED_ITEMS |
-}; |
- |
-// Returns a map from metahandle -> expected legacy time (in proto |
-// format). |
-std::map<int64_t, int64_t> GetExpectedLegacyMetaProtoTimes( |
- enum ShouldIncludeDeletedItems include_deleted) { |
- std::map<int64_t, int64_t> expected_legacy_meta_proto_times; |
- expected_legacy_meta_proto_times[1] = LEGACY_META_PROTO_TIMES(1); |
- if (include_deleted == INCLUDE_DELETED_ITEMS) { |
- expected_legacy_meta_proto_times[2] = LEGACY_META_PROTO_TIMES(2); |
- expected_legacy_meta_proto_times[4] = LEGACY_META_PROTO_TIMES(4); |
- expected_legacy_meta_proto_times[5] = LEGACY_META_PROTO_TIMES(5); |
- } |
- expected_legacy_meta_proto_times[6] = LEGACY_META_PROTO_TIMES(6); |
- expected_legacy_meta_proto_times[7] = LEGACY_META_PROTO_TIMES(7); |
- expected_legacy_meta_proto_times[8] = LEGACY_META_PROTO_TIMES(8); |
- expected_legacy_meta_proto_times[9] = LEGACY_META_PROTO_TIMES(9); |
- expected_legacy_meta_proto_times[10] = LEGACY_META_PROTO_TIMES(10); |
- expected_legacy_meta_proto_times[11] = LEGACY_META_PROTO_TIMES(11); |
- expected_legacy_meta_proto_times[12] = LEGACY_META_PROTO_TIMES(12); |
- expected_legacy_meta_proto_times[13] = LEGACY_META_PROTO_TIMES(13); |
- expected_legacy_meta_proto_times[14] = LEGACY_META_PROTO_TIMES(14); |
- return expected_legacy_meta_proto_times; |
-} |
- |
-// Returns a map from metahandle -> expected time (in proto format). |
-std::map<int64_t, int64_t> GetExpectedMetaProtoTimes( |
- enum ShouldIncludeDeletedItems include_deleted) { |
- std::map<int64_t, int64_t> expected_meta_proto_times; |
- expected_meta_proto_times[1] = META_PROTO_TIMES(1); |
- if (include_deleted == INCLUDE_DELETED_ITEMS) { |
- expected_meta_proto_times[2] = META_PROTO_TIMES(2); |
- expected_meta_proto_times[4] = META_PROTO_TIMES(4); |
- expected_meta_proto_times[5] = META_PROTO_TIMES(5); |
- } |
- expected_meta_proto_times[6] = META_PROTO_TIMES(6); |
- expected_meta_proto_times[7] = META_PROTO_TIMES(7); |
- expected_meta_proto_times[8] = META_PROTO_TIMES(8); |
- expected_meta_proto_times[9] = META_PROTO_TIMES(9); |
- expected_meta_proto_times[10] = META_PROTO_TIMES(10); |
- expected_meta_proto_times[11] = META_PROTO_TIMES(11); |
- expected_meta_proto_times[12] = META_PROTO_TIMES(12); |
- expected_meta_proto_times[13] = META_PROTO_TIMES(13); |
- expected_meta_proto_times[14] = META_PROTO_TIMES(14); |
- return expected_meta_proto_times; |
-} |
- |
-// Returns a map from metahandle -> expected time (as a Time object). |
-std::map<int64_t, base::Time> GetExpectedMetaTimes() { |
- std::map<int64_t, base::Time> expected_meta_times; |
- const std::map<int64_t, int64_t>& expected_meta_proto_times = |
- GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS); |
- for (std::map<int64_t, int64_t>::const_iterator it = |
- expected_meta_proto_times.begin(); |
- it != expected_meta_proto_times.end(); ++it) { |
- expected_meta_times[it->first] = ProtoTimeToTime(it->second); |
- } |
- return expected_meta_times; |
-} |
- |
-// Extracts a map from metahandle -> time (in proto format) from the |
-// given database. |
-std::map<int64_t, int64_t> GetMetaProtoTimes(sql::Connection* db) { |
- sql::Statement s(db->GetCachedStatement( |
- SQL_FROM_HERE, |
- "SELECT metahandle, mtime, server_mtime, ctime, server_ctime " |
- "FROM metas")); |
- EXPECT_EQ(5, s.ColumnCount()); |
- std::map<int64_t, int64_t> meta_times; |
- while (s.Step()) { |
- int64_t metahandle = s.ColumnInt64(0); |
- int64_t mtime = s.ColumnInt64(1); |
- int64_t server_mtime = s.ColumnInt64(2); |
- int64_t ctime = s.ColumnInt64(3); |
- int64_t server_ctime = s.ColumnInt64(4); |
- EXPECT_EQ(mtime, server_mtime); |
- EXPECT_EQ(mtime, ctime); |
- EXPECT_EQ(mtime, server_ctime); |
- meta_times[metahandle] = mtime; |
- } |
- EXPECT_TRUE(s.Succeeded()); |
- return meta_times; |
-} |
- |
-::testing::AssertionResult AssertTimesMatch(const char* t1_expr, |
- const char* t2_expr, |
- const base::Time& t1, |
- const base::Time& t2) { |
- if (t1 == t2) |
- return ::testing::AssertionSuccess(); |
- |
- return ::testing::AssertionFailure() |
- << t1_expr << " and " << t2_expr |
- << " (internal values: " << t1.ToInternalValue() |
- << " and " << t2.ToInternalValue() |
- << ") (proto time: " << TimeToProtoTime(t1) |
- << " and " << TimeToProtoTime(t2) |
- << ") do not match"; |
-} |
- |
-// Expect that all time fields of the given entry kernel will be the |
-// given time. |
-void ExpectTime(const EntryKernel& entry_kernel, |
- const base::Time& expected_time) { |
- EXPECT_PRED_FORMAT2(AssertTimesMatch, |
- expected_time, entry_kernel.ref(CTIME)); |
- EXPECT_PRED_FORMAT2(AssertTimesMatch, |
- expected_time, entry_kernel.ref(SERVER_CTIME)); |
- EXPECT_PRED_FORMAT2(AssertTimesMatch, |
- expected_time, entry_kernel.ref(MTIME)); |
- EXPECT_PRED_FORMAT2(AssertTimesMatch, |
- expected_time, entry_kernel.ref(SERVER_MTIME)); |
-} |
- |
-// Expect that all the entries in |entries| have times matching those in |
-// the given map (from metahandle to expect time). |
-void ExpectTimes(const Directory::MetahandlesMap& handles_map, |
- const std::map<int64_t, base::Time>& expected_times) { |
- for (Directory::MetahandlesMap::const_iterator it = handles_map.begin(); |
- it != handles_map.end(); ++it) { |
- int64_t meta_handle = it->first; |
- SCOPED_TRACE(meta_handle); |
- std::map<int64_t, base::Time>::const_iterator it2 = |
- expected_times.find(meta_handle); |
- if (it2 == expected_times.end()) { |
- ADD_FAILURE() << "Could not find expected time for " << meta_handle; |
- continue; |
- } |
- ExpectTime(*it->second, it2->second); |
- } |
-} |
- |
-} // namespace |
- |
-void MigrationTest::SetUpVersion67Database(sql::Connection* connection) { |
- // This is a version 67 database dump whose contents were backformed from |
- // the contents of the version 68 database dump (the v68 migration was |
- // actually written first). |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " |
- "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" |
- "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," |
- "base_version bigint default -1,server_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0," |
- "ctime bigint default 0,server_ctime bigint default 0," |
- "server_position_in_parent bigint default 0," |
- "local_external_id bigint default 0,id varchar(255) default 'r'," |
- "parent_id varchar(255) default 'r'," |
- "server_parent_id varchar(255) default 'r'," |
- "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," |
- "is_unsynced bit default 0,is_unapplied_update bit default 0," |
- "is_del bit default 0,is_dir bit default 0," |
- "is_bookmark_object bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,server_is_bookmark_object bit default 0," |
- "name varchar(255), " /* COLLATE PATHNAME, */ |
- "unsanitized_name varchar(255)," /* COLLATE PATHNAME, */ |
- "non_unique_name varchar," |
- "server_name varchar(255)," /* COLLATE PATHNAME */ |
- "server_non_unique_name varchar," |
- "bookmark_url varchar,server_bookmark_url varchar," |
- "singleton_tag varchar,bookmark_favicon blob," |
- "server_bookmark_favicon blob);" |
- "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) |
- ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," |
- "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);" |
- "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) |
- ",-2097152," |
- "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1," |
- "'Deleted Item',NULL,'Deleted Item','Deleted Item','Deleted Item'," |
- "'http://www.google.com/','http://www.google.com/2',NULL,'AASGASGA'," |
- "'ASADGADGADG');" |
- "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) |
- ",-3145728," |
- "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1," |
- "'Welcome to Chromium',NULL,'Welcome to Chromium'," |
- "'Welcome to Chromium','Welcome to Chromium'," |
- "'http://www.google.com/chrome/intl/en/welcome.html'," |
- "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," |
- "NULL);" |
- "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) |
- ",1048576," |
- "7,'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1," |
- "'Google',NULL,'Google','Google','Google','http://www.google.com/'," |
- "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" |
- "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) |
- ",-4194304," |
- "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," |
- "'The Internet',NULL,'The Internet','The Internet'," |
- "'The Internet',NULL,NULL,NULL,NULL,NULL);" |
- "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) |
- "," |
- "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," |
- "'Google Chrome',NULL,'Google Chrome','Google Chrome'," |
- "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL);" |
- "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) |
- ",1048576," |
- "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," |
- "NULL,'Bookmarks','Bookmarks','Bookmarks',NULL,NULL," |
- "'google_chrome_bookmarks',NULL,NULL);" |
- "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) |
- "," |
- "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," |
- "1,'Bookmark Bar',NULL,'Bookmark Bar','Bookmark Bar','Bookmark Bar'," |
- "NULL,NULL,'bookmark_bar',NULL,NULL);" |
- "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) |
- ",2097152," |
- "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," |
- "'Other Bookmarks',NULL,'Other Bookmarks','Other Bookmarks'," |
- "'Other Bookmarks',NULL,NULL,'other_bookmarks'," |
- "NULL,NULL);" |
- "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) |
- ",-1048576," |
- "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," |
- "'Home (The Chromium Projects)',NULL,'Home (The Chromium Projects)'," |
- "'Home (The Chromium Projects)','Home (The Chromium Projects)'," |
- "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," |
- "'AGATWA','AFAGVASF');" |
- "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) |
- ",0,9," |
- "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1," |
- "'Extra Bookmarks',NULL,'Extra Bookmarks','Extra Bookmarks'," |
- "'Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" |
- "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) |
- ",-917504," |
- "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0," |
- "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'ICANN Internet Corporation for Assigned Names and Numbers'," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'http://www.icann.com/','http://www.icann.com/',NULL," |
- "'PNGAXF0AAFF','DAAFASF');" |
- "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) |
- ",1048576," |
- "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," |
- "'The WebKit Open Source Project',NULL," |
- "'The WebKit Open Source Project','The WebKit Open Source Project'," |
- "'The WebKit Open Source Project','http://webkit.org/'," |
- "'http://webkit.org/x',NULL,'PNGX','PNG2Y');" |
- "CREATE TABLE share_info (id VARCHAR(128) primary key, " |
- "last_sync_timestamp INT, name VARCHAR(128), " |
- "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " |
- "db_create_version VARCHAR(128), db_create_time int, " |
- "next_id bigint default -2, cache_guid VARCHAR(32));" |
- "INSERT INTO share_info VALUES('nick@chromium.org',694," |
- "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," |
- "'Unknown',1263522064,-65542," |
- "'9010788312004066376x-6609234393368420856x');" |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO share_version VALUES('nick@chromium.org',68);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion68Database(sql::Connection* connection) { |
- // This sets up an actual version 68 database dump. The IDs were |
- // canonicalized to be less huge, and the favicons were overwritten |
- // with random junk so that they didn't contain any unprintable |
- // characters. A few server URLs were tweaked so that they'd be |
- // different from the local URLs. Lastly, the custom collation on |
- // the server_non_unique_name column was removed. |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " |
- "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" |
- "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," |
- "base_version bigint default -1,server_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0," |
- "ctime bigint default 0,server_ctime bigint default 0," |
- "server_position_in_parent bigint default 0," |
- "local_external_id bigint default 0,id varchar(255) default 'r'," |
- "parent_id varchar(255) default 'r'," |
- "server_parent_id varchar(255) default 'r'," |
- "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," |
- "is_unsynced bit default 0,is_unapplied_update bit default 0," |
- "is_del bit default 0,is_dir bit default 0," |
- "is_bookmark_object bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0," |
- "server_is_bookmark_object bit default 0," |
- "non_unique_name varchar,server_non_unique_name varchar(255)," |
- "bookmark_url varchar,server_bookmark_url varchar," |
- "singleton_tag varchar,bookmark_favicon blob," |
- "server_bookmark_favicon blob);" |
- "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) |
- ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," |
- "NULL,NULL,NULL,NULL,NULL,NULL);" |
- "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) |
- ",-2097152," |
- "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1," |
- "'Deleted Item','Deleted Item','http://www.google.com/'," |
- "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG');" |
- "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) |
- ",-3145728," |
- "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1," |
- "'Welcome to Chromium','Welcome to Chromium'," |
- "'http://www.google.com/chrome/intl/en/welcome.html'," |
- "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," |
- "NULL);" |
- "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) |
- ",1048576," |
- "7,'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1," |
- "'Google','Google','http://www.google.com/'," |
- "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" |
- "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) |
- ",-4194304," |
- "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," |
- "'The Internet','The Internet',NULL,NULL,NULL,NULL,NULL);" |
- "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) |
- "," |
- "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," |
- "'Google Chrome','Google Chrome',NULL,NULL,'google_chrome',NULL," |
- "NULL);" |
- "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) |
- ",1048576," |
- "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," |
- "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL);" |
- "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) |
- "," |
- "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," |
- "1,'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL," |
- "NULL);" |
- "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) |
- ",2097152," |
- "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," |
- "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," |
- "NULL,NULL);" |
- "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) |
- ",-1048576," |
- "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," |
- "'Home (The Chromium Projects)','Home (The Chromium Projects)'," |
- "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," |
- "'AGATWA','AFAGVASF');" |
- "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) |
- ",0,9," |
- "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1," |
- "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" |
- "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) |
- ",-917504," |
- "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0," |
- "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'http://www.icann.com/','http://www.icann.com/',NULL," |
- "'PNGAXF0AAFF','DAAFASF');" |
- "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) |
- ",1048576," |
- "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," |
- "'The WebKit Open Source Project','The WebKit Open Source Project'," |
- "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y');" |
- "CREATE TABLE share_info (id VARCHAR(128) primary key, " |
- "last_sync_timestamp INT, name VARCHAR(128), " |
- "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " |
- "db_create_version VARCHAR(128), db_create_time int, " |
- "next_id bigint default -2, cache_guid VARCHAR(32));" |
- "INSERT INTO share_info VALUES('nick@chromium.org',694," |
- "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," |
- "'Unknown',1263522064,-65542," |
- "'9010788312004066376x-6609234393368420856x');" |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO share_version VALUES('nick@chromium.org',68);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion69Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " |
- "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" |
- "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," |
- "base_version bigint default -1,server_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0," |
- "ctime bigint default 0,server_ctime bigint default 0," |
- "server_position_in_parent bigint default 0," |
- "local_external_id bigint default 0,id varchar(255) default 'r'," |
- "parent_id varchar(255) default 'r'," |
- "server_parent_id varchar(255) default 'r'," |
- "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," |
- "is_unsynced bit default 0,is_unapplied_update bit default 0," |
- "is_del bit default 0,is_dir bit default 0," |
- "is_bookmark_object bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0," |
- "server_is_bookmark_object bit default 0," |
- "non_unique_name varchar,server_non_unique_name varchar(255)," |
- "bookmark_url varchar,server_bookmark_url varchar," |
- "singleton_tag varchar,bookmark_favicon blob," |
- "server_bookmark_favicon blob, specifics blob, " |
- "server_specifics blob);" |
- "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) |
- ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL,NULL,NULL,NULL,NULL," |
- "NULL,NULL,X'',X'');" |
- "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) |
- ",-2097152," |
- "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1," |
- "'Deleted Item','Deleted Item','http://www.google.com/'," |
- "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG'," |
- "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841415" |
- "34741534741',X'C28810260A17687474703A2F2F7777772E676F6F676C652E636F" |
- "6D2F32120B4153414447414447414447');" |
- "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) |
- ",-3145728," |
- "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1," |
- "'Welcome to Chromium','Welcome to Chromium'," |
- "'http://www.google.com/chrome/intl/en/welcome.html'," |
- "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL,NULL," |
- "X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" |
- "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A3168" |
- "7474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F6" |
- "56E2F77656C636F6D652E68746D6C1200');" |
- "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) |
- ",1048576,7," |
- "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1," |
- "'Google','Google','http://www.google.com/'," |
- "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG',X'C28810220A166" |
- "87474703A2F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'" |
- "C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464" |
- "447415347');" |
- "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) |
- ",-4194304,6" |
- ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1,'The Internet'," |
- "'The Internet',NULL,NULL,NULL,NULL,NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) |
- ",1048576,0," |
- "'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1,'Google Chrome'," |
- "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL,NULL,NULL);" |
- "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) |
- ",1048576,0," |
- "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," |
- "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL," |
- "X'C2881000',X'C2881000');" |
- "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) |
- ",1048576,1," |
- "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0,1," |
- "'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL,NULL," |
- "X'C2881000',X'C2881000');" |
- "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) |
- ",2097152,2," |
- "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," |
- "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," |
- "NULL,NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) |
- ",-1048576," |
- "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," |
- "'Home (The Chromium Projects)','Home (The Chromium Projects)'," |
- "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," |
- "'AGATWA','AFAGVASF',X'C28810220A18687474703A2F2F6465762E6368726F6D6" |
- "9756D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F646576" |
- "2E6368726F6D69756D2E6F72672F6F7468657212084146414756415346');" |
- "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) |
- ",0,9," |
- "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1," |
- "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL," |
- "X'C2881000',X'C2881000');" |
- "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) |
- ",-917504," |
- "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0," |
- "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'http://www.icann.com/','http://www.icann.com/',NULL,'PNGAXF0AAFF'," |
- "'DAAFASF',X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F1" |
- "20B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963" |
- "616E6E2E636F6D2F120744414146415346');" |
- "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) |
- ",1048576,11," |
- "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," |
- "'The WebKit Open Source Project','The WebKit Open Source Project'," |
- "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y'," |
- "X'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C2" |
- "88101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259');" |
- "CREATE TABLE share_info (id VARCHAR(128) primary key, " |
- "last_sync_timestamp INT, name VARCHAR(128), " |
- "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " |
- "db_create_version VARCHAR(128), db_create_time int, " |
- "next_id bigint default -2, cache_guid VARCHAR(32));" |
- "INSERT INTO share_info VALUES('nick@chromium.org',694," |
- "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," |
- "'Unknown',1263522064,-65542," |
- "'9010788312004066376x-6609234393368420856x');" |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO share_version VALUES('nick@chromium.org',69);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion70Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " |
- "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" |
- "CREATE TABLE share_info (id VARCHAR(128) primary key, " |
- "last_sync_timestamp INT, name VARCHAR(128), " |
- "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " |
- "db_create_version VARCHAR(128), db_create_time int, " |
- "next_id bigint default -2, cache_guid VARCHAR(32));" |
- "INSERT INTO share_info VALUES('nick@chromium.org',694," |
- "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," |
- "'Unknown',1263522064,-65542," |
- "'9010788312004066376x-6609234393368420856x');" |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO share_version VALUES('nick@chromium.org',70);" |
- "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," |
- "base_version bigint default -1,server_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0," |
- "ctime bigint default 0,server_ctime bigint default 0," |
- "server_position_in_parent bigint default 0," |
- "local_external_id bigint default 0,id varchar(255) default 'r'," |
- "parent_id varchar(255) default 'r'," |
- "server_parent_id varchar(255) default 'r'," |
- "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," |
- "is_unsynced bit default 0,is_unapplied_update bit default 0," |
- "is_del bit default 0,is_dir bit default 0," |
- "server_is_dir bit default 0,server_is_del bit default 0," |
- "non_unique_name varchar,server_non_unique_name varchar(255)," |
- "unique_server_tag varchar,unique_client_tag varchar," |
- "specifics blob,server_specifics blob);" |
- "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) |
- ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');" |
- "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) "," |
- "-2097152,4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0," |
- "1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A" |
- "2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X'C2881026" |
- "0A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B415341444741" |
- "4447414447');" |
- "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) |
- ",-3145728," |
- "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," |
- "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A" |
- "31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E74" |
- "6C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F" |
- "2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765" |
- "6C636F6D652E68746D6C1200');" |
- "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) |
- ",1048576,7," |
- "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," |
- "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C6" |
- "52E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F77777" |
- "72E676F6F676C652E636F6D2F12084147464447415347');" |
- "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) |
- ",-4194304," |
- "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," |
- "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) |
- ",1048576,0," |
- "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome'," |
- "'Google Chrome','google_chrome',NULL,NULL,NULL);" |
- "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) |
- ",1048576,0," |
- "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," |
- "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000'," |
- "X'C2881000');" |
- "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) |
- ",1048576," |
- "1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0," |
- "'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881000'," |
- "X'C2881000');" |
- "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) |
- "," |
- "2097152,2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," |
- "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," |
- "X'C2881000',X'C2881000');" |
- "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) |
- ",-1048576," |
- "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," |
- "'Home (The Chromium Projects)','Home (The Chromium Projects)'," |
- "NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F" |
- "72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636872" |
- "6F6D69756D2E6F72672F6F7468657212084146414756415346');" |
- "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) |
- ",0,9," |
- "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," |
- "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," |
- "X'C2881000');" |
- "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) |
- ",-917504," |
- "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F" |
- "120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E69" |
- "63616E6E2E636F6D2F120744414146415346');" |
- "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) |
- ",1048576," |
- "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," |
- "'The WebKit Open Source Project','The WebKit Open Source Project'," |
- "NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" |
- "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F78120550" |
- "4E473259');")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion71Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " |
- "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',71);" |
- "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," |
- "base_version bigint default -1,server_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " |
- "default 0,server_ctime bigint default 0,server_position_in_parent " |
- "bigint default 0,local_external_id bigint default 0,id varchar(255) " |
- "default 'r',parent_id varchar(255) default 'r',server_parent_id " |
- "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " |
- "varchar(255) default 'r',is_unsynced bit default 0," |
- "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " |
- "default 0,server_is_dir bit default 0,server_is_del bit default 0," |
- "non_unique_name varchar,server_non_unique_name varchar(255)," |
- "unique_server_tag varchar,unique_client_tag varchar,specifics blob," |
- "server_specifics blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) |
- ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," |
- "NULL,NULL,X'',X'');" |
- "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) |
- ",-2097152,4," |
- "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," |
- "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" |
- "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" |
- "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" |
- "47');" |
- "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) |
- ",-3145728,3," |
- "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," |
- "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" |
- "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" |
- "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" |
- "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" |
- "652E68746D6C1200');" |
- "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) |
- ",1048576,7," |
- "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," |
- "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" |
- "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" |
- "76F6F676C652E636F6D2F12084147464447415347');" |
- "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) |
- ",-4194304,6," |
- "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," |
- "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) |
- ",1048576,0," |
- "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" |
- ",'google_chrome',NULL,NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) |
- ",1048576,0," |
- "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," |
- "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) |
- ",1048576,1," |
- "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," |
- "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) |
- ",2097152,2," |
- "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," |
- "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," |
- "X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) |
- ",-1048576,8," |
- "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," |
- "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," |
- "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" |
- "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F6F7468657212084146414756415346');" |
- "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) |
- ",0,9," |
- "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," |
- "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," |
- "X'C2881000');" |
- "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) |
- ",-917504,10," |
- "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," |
- "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" |
- "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" |
- "E636F6D2F120744414146415346');" |
- "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) |
- ",1048576,11," |
- "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," |
- "'The WebKit Open Source Project','The WebKit Open Source Project'," |
- "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" |
- "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" |
- "473259');" |
- "CREATE TABLE models (model_id BLOB primary key, " |
- "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',694,1);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " |
- "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " |
- "next_id INT default -2, cache_guid TEXT);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," |
- "'9010788312004066376x-6609234393368420856x');")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion72Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',72);" |
- "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," |
- "base_version bigint default -1,server_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " |
- "default 0,server_ctime bigint default 0,server_position_in_parent " |
- "bigint default 0,local_external_id bigint default 0,id varchar(255) " |
- "default 'r',parent_id varchar(255) default 'r',server_parent_id " |
- "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " |
- "varchar(255) default 'r',is_unsynced bit default 0," |
- "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " |
- "default 0,server_is_dir bit default 0,server_is_del bit default 0," |
- "non_unique_name varchar,server_non_unique_name varchar(255)," |
- "unique_server_tag varchar,unique_client_tag varchar,specifics blob," |
- "server_specifics blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) |
- ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," |
- "NULL,NULL,X'',X'');" |
- "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) |
- ",-2097152,4," |
- "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," |
- "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" |
- "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" |
- "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" |
- "47');" |
- "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) |
- ",-3145728,3," |
- "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," |
- "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" |
- "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" |
- "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" |
- "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" |
- "652E68746D6C1200');" |
- "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) |
- ",1048576,7," |
- "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," |
- "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" |
- "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" |
- "76F6F676C652E636F6D2F12084147464447415347');" |
- "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) |
- ",-4194304,6," |
- "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," |
- "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) |
- ",1048576,0," |
- "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" |
- ",'google_chrome',NULL,NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) |
- ",1048576,0," |
- "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," |
- "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) |
- ",1048576,1," |
- "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," |
- "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) |
- ",2097152,2," |
- "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," |
- "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," |
- "X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) |
- ",-1048576,8," |
- "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," |
- "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," |
- "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" |
- "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F6F7468657212084146414756415346');" |
- "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) |
- ",0,9," |
- "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," |
- "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," |
- "X'C2881000');" |
- "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) |
- ",-917504,10," |
- "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," |
- "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" |
- "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" |
- "E636F6D2F120744414146415346');" |
- "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) |
- ",1048576,11," |
- "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," |
- "'The WebKit Open Source Project','The WebKit Open Source Project'," |
- "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" |
- "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" |
- "473259');" |
- "CREATE TABLE models (model_id BLOB primary key, " |
- "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',694,1);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " |
- "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " |
- "next_id INT default -2, cache_guid TEXT);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," |
- "'9010788312004066376x-6609234393368420856x');")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion73Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',73);" |
- "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," |
- "base_version bigint default -1,server_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " |
- "default 0,server_ctime bigint default 0,server_position_in_parent " |
- "bigint default 0,local_external_id bigint default 0,id varchar(255) " |
- "default 'r',parent_id varchar(255) default 'r',server_parent_id " |
- "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " |
- "varchar(255) default 'r',is_unsynced bit default 0," |
- "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " |
- "default 0,server_is_dir bit default 0,server_is_del bit default 0," |
- "non_unique_name varchar,server_non_unique_name varchar(255)," |
- "unique_server_tag varchar,unique_client_tag varchar,specifics blob," |
- "server_specifics blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) |
- ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," |
- "NULL,NULL,X'',X'');" |
- "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) |
- ",-2097152,4," |
- "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," |
- "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" |
- "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" |
- "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" |
- "47');" |
- "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) |
- ",-3145728,3," |
- "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," |
- "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" |
- "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" |
- "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" |
- "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" |
- "652E68746D6C1200');" |
- "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) |
- ",1048576,7," |
- "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," |
- "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" |
- "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" |
- "76F6F676C652E636F6D2F12084147464447415347');" |
- "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) |
- ",-4194304,6," |
- "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," |
- "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) |
- ",1048576,0," |
- "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" |
- ",'google_chrome',NULL,NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) |
- ",1048576,0," |
- "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," |
- "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) |
- ",1048576,1," |
- "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," |
- "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) |
- ",2097152,2," |
- "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," |
- "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," |
- "X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) |
- ",-1048576,8," |
- "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," |
- "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," |
- "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" |
- "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F6F7468657212084146414756415346');" |
- "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) |
- ",0,9," |
- "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," |
- "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," |
- "X'C2881000');" |
- "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) |
- ",-917504,10," |
- "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers'," |
- "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," |
- "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" |
- "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" |
- "E636F6D2F120744414146415346');" |
- "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) |
- ",1048576,11," |
- "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," |
- "'The WebKit Open Source Project','The WebKit Open Source Project'," |
- "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" |
- "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" |
- "473259');" |
- "CREATE TABLE models (model_id BLOB primary key, " |
- "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',694,1);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " |
- "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " |
- "next_id INT default -2, cache_guid TEXT, " |
- "notification_state BLOB);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," |
- "'9010788312004066376x-6609234393368420856x',X'C2881000');")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion74Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',74);" |
- "CREATE TABLE models (model_id BLOB primary key, last_download_timestamp" |
- " INT, initial_sync_ended BOOLEAN default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',694,1);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd" |
- "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" |
- "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra" |
- "tion_state INT default 0, bookmarks_added_during_autofill_migration" |
- " INT default 0, autofill_migration_time INT default 0, autofill_ent" |
- "ries_added_during_migration INT default 0, autofill_profiles_added_" |
- "during_migration INT default 0);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'" |
- ",'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542" |
- ",'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,bas" |
- "e_version bigint default -1,server_version bigint default 0,mtime b" |
- "igint default 0,server_mtime bigint default 0,ctime bigint default " |
- "0,server_ctime bigint default 0,server_position_in_parent bigint de" |
- "fault 0,local_external_id bigint default 0,id varchar(255) default " |
- "'r',parent_id varchar(255) default 'r',server_parent_id varchar(255" |
- ") default 'r',prev_id varchar(255) default 'r',next_id varchar(255)" |
- " default 'r',is_unsynced bit default 0,is_unapplied_update bit defa" |
- "ult 0,is_del bit default 0,is_dir bit default 0,server_is_dir bit d" |
- "efault 0,server_is_del bit default 0,non_unique_name varchar,server" |
- "_non_unique_name varchar(255),unique_server_tag varchar,unique_clie" |
- "nt_tag varchar,specifics blob,server_specifics blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) |
- ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'" |
- "');" |
- "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) |
- ",-2097152,4,'s_ID_2','s_ID" |
- "_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted " |
- "Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" |
- "36F6D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E67" |
- "6F6F676C652E636F6D2F32120B4153414447414447414447');" |
- "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) |
- ",-3145728,3,'s_ID_4','s_ID" |
- "_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','W" |
- "elcome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E6" |
- "76F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E" |
- "68746D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636" |
- "F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');" |
- "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) |
- ",1048576,7,'s_ID_5','s_ID_" |
- "9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NU" |
- "LL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841" |
- "47415347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" |
- "36F6D2F12084147464447415347');" |
- "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) |
- ",-4194304,6,'s_ID_6','s_ID" |
- "_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL" |
- ",NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) |
- ",1048576,0,'s_ID_7','r','r" |
- "','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrom" |
- "e',NULL,NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) |
- ",1048576,0,'s_ID_8','s_ID_" |
- "7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chr" |
- "ome_bookmarks',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) |
- ",1048576,1,'s_ID_9','s_ID_" |
- "8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'" |
- ",'bookmark_bar',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) |
- ",2097152,2,'s_ID_10','s_I" |
- "D_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Boo" |
- "kmarks','other_bookmarks',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) |
- ",-1048576,8,'s_ID_11','s_" |
- "ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projec" |
- "ts)','Home (The Chromium Projects)',NULL,NULL,X'C28810220A186874747" |
- "03A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810" |
- "290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120" |
- "84146414756415346');" |
- "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) |
- ",0,9,'s_ID_12','s_ID_6','" |
- "s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bo" |
- "okmarks',NULL,NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) |
- ",-917504,10,'s_ID_13','s_" |
- "ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Co" |
- "rporation for Assigned Names and Numbers','ICANN | Internet Corpora" |
- "tion for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474" |
- "703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C" |
- "28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F12074441414641" |
- "5346');" |
- "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) |
- ",1048576,11,'s_ID_14','s_" |
- "ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Pr" |
- "oject','The WebKit Open Source Project',NULL,NULL,X'C288101A0A12687" |
- "474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474" |
- "703A2F2F7765626B69742E6F72672F781205504E473259');")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion75Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',75);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd" |
- "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" |
- "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra" |
- "tion_state INT default 0,bookmarks_added_during_autofill_migration " |
- "INT default 0, autofill_migration_time INT default 0, autofill_entr" |
- "ies_added_during_migration INT default 0, autofill_profiles_added_d" |
- "uring_migration INT default 0);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org" |
- "','c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-655" |
- "42,'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, " |
- "initial_sync_ended BOOLEAN default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,ba" |
- "se_version bigint default -1,server_version bigint default 0,mtime" |
- " bigint default 0,server_mtime bigint default 0,ctime bigint defau" |
- "lt 0,server_ctime bigint default 0,server_position_in_parent bigin" |
- "t default 0,local_external_id bigint default 0,id varchar(255) def" |
- "ault 'r',parent_id varchar(255) default 'r',server_parent_id varch" |
- "ar(255) default 'r',prev_id varchar(255) default 'r',next_id varch" |
- "ar(255) default 'r',is_unsynced bit default 0,is_unapplied_update " |
- "bit default 0,is_del bit default 0,is_dir bit default 0,server_is_" |
- "dir bit default 0,server_is_del bit default 0,non_unique_name varc" |
- "har,server_non_unique_name varchar(255),unique_server_tag varchar," |
- "unique_client_tag varchar,specifics blob,server_specifics blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) |
- ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NUL" |
- "L,X'',X'');" |
- "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) |
- ",-2097152,4,'s_ID_" |
- "2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Ite" |
- "m','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772" |
- "E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A176874" |
- "74703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474" |
- "14447');" |
- "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) |
- ",-3145728,3,'s_ID_" |
- "4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to " |
- "Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A316874747" |
- "03A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F65" |
- "6E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7" |
- "777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765" |
- "6C636F6D652E68746D6C1200');" |
- "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) |
- ",1048576,7,'s_ID_5" |
- "','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Goo" |
- "gle',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C65" |
- "2E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F777" |
- "7772E676F6F676C652E636F6D2F12084147464447415347');" |
- "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) |
- ",-4194304,6,'s_ID_" |
- "6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The In" |
- "ternet',NULL,NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) |
- ",1048576,0,'s_ID_7" |
- "','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','" |
- "google_chrome',NULL,NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) |
- ",1048576,0,'s_ID_8" |
- "','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks'" |
- ",'google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) |
- ",1048576,1,'s_ID_9" |
- "','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','B" |
- "ookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) |
- ",2097152,2,'s_ID_" |
- "10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks" |
- "','Other Bookmarks','other_bookmarks',NULL,X'C2881000',X'C28810" |
- "00');" |
- "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) |
- ",-1048576,8,'s_ID" |
- "_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chr" |
- "omium Projects)','Home (The Chromium Projects)',NULL,NULL,X'C28" |
- "810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F120641" |
- "4741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F6F7468657212084146414756415346');" |
- "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) |
- ",0,9,'s_ID_12','s" |
- "_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmark" |
- "s','Extra Bookmarks',NULL,NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) |
- ",-917504,10,'s_ID" |
- "_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN |" |
- " Internet Corporation for Assigned Names and Numbers','ICANN | " |
- "Internet Corporation for Assigned Names and Numbers',NULL,NULL," |
- "X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" |
- "E474158463041414646',X'C28810200A15687474703A2F2F7777772E696361" |
- "6E6E2E636F6D2F120744414146415346');" |
- "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) |
- ",1048576,11,'s_ID" |
- "_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Op" |
- "en Source Project','The WebKit Open Source Project',NULL,NULL,X" |
- "'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758'," |
- "X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473" |
- "259');")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion76Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',76);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" |
- "itial_sync_ended BOOLEAN default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0,mtime big" |
- "int default 0,server_mtime bigint default 0,ctime bigint default 0,s" |
- "erver_ctime bigint default 0,server_position_in_parent bigint defaul" |
- "t 0,local_external_id bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) |
- ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'')" |
- ";" |
- "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) |
- ",-2097152,4,'s_ID_2','s_ID_9" |
- "','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted Ite" |
- "m',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6" |
- "D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E676F6F6" |
- "76C652E636F6D2F32120B4153414447414447414447');" |
- "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) |
- ",-3145728,3,'s_ID_4','s_ID_9" |
- "','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','Welc" |
- "ome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E676F6" |
- "F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746" |
- "D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6" |
- "368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');" |
- "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) |
- ",1048576,7,'s_ID_5','s_ID_9'" |
- ",'s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NULL," |
- "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F1208414741" |
- "5347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D" |
- "2F12084147464447415347');" |
- "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) |
- ",-4194304,6,'s_ID_6','s_ID_9" |
- "','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL,NU" |
- "LL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) |
- ",1048576,0,'s_ID_7','r','r'," |
- "'r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrome'," |
- "NULL,NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) |
- ",1048576,0,'s_ID_8','s_ID_7'" |
- ",'s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chrome" |
- "_bookmarks',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) |
- ",1048576,1,'s_ID_9','s_ID_8'" |
- ",'s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar','b" |
- "ookmark_bar',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) |
- ",2097152,2,'s_ID_10','s_ID_" |
- "8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Bookma" |
- "rks','other_bookmarks',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) |
- ",-1048576,8,'s_ID_11','s_ID" |
- "_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projects)" |
- "','Home (The Chromium Projects)',NULL,NULL,X'C28810220A18687474703A2" |
- "F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1" |
- "D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120841464" |
- "14756415346');" |
- "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) |
- ",0,9,'s_ID_12','s_ID_6','s_" |
- "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm" |
- "arks',NULL,NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) |
- ",-917504,10,'s_ID_13','s_ID" |
- "_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Corpo" |
- "ration for Assigned Names and Numbers','ICANN | Internet Corporation" |
- " for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474703A2" |
- "F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C288102" |
- "00A15687474703A2F2F7777772E6963616E6E2E636F6D2F120744414146415346');" |
- "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) |
- ",1048576,11,'s_ID_14','s_ID" |
- "_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Proje" |
- "ct','The WebKit Open Source Project',NULL,NULL,X'C288101A0A126874747" |
- "03A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2" |
- "F2F7765626B69742E6F72672F781205504E473259');" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" |
- "ult -2, cache_guid TEXT , notification_state BLOB);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" |
- "9010788312004066376x-6609234393368420856x',NULL);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion77Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',77);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" |
- "itial_sync_ended BOOLEAN default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0,server_po" |
- "sition_in_parent bigint default 0,local_external_id bigint default 0" |
- ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" |
- "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) |
- ",'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');" |
- "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," |
- META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" |
- "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" |
- "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" |
- "14447414447414447');" |
- "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," |
- META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" |
- "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" |
- ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" |
- "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" |
- "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" |
- "E2F77656C636F6D652E68746D6C1200');" |
- "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," META_PROTO_TIMES_VALS(5) |
- ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','" |
- "Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E" |
- "636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E67" |
- "6F6F676C652E636F6D2F12084147464447415347');" |
- "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," |
- META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" |
- ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" |
- ");" |
- "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," META_PROTO_TIMES_VALS(7) |
- ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Goo" |
- "gle Chrome','google_chrome',NULL,NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," META_PROTO_TIMES_VALS(8) |
- ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmar" |
- "ks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," META_PROTO_TIMES_VALS(9) |
- ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'" |
- ",'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," |
- META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," |
- "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" |
- "LL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," |
- META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" |
- ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" |
- "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" |
- "8726F6D69756D2E6F72672F6F7468657212084146414756415346');" |
- "INSERT INTO 'metas' VALUES(12,685,685,0,9," META_PROTO_TIMES_VALS(12) |
- ",'s_ID_12','s_ID_6','s_" |
- "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm" |
- "arks',NULL,NULL,X'C2881000',X'C2881000');" |
- "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," |
- META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" |
- "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " |
- "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" |
- "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" |
- "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" |
- "E6963616E6E2E636F6D2F120744414146415346');" |
- "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," |
- META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" |
- ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" |
- "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" |
- "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" |
- "81205504E473259');" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" |
- "ult -2, cache_guid TEXT , notification_state BLOB);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" |
- "9010788312004066376x-6609234393368420856x',NULL);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion78Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',78);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" |
- "itial_sync_ended BOOLEAN default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0,server_po" |
- "sition_in_parent bigint default 0,local_external_id bigint default 0" |
- ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" |
- "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob, base_server_specifics BLOB" |
- ");" |
- "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" |
- "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" |
- "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," |
- META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" |
- "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" |
- "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" |
- "14447414447414447',NULL);" |
- "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," |
- META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" |
- "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" |
- ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" |
- "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" |
- "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" |
- "E2F77656C636F6D652E68746D6C1200',NULL);" |
- "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," |
- META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" |
- "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" |
- "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" |
- "ULL);" |
- "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," |
- META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" |
- ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" |
- ",NULL);" |
- "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," |
- META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" |
- "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," |
- META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" |
- ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" |
- "00',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," |
- META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" |
- ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" |
- "000',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," |
- META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," |
- "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" |
- "LL,X'C2881000',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," |
- META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" |
- ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" |
- "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" |
- "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" |
- "INSERT INTO 'metas' VALUES(12,685,685,0,9," |
- META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" |
- "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" |
- "2881000',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," |
- META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" |
- "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " |
- "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" |
- "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" |
- "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" |
- "E6963616E6E2E636F6D2F120744414146415346',NULL);" |
- "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," |
- META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" |
- ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" |
- "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" |
- "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" |
- "81205504E473259',NULL);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" |
- "ult -2, cache_guid TEXT , notification_state BLOB);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" |
- "9010788312004066376x-6609234393368420856x',NULL);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion79Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',79);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" |
- "itial_sync_ended BOOLEAN default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0,server_po" |
- "sition_in_parent bigint default 0,local_external_id bigint default 0" |
- ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" |
- "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob, base_server_specifics BLOB" |
- ");" |
- "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" |
- "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" |
- "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," |
- META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" |
- "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" |
- "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" |
- "14447414447414447',NULL);" |
- "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," |
- META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" |
- "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" |
- ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" |
- "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" |
- "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" |
- "E2F77656C636F6D652E68746D6C1200',NULL);" |
- "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," |
- META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" |
- "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" |
- "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" |
- "ULL);" |
- "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," |
- META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" |
- ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" |
- ",NULL);" |
- "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," |
- META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" |
- "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," |
- META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" |
- ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" |
- "00',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," |
- META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" |
- ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" |
- "000',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," |
- META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," |
- "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" |
- "LL,X'C2881000',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," |
- META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" |
- ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" |
- "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" |
- "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" |
- "INSERT INTO 'metas' VALUES(12,685,685,0,9," |
- META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" |
- "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" |
- "2881000',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," |
- META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" |
- "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " |
- "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" |
- "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" |
- "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" |
- "E6963616E6E2E636F6D2F120744414146415346',NULL);" |
- "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," |
- META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" |
- ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" |
- "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" |
- "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" |
- "81205504E473259',NULL);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" |
- "ult -2, cache_guid TEXT , notification_state BLOB);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," |
- "-131078,'9010788312004066376x-6609234393368420856x',NULL);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion80Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',80);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" |
- "itial_sync_ended BOOLEAN default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0,server_po" |
- "sition_in_parent bigint default 0,local_external_id bigint default 0" |
- ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" |
- "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob, base_server_specifics BLOB" |
- ");" |
- "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" |
- "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" |
- "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," |
- META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" |
- "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" |
- "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" |
- "14447414447414447',NULL);" |
- "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," |
- META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" |
- "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" |
- ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" |
- "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" |
- "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" |
- "E2F77656C636F6D652E68746D6C1200',NULL);" |
- "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," |
- META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" |
- "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" |
- "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" |
- "ULL);" |
- "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," |
- META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" |
- ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" |
- ",NULL);" |
- "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," |
- META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" |
- "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," |
- META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" |
- ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" |
- "00',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," |
- META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" |
- ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" |
- "000',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," |
- META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," |
- "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" |
- "LL,X'C2881000',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," |
- META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" |
- ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" |
- "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" |
- "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" |
- "INSERT INTO 'metas' VALUES(12,685,685,0,9," |
- META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" |
- "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" |
- "2881000',X'C2881000',NULL);" |
- "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," |
- META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" |
- "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " |
- "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" |
- "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" |
- "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" |
- "E6963616E6E2E636F6D2F120744414146415346',NULL);" |
- "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," |
- META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" |
- ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" |
- "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" |
- "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" |
- "81205504E473259',NULL);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" |
- "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " |
- "blob);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," |
- "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
- |
-// Helper definitions to create the version 81 DB tables. |
-namespace { |
- |
-const int V80_ROW_COUNT = 13; |
-const int64_t V80_POSITIONS[V80_ROW_COUNT] = { |
- 0, -2097152, -3145728, 1048576, -4194304, 1048576, 1048576, |
- 1048576, 2097152, -1048576, 0, -917504, 1048576}; |
- |
-std::string V81_Ordinal(int n) { |
- return Int64ToNodeOrdinal(V80_POSITIONS[n]).ToInternalValue(); |
-} |
- |
-} // namespace |
- |
-// Unlike the earlier versions, the rows for version 81 are generated |
-// programmatically to accurately handle unprintable characters for the |
-// server_ordinal_in_parent field. |
-void MigrationTest::SetUpVersion81Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',81);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" |
- "itial_sync_ended BOOLEAN default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0, " |
- "local_external_id bigint default 0" |
- ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" |
- "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob, base_server_specifics BLOB" |
- ", server_ordinal_in_parent blob);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" |
- "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " |
- "blob);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," |
- "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); |
- |
- const char* insert_stmts[V80_ROW_COUNT] = { |
- "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" |
- "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);", |
- "INSERT INTO 'metas' VALUES(2,669,669,4," |
- META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" |
- "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" |
- "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" |
- "14447414447414447',NULL,?);", |
- "INSERT INTO 'metas' VALUES(4,681,681,3," |
- META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" |
- "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" |
- ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" |
- "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" |
- "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" |
- "E2F77656C636F6D652E68746D6C1200',NULL,?);", |
- "INSERT INTO 'metas' VALUES(5,677,677,7," |
- META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" |
- "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" |
- "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" |
- "ULL,?);", |
- "INSERT INTO 'metas' VALUES(6,694,694,6," |
- META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" |
- ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" |
- ",NULL,?);", |
- "INSERT INTO 'metas' VALUES(7,663,663,0," |
- META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" |
- "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);", |
- "INSERT INTO 'metas' VALUES(8,664,664,0," |
- META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" |
- ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" |
- "00',X'C2881000',NULL,?);", |
- "INSERT INTO 'metas' VALUES(9,665,665,1," |
- META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" |
- ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" |
- "000',X'C2881000',NULL,?);", |
- "INSERT INTO 'metas' VALUES(10,666,666,2," |
- META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," |
- "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" |
- "LL,X'C2881000',X'C2881000',NULL,?);", |
- "INSERT INTO 'metas' VALUES(11,683,683,8," |
- META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" |
- ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" |
- "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" |
- "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);", |
- "INSERT INTO 'metas' VALUES(12,685,685,9," |
- META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" |
- "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" |
- "2881000',X'C2881000',NULL,?);", |
- "INSERT INTO 'metas' VALUES(13,687,687,10," |
- META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" |
- "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " |
- "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" |
- "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" |
- "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" |
- "E6963616E6E2E636F6D2F120744414146415346',NULL,?);", |
- "INSERT INTO 'metas' VALUES(14,692,692,11," |
- META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" |
- ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" |
- "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" |
- "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" |
- "81205504E473259',NULL,?);" }; |
- |
- for (int i = 0; i < V80_ROW_COUNT; i++) { |
- sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); |
- std::string ord = V81_Ordinal(i); |
- s.BindBlob(0, ord.data(), ord.length()); |
- ASSERT_TRUE(s.Run()); |
- s.Reset(true); |
- } |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion82Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',82);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" |
- "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " |
- "default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0, " |
- "local_external_id bigint default 0" |
- ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" |
- "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob, base_server_specifics BLOB" |
- ", server_ordinal_in_parent blob);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" |
- "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " |
- "blob);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," |
- "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); |
- |
- const char* insert_stmts[V80_ROW_COUNT] = { |
- "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" |
- "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);", |
- "INSERT INTO 'metas' VALUES(2,669,669,4," |
- META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" |
- "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" |
- "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" |
- "14447414447414447',NULL,?);", |
- "INSERT INTO 'metas' VALUES(4,681,681,3," |
- META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" |
- "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" |
- ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" |
- "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" |
- "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" |
- "E2F77656C636F6D652E68746D6C1200',NULL,?);", |
- "INSERT INTO 'metas' VALUES(5,677,677,7," |
- META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" |
- "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" |
- "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" |
- "ULL,?);", |
- "INSERT INTO 'metas' VALUES(6,694,694,6," |
- META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" |
- ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" |
- ",NULL,?);", |
- "INSERT INTO 'metas' VALUES(7,663,663,0," |
- META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" |
- "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);", |
- "INSERT INTO 'metas' VALUES(8,664,664,0," |
- META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" |
- ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" |
- "00',X'C2881000',NULL,?);", |
- "INSERT INTO 'metas' VALUES(9,665,665,1," |
- META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" |
- ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" |
- "000',X'C2881000',NULL,?);", |
- "INSERT INTO 'metas' VALUES(10,666,666,2," |
- META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," |
- "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" |
- "LL,X'C2881000',X'C2881000',NULL,?);", |
- "INSERT INTO 'metas' VALUES(11,683,683,8," |
- META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" |
- ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" |
- "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" |
- "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);", |
- "INSERT INTO 'metas' VALUES(12,685,685,9," |
- META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" |
- "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" |
- "2881000',X'C2881000',NULL,?);", |
- "INSERT INTO 'metas' VALUES(13,687,687,10," |
- META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" |
- "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " |
- "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" |
- "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" |
- "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" |
- "E6963616E6E2E636F6D2F120744414146415346',NULL,?);", |
- "INSERT INTO 'metas' VALUES(14,692,692,11," |
- META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" |
- ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" |
- "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" |
- "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" |
- "81205504E473259',NULL,?);" }; |
- |
- for (int i = 0; i < V80_ROW_COUNT; i++) { |
- sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); |
- std::string ord = V81_Ordinal(i); |
- s.BindBlob(0, ord.data(), ord.length()); |
- ASSERT_TRUE(s.Run()); |
- s.Reset(true); |
- } |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion83Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',83);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" |
- "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " |
- "default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0, " |
- "local_external_id bigint default 0" |
- ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" |
- "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob, base_server_specifics BLOB" |
- ", server_ordinal_in_parent blob, transaction_version bigint default " |
- "0);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" |
- "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " |
- "blob);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," |
- "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); |
- |
- const char* insert_stmts[V80_ROW_COUNT] = { |
- "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" |
- "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(2,669,669,4," |
- META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" |
- "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" |
- "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" |
- "14447414447414447',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(4,681,681,3," |
- META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" |
- "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" |
- ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" |
- "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" |
- "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" |
- "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(5,677,677,7," |
- META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" |
- "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" |
- "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" |
- "ULL,?,0);", |
- "INSERT INTO 'metas' VALUES(6,694,694,6," |
- META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" |
- ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" |
- ",NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(7,663,663,0," |
- META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" |
- "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" |
- "", |
- "INSERT INTO 'metas' VALUES(8,664,664,0," |
- META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" |
- ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" |
- "00',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(9,665,665,1," |
- META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" |
- ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" |
- "000',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(10,666,666,2," |
- META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," |
- "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" |
- "LL,X'C2881000',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(11,683,683,8," |
- META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" |
- ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" |
- "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" |
- "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(12,685,685,9," |
- META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" |
- "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" |
- "2881000',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(13,687,687,10," |
- META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" |
- "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " |
- "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" |
- "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" |
- "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" |
- "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(14,692,692,11," |
- META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" |
- ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" |
- "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" |
- "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" |
- "81205504E473259',NULL,?,0);" }; |
- |
- for (int i = 0; i < V80_ROW_COUNT; i++) { |
- sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); |
- std::string ord = V81_Ordinal(i); |
- s.BindBlob(0, ord.data(), ord.length()); |
- ASSERT_TRUE(s.Run()); |
- s.Reset(true); |
- } |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion84Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',84);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" |
- "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " |
- "default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0, " |
- "local_external_id bigint default 0" |
- ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" |
- "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob, base_server_specifics BLOB" |
- ", server_ordinal_in_parent blob, transaction_version bigint default " |
- "0);" |
- "CREATE TABLE 'deleted_metas'" |
- "(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0, " |
- "local_external_id bigint default 0" |
- ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" |
- "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob, base_server_specifics BLOB" |
- ", server_ordinal_in_parent blob, transaction_version bigint default " |
- "0);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" |
- "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " |
- "blob);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," |
- "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); |
- |
- const char* insert_stmts[V80_ROW_COUNT] = { |
- "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" |
- "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(2,669,669,4," |
- META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" |
- "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" |
- "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" |
- "14447414447414447',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(4,681,681,3," |
- META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" |
- "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" |
- ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" |
- "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" |
- "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" |
- "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(5,677,677,7," |
- META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" |
- "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" |
- "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" |
- "ULL,?,0);", |
- "INSERT INTO 'metas' VALUES(6,694,694,6," |
- META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" |
- ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" |
- ",NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(7,663,663,0," |
- META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" |
- "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" |
- "", |
- "INSERT INTO 'metas' VALUES(8,664,664,0," |
- META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" |
- ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" |
- "00',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(9,665,665,1," |
- META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" |
- ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" |
- "000',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(10,666,666,2," |
- META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," |
- "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" |
- "LL,X'C2881000',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(11,683,683,8," |
- META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" |
- ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" |
- "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" |
- "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(12,685,685,9," |
- META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" |
- "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" |
- "2881000',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(13,687,687,10," |
- META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" |
- "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " |
- "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" |
- "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" |
- "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" |
- "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(14,692,692,11," |
- META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" |
- ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" |
- "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" |
- "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" |
- "81205504E473259',NULL,?,0);" }; |
- |
- for (int i = 0; i < V80_ROW_COUNT; i++) { |
- sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); |
- std::string ord = V81_Ordinal(i); |
- s.BindBlob(0, ord.data(), ord.length()); |
- ASSERT_TRUE(s.Run()); |
- s.Reset(true); |
- } |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion85Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',85);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, " |
- "transaction_version BIGINT default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605', 1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0, " |
- "local_external_id bigint default 0" |
- ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" |
- "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob, base_server_specifics BLOB" |
- ", server_ordinal_in_parent blob, transaction_version bigint default " |
- "0);" |
- "CREATE TABLE 'deleted_metas'" |
- "(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0, " |
- "local_external_id bigint default 0" |
- ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" |
- "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" |
- "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" |
- "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" |
- "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" |
- "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," |
- "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" |
- "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" |
- "har,specifics blob,server_specifics blob, base_server_specifics BLOB" |
- ", server_ordinal_in_parent blob, transaction_version bigint default " |
- "0);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" |
- "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " |
- "blob);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," |
- "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); |
- |
- const char* insert_stmts[V80_ROW_COUNT] = { |
- "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" |
- "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(2,669,669,4," |
- META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" |
- "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" |
- "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" |
- "14447414447414447',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(4,681,681,3," |
- META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" |
- "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" |
- ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" |
- "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" |
- "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" |
- "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(5,677,677,7," |
- META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" |
- "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" |
- "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" |
- "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" |
- "ULL,?,0);", |
- "INSERT INTO 'metas' VALUES(6,694,694,6," |
- META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" |
- ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" |
- ",NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(7,663,663,0," |
- META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" |
- "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" |
- "", |
- "INSERT INTO 'metas' VALUES(8,664,664,0," |
- META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" |
- ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" |
- "00',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(9,665,665,1," |
- META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" |
- ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" |
- "000',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(10,666,666,2," |
- META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," |
- "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" |
- "LL,X'C2881000',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(11,683,683,8," |
- META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" |
- ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" |
- "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" |
- "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" |
- "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(12,685,685,9," |
- META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" |
- "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" |
- "2881000',X'C2881000',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(13,687,687,10," |
- META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" |
- "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " |
- "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" |
- "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" |
- "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" |
- "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", |
- "INSERT INTO 'metas' VALUES(14,692,692,11," |
- META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" |
- ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" |
- "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" |
- "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" |
- "81205504E473259',NULL,?,0);" }; |
- |
- for (int i = 0; i < V80_ROW_COUNT; i++) { |
- sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); |
- std::string ord = V81_Ordinal(i); |
- s.BindBlob(0, ord.data(), ord.length()); |
- ASSERT_TRUE(s.Run()); |
- s.Reset(true); |
- } |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion86Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',86);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB," |
- " transaction_version BIGINT default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,b" |
- "ase_version bigint default -1,server_version bigint default 0,local_e" |
- "xternal_id bigint default 0,transaction_version bigint default 0,mtim" |
- "e bigint default 0,server_mtime bigint default 0,ctime bigint default" |
- " 0,server_ctime bigint default 0,id varchar(255) default 'r',parent_i" |
- "d varchar(255) default 'r',server_parent_id varchar(255) default 'r'," |
- "is_unsynced bit default 0,is_unapplied_update bit default 0,is_del bi" |
- "t default 0,is_dir bit default 0,server_is_dir bit default 0,server_i" |
- "s_del bit default 0,non_unique_name varchar,server_non_unique_name va" |
- "rchar(255),unique_server_tag varchar,unique_client_tag varchar,unique" |
- "_bookmark_tag varchar,specifics blob,server_specifics blob,base_serve" |
- "r_specifics blob,server_unique_position blob,unique_position blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0,0,0," |
- META_PROTO_TIMES_VALS(1) |
- ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL," |
- "X'',X'',X'',NULL,X'2200',X'2200');" |
- "INSERT INTO 'metas' VALUES(6,694,694,6,0," |
- META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The" |
- " Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D653" |
- "273625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFF" |
- "FFFC000006754307476346749735A5734654D653273625336557753582F77673D',X'" |
- "22247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582" |
- "F77673D');" |
- "INSERT INTO 'metas' VALUES(7,663,663,0,0," |
- META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome" |
- "','Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'2" |
- "200');" |
- "INSERT INTO 'metas' VALUES(8,664,664,0,0," |
- META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Boo" |
- "kmarks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'" |
- "C2881000',NULL,X'2200',X'2200');" |
- "INSERT INTO 'metas' VALUES(9,665,665,1,0," |
- META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Boo" |
- "kmark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C2881" |
- "000',NULL,X'2200',X'2200');" |
- "INSERT INTO 'metas' VALUES(10,666,666,2,0," |
- META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'O" |
- "ther Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C28810" |
- "00',X'C2881000',NULL,X'2200',X'2200');" |
- "INSERT INTO 'metas' VALUES(11,683,683,8,0," |
- META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'H" |
- "ome (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL" |
- ",X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C28810" |
- "220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F120641474154574" |
- "1',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74" |
- "68657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D" |
- "623579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF00000505" |
- "14C784A456D623579366267644237646A7A2B62314130346E493D');" |
- "INSERT INTO 'metas' VALUES(12,685,685,9,0," |
- META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'E" |
- "xtra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6" |
- "F616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'222" |
- "480000000000000007867626A704A646134635A6F616C376A49513338734B46324837" |
- "773D',X'222480000000000000007867626A704A646134635A6F616C376A495133387" |
- "34B46324837773D');" |
- "INSERT INTO 'metas' VALUES(13,687,687,10,0," |
- META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I" |
- "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | " |
- "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142" |
- "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156" |
- "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646'," |
- "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464" |
- "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304" |
- "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650" |
- "4179672B304A614A514B3452384A413D');" |
- "INSERT INTO 'metas' VALUES(14,692,692,11,0," |
- META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T" |
- "he WebKit Open Source Project','The WebKit Open Source Project',NULL," |
- "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2" |
- "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101" |
- "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222" |
- "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C" |
- "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315" |
- "9552F6E644C553D');" |
- "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" |
- "IL,base_version bigint default -1,server_version bigint default 0,loc" |
- "al_external_id bigint default 0,transaction_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" |
- "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" |
- "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " |
- "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" |
- "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" |
- "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" |
- "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" |
- "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" |
- "erver_specifics blob,server_unique_position blob,unique_position blob" |
- ");" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birt" |
- "hday TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" |
- "fault -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB" |
- ");" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.or" |
- "g','c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-13107" |
- "8,'9010788312004066376x-6609234393368420856x',NULL,NULL);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion87Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',87);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, tr" |
- "ansaction_version BIGINT default 0);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0,local_exte" |
- "rnal_id bigint default 0,transaction_version bigint default 0,mtime b" |
- "igint default 0,server_mtime bigint default 0,ctime bigint default 0," |
- "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v" |
- "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_" |
- "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d" |
- "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d" |
- "el bit default 0,non_unique_name varchar,server_non_unique_name varch" |
- "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo" |
- "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s" |
- "pecifics blob,server_unique_position blob,unique_position blob,attach" |
- "ment_metadata blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0,0,0," |
- META_PROTO_TIMES_VALS(1) |
- ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X''" |
- ",X'',X'',NULL,X'2200',X'2200',NULL);" |
- "INSERT INTO 'metas' VALUES(6,694,694,6,0," |
- META_PROTO_TIMES_VALS(6) |
- ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The " |
- "Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D6532" |
- "73625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFFF" |
- "FFC000006754307476346749735A5734654D653273625336557753582F77673D',X'2" |
- "2247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582F" |
- "77673D',NULL);" |
- "INSERT INTO 'metas' VALUES(7,663,663,0,0," |
- META_PROTO_TIMES_VALS(7) |
- ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome'" |
- ",'Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'22" |
- "00',NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664,0,0," |
- META_PROTO_TIMES_VALS(8) |
- ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Book" |
- "marks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'C" |
- "2881000',NULL,X'2200',X'2200',NULL);" |
- "INSERT INTO 'metas' VALUES(9,665,665,1,0," |
- META_PROTO_TIMES_VALS(9) |
- ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Book" |
- "mark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C28810" |
- "00',NULL,X'2200',X'2200',NULL);" |
- "INSERT INTO 'metas' VALUES(10,666,666,2,0," |
- META_PROTO_TIMES_VALS(10) |
- ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Ot" |
- "her Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C288100" |
- "0',X'C2881000',NULL,X'2200',X'2200',NULL);" |
- "INSERT INTO 'metas' VALUES(11,683,683,8,0," |
- META_PROTO_TIMES_VALS(11) |
- ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Ho" |
- "me (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL," |
- "X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C288102" |
- "20A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741" |
- "',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F746" |
- "8657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D6" |
- "23579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF000005051" |
- "4C784A456D623579366267644237646A7A2B62314130346E493D',NULL);" |
- "INSERT INTO 'metas' VALUES(12,685,685,9,0," |
- META_PROTO_TIMES_VALS(12) |
- ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Ex" |
- "tra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6F" |
- "616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'2224" |
- "80000000000000007867626A704A646134635A6F616C376A49513338734B463248377" |
- "73D',X'222480000000000000007867626A704A646134635A6F616C376A4951333873" |
- "4B46324837773D',NULL);" |
- "INSERT INTO 'metas' VALUES(13,687,687,10,0," |
- META_PROTO_TIMES_VALS(13) |
- ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I" |
- "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | " |
- "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142" |
- "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156" |
- "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646'," |
- "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464" |
- "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304" |
- "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650" |
- "4179672B304A614A514B3452384A413D',NULL);" |
- "INSERT INTO 'metas' VALUES(14,692,692,11,0," |
- META_PROTO_TIMES_VALS(14) |
- ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T" |
- "he WebKit Open Source Project','The WebKit Open Source Project',NULL," |
- "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2" |
- "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101" |
- "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222" |
- "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C" |
- "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315" |
- "9552F6E644C553D',NULL);" |
- "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" |
- "IL,base_version bigint default -1,server_version bigint default 0,loc" |
- "al_external_id bigint default 0,transaction_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" |
- "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" |
- "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " |
- "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" |
- "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" |
- "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" |
- "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" |
- "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" |
- "erver_specifics blob,server_unique_position blob,unique_position blob" |
- ",attachment_metadata blob);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defau" |
- "lt -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-131078,'" |
- "9010788312004066376x-6609234393368420856x',NULL,NULL);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion88Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',88);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB," |
- " transaction_version BIGINT default 0, context BLOB);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1,NULL);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0,local_exte" |
- "rnal_id bigint default 0,transaction_version bigint default 0,mtime b" |
- "igint default 0,server_mtime bigint default 0,ctime bigint default 0," |
- "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v" |
- "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_" |
- "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d" |
- "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d" |
- "el bit default 0,non_unique_name varchar,server_non_unique_name varch" |
- "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo" |
- "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s" |
- "pecifics blob,server_unique_position blob,unique_position blob,attach" |
- "ment_metadata blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0,0,0," |
- META_PROTO_TIMES_VALS(1) |
- ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X''" |
- ",X'',X'',NULL,X'2200',X'2200',NULL);" |
- "INSERT INTO 'metas' VALUES(6,694,694,6,0," |
- META_PROTO_TIMES_VALS(6) |
- ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The " |
- "Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D6532" |
- "73625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFFF" |
- "FFC000006754307476346749735A5734654D653273625336557753582F77673D',X'2" |
- "2247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582F" |
- "77673D',NULL);" |
- "INSERT INTO 'metas' VALUES(7,663,663,0,0," |
- META_PROTO_TIMES_VALS(7) |
- ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome'" |
- ",'Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'22" |
- "00',NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664,0,0," |
- META_PROTO_TIMES_VALS(8) |
- ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Book" |
- "marks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'C" |
- "2881000',NULL,X'2200',X'2200',NULL);" |
- "INSERT INTO 'metas' VALUES(9,665,665,1,0," |
- META_PROTO_TIMES_VALS(9) |
- ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Book" |
- "mark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C28810" |
- "00',NULL,X'2200',X'2200',NULL);" |
- "INSERT INTO 'metas' VALUES(10,666,666,2,0," |
- META_PROTO_TIMES_VALS(10) |
- ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Ot" |
- "her Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C288100" |
- "0',X'C2881000',NULL,X'2200',X'2200',NULL);" |
- "INSERT INTO 'metas' VALUES(11,683,683,8,0," |
- META_PROTO_TIMES_VALS(11) |
- ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Ho" |
- "me (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL," |
- "X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C288102" |
- "20A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741" |
- "',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F746" |
- "8657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D6" |
- "23579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF000005051" |
- "4C784A456D623579366267644237646A7A2B62314130346E493D',NULL);" |
- "INSERT INTO 'metas' VALUES(12,685,685,9,0," |
- META_PROTO_TIMES_VALS(12) |
- ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Ex" |
- "tra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6F" |
- "616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'2224" |
- "80000000000000007867626A704A646134635A6F616C376A49513338734B463248377" |
- "73D',X'222480000000000000007867626A704A646134635A6F616C376A4951333873" |
- "4B46324837773D',NULL);" |
- "INSERT INTO 'metas' VALUES(13,687,687,10,0," |
- META_PROTO_TIMES_VALS(13) |
- ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I" |
- "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | " |
- "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142" |
- "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156" |
- "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646'," |
- "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464" |
- "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304" |
- "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650" |
- "4179672B304A614A514B3452384A413D',NULL);" |
- "INSERT INTO 'metas' VALUES(14,692,692,11,0," |
- META_PROTO_TIMES_VALS(14) |
- ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T" |
- "he WebKit Open Source Project','The WebKit Open Source Project',NULL," |
- "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2" |
- "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101" |
- "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222" |
- "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C" |
- "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315" |
- "9552F6E644C553D',NULL);" |
- "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" |
- "IL,base_version bigint default -1,server_version bigint default 0,loc" |
- "al_external_id bigint default 0,transaction_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" |
- "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" |
- "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " |
- "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" |
- "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" |
- "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" |
- "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" |
- "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" |
- "erver_specifics blob,server_unique_position blob,unique_position blob" |
- ",attachment_metadata blob);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defau" |
- "lt -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-131078,'" |
- "9010788312004066376x-6609234393368420856x',NULL,NULL);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion89Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',89);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, tr" |
- "ansaction_version BIGINT default 0, context BLOB);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1,NULL);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0,local_exte" |
- "rnal_id bigint default 0,transaction_version bigint default 0,mtime b" |
- "igint default 0,server_mtime bigint default 0,ctime bigint default 0," |
- "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v" |
- "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_" |
- "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d" |
- "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d" |
- "el bit default 0,non_unique_name varchar,server_non_unique_name varch" |
- "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo" |
- "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s" |
- "pecifics blob,server_unique_position blob,unique_position blob,attach" |
- "ment_metadata blob,server_attachment_metadata blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0,0,0," |
- META_PROTO_TIMES_VALS(1) |
- ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',X'',NULL,X'2200'" |
- ",X'2200',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(6,694,694,6,0," |
- META_PROTO_TIMES_VALS(6) |
- ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The Internet','The Internet'" |
- ",NULL,NULL,X'6754307476346749735A5734654D653273625336557753582F77673D" |
- "',X'C2881000',X'C2881000',NULL,X'22247FFFFFFFFFC000006754307476346749" |
- "735A5734654D653273625336557753582F77673D',X'22247FFFFFFFFFC0000067543" |
- "07476346749735A5734654D653273625336557753582F77673D',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(7,663,663,0,0," |
- META_PROTO_TIMES_VALS(7) |
- ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google" |
- "_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'2200',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664,0,0," |
- META_PROTO_TIMES_VALS(8) |
- ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Bookmarks','Bookmarks','goog" |
- "le_chrome_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'" |
- "2200',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(9,665,665,1,0," |
- META_PROTO_TIMES_VALS(9) |
- ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'" |
- ",'bookmark_bar',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'2200'" |
- ",NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(10,666,666,2,0," |
- META_PROTO_TIMES_VALS(10) |
- ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Other Bookmarks','Other Boo" |
- "kmarks','other_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'220" |
- "0',X'2200',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(11,683,683,8,0," |
- META_PROTO_TIMES_VALS(11) |
- ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Home (The Chromium Projects" |
- ")','Home (The Chromium Projects)',NULL,NULL,X'50514C784A456D623579366" |
- "267644237646A7A2B62314130346E493D',X'C28810220A18687474703A2F2F646576" |
- "2E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1D687474703" |
- "A2F2F6465762E6368726F6D69756D2E6F72672F6F7468657212084146414756415346" |
- "',NULL,X'22247FFFFFFFFFF0000050514C784A456D623579366267644237646A7A2B" |
- "62314130346E493D',X'22247FFFFFFFFFF0000050514C784A456D623579366267644" |
- "237646A7A2B62314130346E493D',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(12,685,685,9,0," |
- META_PROTO_TIMES_VALS(12) |
- ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Extra Bookmarks','Extra Boo" |
- "kmarks',NULL,NULL,X'7867626A704A646134635A6F616C376A49513338734B46324" |
- "837773D',X'C2881000',X'C2881000',NULL,X'222480000000000000007867626A7" |
- "04A646134635A6F616C376A49513338734B46324837773D',X'222480000000000000" |
- "007867626A704A646134635A6F616C376A49513338734B46324837773D',NULL,NULL" |
- ");" |
- "INSERT INTO 'metas' VALUES(13,687,687,10,0," |
- META_PROTO_TIMES_VALS(13) |
- ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'ICANN | Internet Corporatio" |
- "n for Assigned Names and Numbers','ICANN | Internet Corporation for A" |
- "ssigned Names and Numbers',NULL,NULL,X'3142756B572F774176695650417967" |
- "2B304A614A514B3452384A413D',X'C28810240A15687474703A2F2F7777772E69636" |
- "16E6E2E636F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F" |
- "2F7777772E6963616E6E2E636F6D2F120744414146415346',NULL,X'22247FFFFFFF" |
- "FFF200003142756B572F7741766956504179672B304A614A514B3452384A413D',X'2" |
- "2247FFFFFFFFFF200003142756B572F7741766956504179672B304A614A514B345238" |
- "4A413D',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(14,692,692,11,0," |
- META_PROTO_TIMES_VALS(14) |
- ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'The WebKit Open Source Proj" |
- "ect','The WebKit Open Source Project',NULL,NULL,X'5A5678314E797636457" |
- "9524D3177494F7236563159552F6E644C553D',X'C288101A0A12687474703A2F2F77" |
- "65626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2F2F7765626" |
- "B69742E6F72672F781205504E473259',NULL,X'222480000000001000005A5678314" |
- "E7976364579524D3177494F7236563159552F6E644C553D',X'222480000000001000" |
- "005A5678314E7976364579524D3177494F7236563159552F6E644C553D',NULL,NULL" |
- ");" |
- "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" |
- "IL,base_version bigint default -1,server_version bigint default 0,loc" |
- "al_external_id bigint default 0,transaction_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" |
- "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" |
- "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " |
- "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" |
- "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" |
- "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" |
- "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" |
- "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" |
- "erver_specifics blob,server_unique_position blob,unique_position blob" |
- ",attachment_metadata blob,server_attachment_metadata blob);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defau" |
- "lt -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-131078,'" |
- "9010788312004066376x-6609234393368420856x',NULL,NULL);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-void MigrationTest::SetUpVersion90Database(sql::Connection* connection) { |
- ASSERT_TRUE(connection->is_open()); |
- ASSERT_TRUE(connection->BeginTransaction()); |
- ASSERT_TRUE(connection->Execute( |
- "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" |
- "INSERT INTO 'share_version' VALUES('nick@chromium.org',90);" |
- "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, tr" |
- "ansaction_version BIGINT default 0, context BLOB);" |
- "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1,NULL);" |
- "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" |
- "_version bigint default -1,server_version bigint default 0,local_exte" |
- "rnal_id bigint default 0,transaction_version bigint default 0,mtime b" |
- "igint default 0,server_mtime bigint default 0,ctime bigint default 0," |
- "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v" |
- "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_" |
- "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d" |
- "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d" |
- "el bit default 0,non_unique_name varchar,server_non_unique_name varch" |
- "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo" |
- "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s" |
- "pecifics blob,server_unique_position blob,unique_position blob,attach" |
- "ment_metadata blob,server_attachment_metadata blob);" |
- "INSERT INTO 'metas' VALUES(1,-1,0,0,0," |
- META_PROTO_TIMES_VALS(1) |
- ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',X'',NULL,X'2200'" |
- ",X'2200',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(6,694,694,6,0," |
- META_PROTO_TIMES_VALS(6) |
- ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The Internet','The Internet'" |
- ",NULL,NULL,X'6754307476346749735A5734654D653273625336557753582F77673D" |
- "',X'C2881000',X'C2881000',NULL,X'22247FFFFFFFFFC000006754307476346749" |
- "735A5734654D653273625336557753582F77673D',X'22247FFFFFFFFFC0000067543" |
- "07476346749735A5734654D653273625336557753582F77673D',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(7,663,663,0,0," |
- META_PROTO_TIMES_VALS(7) |
- ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google" |
- "_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'2200',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(8,664,664,0,0," |
- META_PROTO_TIMES_VALS(8) |
- ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Bookmarks','Bookmarks','goog" |
- "le_chrome_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'" |
- "2200',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(9,665,665,1,0," |
- META_PROTO_TIMES_VALS(9) |
- ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'" |
- ",'bookmark_bar',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'2200'" |
- ",NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(10,666,666,2,0," |
- META_PROTO_TIMES_VALS(10) |
- ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Other Bookmarks','Other Boo" |
- "kmarks','other_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'220" |
- "0',X'2200',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(11,683,683,8,0," |
- META_PROTO_TIMES_VALS(11) |
- ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Home (The Chromium Projects" |
- ")','Home (The Chromium Projects)',NULL,NULL,X'50514C784A456D623579366" |
- "267644237646A7A2B62314130346E493D',X'C28810220A18687474703A2F2F646576" |
- "2E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1D687474703" |
- "A2F2F6465762E6368726F6D69756D2E6F72672F6F7468657212084146414756415346" |
- "',NULL,X'22247FFFFFFFFFF0000050514C784A456D623579366267644237646A7A2B" |
- "62314130346E493D',X'22247FFFFFFFFFF0000050514C784A456D623579366267644" |
- "237646A7A2B62314130346E493D',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(12,685,685,9,0," |
- META_PROTO_TIMES_VALS(12) |
- ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Extra Bookmarks','Extra Boo" |
- "kmarks',NULL,NULL,X'7867626A704A646134635A6F616C376A49513338734B46324" |
- "837773D',X'C2881000',X'C2881000',NULL,X'222480000000000000007867626A7" |
- "04A646134635A6F616C376A49513338734B46324837773D',X'222480000000000000" |
- "007867626A704A646134635A6F616C376A49513338734B46324837773D',NULL,NULL" |
- ");" |
- "INSERT INTO 'metas' VALUES(13,687,687,10,0," |
- META_PROTO_TIMES_VALS(13) |
- ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'ICANN | Internet Corporatio" |
- "n for Assigned Names and Numbers','ICANN | Internet Corporation for A" |
- "ssigned Names and Numbers',NULL,NULL,X'3142756B572F774176695650417967" |
- "2B304A614A514B3452384A413D',X'C28810240A15687474703A2F2F7777772E69636" |
- "16E6E2E636F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F" |
- "2F7777772E6963616E6E2E636F6D2F120744414146415346',NULL,X'22247FFFFFFF" |
- "FFF200003142756B572F7741766956504179672B304A614A514B3452384A413D',X'2" |
- "2247FFFFFFFFFF200003142756B572F7741766956504179672B304A614A514B345238" |
- "4A413D',NULL,NULL);" |
- "INSERT INTO 'metas' VALUES(14,692,692,11,0," |
- META_PROTO_TIMES_VALS(14) |
- ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'The WebKit Open Source Proj" |
- "ect','The WebKit Open Source Project',NULL,NULL,X'5A5678314E797636457" |
- "9524D3177494F7236563159552F6E644C553D',X'C288101A0A12687474703A2F2F77" |
- "65626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2F2F7765626" |
- "B69742E6F72672F781205504E473259',NULL,X'222480000000001000005A5678314" |
- "E7976364579524D3177494F7236563159552F6E644C553D',X'222480000000001000" |
- "005A5678314E7976364579524D3177494F7236563159552F6E644C553D',NULL,NULL" |
- ");" |
- "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" |
- "IL,base_version bigint default -1,server_version bigint default 0,loc" |
- "al_external_id bigint default 0,transaction_version bigint default 0," |
- "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" |
- "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" |
- "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " |
- "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" |
- "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" |
- "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" |
- "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" |
- "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" |
- "erver_specifics blob,server_unique_position blob,unique_position blob" |
- ",attachment_metadata blob,server_attachment_metadata blob);" |
- "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" |
- "y TEXT, cache_guid TEXT, bag_of_chips BLOB);" |
- "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," |
- "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','9010788312004066376x-66092343" |
- "93368420856x',NULL);")); |
- ASSERT_TRUE(connection->CommitTransaction()); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion67To68) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- |
- SetUpVersion67Database(&connection); |
- |
- // Columns existing before version 67. |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "name")); |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "unsanitized_name")); |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "server_name")); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion67To68()); |
- ASSERT_EQ(68, dbs->GetVersion()); |
- ASSERT_TRUE(dbs->needs_column_refresh()); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion68To69) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion68Database(&connection); |
- |
- { |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion68To69()); |
- ASSERT_EQ(69, dbs->GetVersion()); |
- ASSERT_TRUE(dbs->needs_column_refresh()); |
- } |
- |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); |
- sql::Statement s(connection.GetUniqueStatement("SELECT non_unique_name," |
- "is_del, is_dir, id, specifics, server_specifics FROM metas " |
- "WHERE metahandle = 2")); |
- ASSERT_TRUE(s.Step()); |
- ASSERT_EQ("Deleted Item", s.ColumnString(0)); |
- ASSERT_TRUE(s.ColumnBool(1)); |
- ASSERT_FALSE(s.ColumnBool(2)); |
- ASSERT_EQ("s_ID_2", s.ColumnString(3)); |
- sync_pb::EntitySpecifics specifics; |
- specifics.ParseFromArray(s.ColumnBlob(4), s.ColumnByteLength(4)); |
- ASSERT_TRUE(specifics.has_bookmark()); |
- ASSERT_EQ("http://www.google.com/", specifics.bookmark().url()); |
- ASSERT_EQ("AASGASGA", specifics.bookmark().favicon()); |
- specifics.ParseFromArray(s.ColumnBlob(5), s.ColumnByteLength(5)); |
- ASSERT_TRUE(specifics.has_bookmark()); |
- ASSERT_EQ("http://www.google.com/2", specifics.bookmark().url()); |
- ASSERT_EQ("ASADGADGADG", specifics.bookmark().favicon()); |
- ASSERT_FALSE(s.Step()); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion69To70) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion69Database(&connection); |
- |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "singleton_tag")); |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_server_tag")); |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_client_tag")); |
- |
- { |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion69To70()); |
- ASSERT_EQ(70, dbs->GetVersion()); |
- ASSERT_TRUE(dbs->needs_column_refresh()); |
- } |
- |
- EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); |
- EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); |
- sql::Statement s(connection.GetUniqueStatement("SELECT id" |
- " FROM metas WHERE unique_server_tag = 'google_chrome'")); |
- ASSERT_TRUE(s.Step()); |
- EXPECT_EQ("s_ID_7", s.ColumnString(0)); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion70To71) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion70Database(&connection); |
- |
- ASSERT_TRUE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); |
- ASSERT_TRUE(connection.DoesColumnExist("share_info", "initial_sync_ended")); |
- ASSERT_FALSE(connection.DoesTableExist("models")); |
- |
- { |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion70To71()); |
- ASSERT_EQ(71, dbs->GetVersion()); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- } |
- |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", "initial_sync_ended")); |
- ASSERT_TRUE(connection.DoesTableExist("models")); |
- ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); |
- ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); |
- ASSERT_TRUE(connection.DoesColumnExist("models", "model_id")); |
- |
- sql::Statement s(connection.GetUniqueStatement("SELECT model_id, " |
- "initial_sync_ended, last_download_timestamp FROM models")); |
- ASSERT_TRUE(s.Step()); |
- std::string model_id = s.ColumnString(0); |
- EXPECT_EQ("C2881000", base::HexEncode(model_id.data(), model_id.size())) |
- << "Model ID is expected to be the empty BookmarkSpecifics proto."; |
- EXPECT_TRUE(s.ColumnBool(1)); |
- EXPECT_EQ(694, s.ColumnInt64(2)); |
- ASSERT_FALSE(s.Step()); |
-} |
- |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion71To72) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion71Database(&connection); |
- |
- ASSERT_TRUE(connection.DoesTableExist("extended_attributes")); |
- |
- { |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion71To72()); |
- ASSERT_EQ(72, dbs->GetVersion()); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- } |
- |
- ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion72To73) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion72Database(&connection); |
- |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); |
- |
- { |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion72To73()); |
- ASSERT_EQ(73, dbs->GetVersion()); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- } |
- |
- ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion73To74) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion73Database(&connection); |
- |
- ASSERT_FALSE( |
- connection.DoesColumnExist("share_info", "autofill_migration_state")); |
- ASSERT_FALSE( |
- connection.DoesColumnExist("share_info", |
- "bookmarks_added_during_autofill_migration")); |
- ASSERT_FALSE( |
- connection.DoesColumnExist("share_info", "autofill_migration_time")); |
- ASSERT_FALSE( |
- connection.DoesColumnExist("share_info", |
- "autofill_entries_added_during_migration")); |
- |
- ASSERT_FALSE( |
- connection.DoesColumnExist("share_info", |
- "autofill_profiles_added_during_migration")); |
- |
- { |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion73To74()); |
- ASSERT_EQ(74, dbs->GetVersion()); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- } |
- |
- ASSERT_TRUE( |
- connection.DoesColumnExist("share_info", "autofill_migration_state")); |
- ASSERT_TRUE( |
- connection.DoesColumnExist("share_info", |
- "bookmarks_added_during_autofill_migration")); |
- ASSERT_TRUE( |
- connection.DoesColumnExist("share_info", "autofill_migration_time")); |
- ASSERT_TRUE( |
- connection.DoesColumnExist("share_info", |
- "autofill_entries_added_during_migration")); |
- |
- ASSERT_TRUE( |
- connection.DoesColumnExist("share_info", |
- "autofill_profiles_added_during_migration")); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion74To75) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion74Database(&connection); |
- |
- ASSERT_FALSE(connection.DoesColumnExist("models", "progress_marker")); |
- ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); |
- |
- { |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion74To75()); |
- ASSERT_EQ(75, dbs->GetVersion()); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- } |
- |
- ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); |
- ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion75To76) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion75Database(&connection); |
- |
- ASSERT_TRUE( |
- connection.DoesColumnExist("share_info", "autofill_migration_state")); |
- ASSERT_TRUE(connection.DoesColumnExist("share_info", |
- "bookmarks_added_during_autofill_migration")); |
- ASSERT_TRUE( |
- connection.DoesColumnExist("share_info", "autofill_migration_time")); |
- ASSERT_TRUE(connection.DoesColumnExist("share_info", |
- "autofill_entries_added_during_migration")); |
- ASSERT_TRUE(connection.DoesColumnExist("share_info", |
- "autofill_profiles_added_during_migration")); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion75To76()); |
- ASSERT_EQ(76, dbs->GetVersion()); |
- ASSERT_TRUE(dbs->needs_column_refresh()); |
- // Cannot actual refresh columns due to version 76 not containing all |
- // necessary columns. |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion76To77) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion76Database(&connection); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- |
- EXPECT_EQ(GetExpectedLegacyMetaProtoTimes(INCLUDE_DELETED_ITEMS), |
- GetMetaProtoTimes(&connection)); |
- // Since the proto times are expected to be in a legacy format, they may not |
- // be compatible with ProtoTimeToTime, so we don't call ExpectTimes(). |
- |
- ASSERT_TRUE(dbs->MigrateVersion76To77()); |
- ASSERT_EQ(77, dbs->GetVersion()); |
- |
- EXPECT_EQ(GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS), |
- GetMetaProtoTimes(&connection)); |
- // Cannot actually load entries due to version 77 not having all required |
- // columns. |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion77To78) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion77Database(&connection); |
- |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "BASE_SERVER_SPECIFICS")); |
- |
- { |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion77To78()); |
- ASSERT_EQ(78, dbs->GetVersion()); |
- |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- } |
- |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion78To79) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion78Database(&connection); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion78To79()); |
- ASSERT_EQ(79, dbs->GetVersion()); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion79To80) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion79Database(&connection); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion79To80()); |
- ASSERT_EQ(80, dbs->GetVersion()); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- |
- // Ensure the bag_of_chips has been set. |
- Directory::MetahandlesMap handles_map; |
- JournalIndex delete_journals; |
- MetahandleSet metahandles_to_purge; |
- STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map); |
- Directory::KernelLoadInfo load_info; |
- |
- ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge, |
- &load_info)); |
- // Check that the initial value is the serialization of an empty ChipBag. |
- sync_pb::ChipBag chip_bag; |
- std::string serialized_chip_bag; |
- ASSERT_TRUE(chip_bag.SerializeToString(&serialized_chip_bag)); |
- EXPECT_EQ(serialized_chip_bag, load_info.kernel_info.bag_of_chips); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion80To81) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion80Database(&connection); |
- |
- sql::Statement s(connection.GetUniqueStatement( |
- "SELECT metahandle, server_position_in_parent " |
- "FROM metas WHERE unique_server_tag = 'google_chrome'")); |
- ASSERT_TRUE(s.Step()); |
- ASSERT_EQ(sql::COLUMN_TYPE_INTEGER, s.ColumnType(1)); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_TRUE(dbs->MigrateVersion80To81()); |
- ASSERT_EQ(81, dbs->GetVersion()); |
- |
- // Test that ordinal values are preserved correctly. |
- sql::Statement new_s(connection.GetUniqueStatement( |
- "SELECT metahandle, server_ordinal_in_parent " |
- "FROM metas WHERE unique_server_tag = 'google_chrome'")); |
- ASSERT_TRUE(new_s.Step()); |
- ASSERT_EQ(sql::COLUMN_TYPE_BLOB, new_s.ColumnType(1)); |
- |
- std::string expected_ordinal = Int64ToNodeOrdinal(1048576).ToInternalValue(); |
- std::string actual_ordinal; |
- new_s.ColumnBlobAsString(1, &actual_ordinal); |
- ASSERT_EQ(expected_ordinal, actual_ordinal); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion81To82) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion81Database(&connection); |
- ASSERT_FALSE(connection.DoesColumnExist("models", "transaction_version")); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_TRUE(dbs->MigrateVersion81To82()); |
- ASSERT_EQ(82, dbs->GetVersion()); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- |
- ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion82To83) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion82Database(&connection); |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "transaction_version")); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_TRUE(dbs->MigrateVersion82To83()); |
- ASSERT_EQ(83, dbs->GetVersion()); |
- |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion83To84) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion83Database(&connection); |
- ASSERT_FALSE(connection.DoesTableExist("deleted_metas")); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_TRUE(dbs->MigrateVersion83To84()); |
- ASSERT_EQ(84, dbs->GetVersion()); |
- |
- ASSERT_TRUE(connection.DoesTableExist("deleted_metas")); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion84To85) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion84Database(&connection); |
- ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_TRUE(dbs->MigrateVersion84To85()); |
- ASSERT_EQ(85, dbs->GetVersion()); |
- ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion85To86) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion85Database(&connection); |
- EXPECT_TRUE(connection.DoesColumnExist("metas", "next_id")); |
- EXPECT_TRUE(connection.DoesColumnExist("metas", "prev_id")); |
- EXPECT_TRUE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); |
- EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_position")); |
- EXPECT_FALSE(connection.DoesColumnExist("metas", "server_unique_position")); |
- EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_bookmark_tag")); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_TRUE(dbs->MigrateVersion85To86()); |
- EXPECT_EQ(86, dbs->GetVersion()); |
- EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_position")); |
- EXPECT_TRUE(connection.DoesColumnExist("metas", "server_unique_position")); |
- EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_bookmark_tag")); |
- ASSERT_TRUE(dbs->needs_column_refresh()); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion86To87) { |
- sql::Connection connection; |
- EXPECT_TRUE(connection.OpenInMemory()); |
- SetUpVersion86Database(&connection); |
- EXPECT_FALSE(connection.DoesColumnExist("metas", "attachment_metadata")); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- EXPECT_TRUE(dbs->MigrateVersion86To87()); |
- EXPECT_EQ(87, dbs->GetVersion()); |
- EXPECT_TRUE(connection.DoesColumnExist("metas", "attachment_metadata")); |
- EXPECT_TRUE(dbs->needs_column_refresh()); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion87To88) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion87Database(&connection); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_TRUE(dbs->MigrateVersion87To88()); |
- ASSERT_EQ(88, dbs->GetVersion()); |
- ASSERT_TRUE(connection.DoesColumnExist("models", "context")); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion88To89) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion88Database(&connection); |
- ASSERT_FALSE( |
- connection.DoesColumnExist("metas", "server_attachment_metadata")); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_TRUE(dbs->MigrateVersion88To89()); |
- ASSERT_EQ(89, dbs->GetVersion()); |
- EXPECT_TRUE( |
- connection.DoesColumnExist("metas", "server_attachment_metadata")); |
- EXPECT_TRUE(dbs->needs_column_refresh()); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MigrateVersion89To90) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion89Database(&connection); |
- ASSERT_TRUE(connection.DoesColumnExist("share_info", "db_create_version")); |
- ASSERT_TRUE(connection.DoesColumnExist("share_info", "db_create_time")); |
- ASSERT_TRUE(connection.DoesColumnExist("share_info", "next_id")); |
- ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_TRUE(dbs->MigrateVersion89To90()); |
- ASSERT_EQ(90, dbs->GetVersion()); |
- EXPECT_TRUE(dbs->needs_column_refresh()); |
- |
- ASSERT_TRUE(dbs->RefreshColumns()); |
- EXPECT_FALSE(dbs->needs_column_refresh()); |
- |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_version")); |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_time")); |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", "next_id")); |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); |
-} |
- |
-// The purpose of this test case is to make it easier to get a dump of the |
-// database so you can implement a SetUpVersionYDatabase method. Here's what |
-// you should do: |
-// |
-// 1. Say you're going from version X to version Y. Write the migration |
-// method MigrateVersionXToY. |
-// 2. Update the test below to call SetUpVersionXDatabase and then |
-// MigrateVersionXToY. You now have a database at version Y. Let's dump it. |
-// 3. Set a breakpoint to stop execution just after the connection is |
-// destroyed. Examine temp_dir_ to find the version Y database that was |
-// created on disk. E.g. (gdb) p temp_dir_.path().value().c_str() |
-// 4. Dump the database using the sqlite3 command line tool: |
-// > .output foo_dump.sql |
-// > .dump |
-// 5. Replace the timestamp columns with META_PROTO_TIMES(x) (or |
-// LEGACY_META_PROTO_TIMES(x) if before Version 77). Use this dump to write |
-// a SetupVersionYDatabase method. |
-TEST_F(DirectoryBackingStoreTest, MigrateToLatestAndDump) { |
- { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.Open(GetDatabasePath())); |
- SetUpVersion89Database(&connection); // Update this. |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_TRUE(dbs->MigrateVersion89To90()); // Update this. |
- ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); |
- EXPECT_EQ(90, dbs->GetVersion()); // Update this. |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- } |
- // Set breakpoint here. |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, DetectInvalidPosition) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- SetUpVersion86Database(&connection); |
- |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- ASSERT_EQ(86, dbs->GetVersion()); |
- |
- // Insert row with bad position. |
- sql::Statement s(connection.GetUniqueStatement( |
- "INSERT INTO metas " |
- "( id, metahandle, is_dir, ctime, mtime," |
- " unique_position, server_unique_position) " |
- "VALUES('c-invalid', 9999, 1, 0, 0, 'BAD_POS', 'BAD_POS')")); |
- ASSERT_TRUE(s.Run()); |
- |
- // Trying to unpack this entry should signal that the DB is corrupted. |
- Directory::MetahandlesMap handles_map; |
- JournalIndex delete_journals; |
- MetahandleSet metahandles_to_purge; |
- STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map); |
- Directory::KernelLoadInfo kernel_load_info; |
- ASSERT_EQ(FAILED_DATABASE_CORRUPT, |
- dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge, |
- &kernel_load_info)); |
-} |
- |
-TEST_P(MigrationTest, ToCurrentVersion) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.Open(GetDatabasePath())); |
- // Assume all old versions have an old page size. |
- connection.set_page_size(4096); |
- switch (GetParam()) { |
- case 67: |
- SetUpVersion67Database(&connection); |
- break; |
- case 68: |
- SetUpVersion68Database(&connection); |
- break; |
- case 69: |
- SetUpVersion69Database(&connection); |
- break; |
- case 70: |
- SetUpVersion70Database(&connection); |
- break; |
- case 71: |
- SetUpVersion71Database(&connection); |
- break; |
- case 72: |
- SetUpVersion72Database(&connection); |
- break; |
- case 73: |
- SetUpVersion73Database(&connection); |
- break; |
- case 74: |
- SetUpVersion74Database(&connection); |
- break; |
- case 75: |
- SetUpVersion75Database(&connection); |
- break; |
- case 76: |
- SetUpVersion76Database(&connection); |
- break; |
- case 77: |
- SetUpVersion77Database(&connection); |
- break; |
- case 78: |
- SetUpVersion78Database(&connection); |
- break; |
- case 79: |
- SetUpVersion79Database(&connection); |
- break; |
- case 80: |
- SetUpVersion80Database(&connection); |
- break; |
- case 81: |
- SetUpVersion81Database(&connection); |
- break; |
- case 82: |
- SetUpVersion82Database(&connection); |
- break; |
- case 83: |
- SetUpVersion83Database(&connection); |
- break; |
- case 84: |
- SetUpVersion84Database(&connection); |
- break; |
- case 85: |
- SetUpVersion85Database(&connection); |
- break; |
- case 86: |
- SetUpVersion86Database(&connection); |
- break; |
- case 87: |
- SetUpVersion87Database(&connection); |
- break; |
- case 88: |
- SetUpVersion88Database(&connection); |
- break; |
- case 89: |
- SetUpVersion89Database(&connection); |
- break; |
- case 90: |
- SetUpVersion90Database(&connection); |
- break; |
- default: |
- // If you see this error, it may mean that you've increased the |
- // database version number but you haven't finished adding unit tests |
- // for the database migration code. You need to need to supply a |
- // SetUpVersionYDatabase function with a dump of the test database |
- // at the new schema. See the MigrateToLatestAndDump test case. |
- FAIL() << "Need to supply database dump for version " << GetParam(); |
- } |
- connection.Close(); |
- |
- syncable::Directory::KernelLoadInfo dir_info; |
- Directory::MetahandlesMap handles_map; |
- JournalIndex delete_journals; |
- MetahandleSet metahandles_to_purge; |
- STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map); |
- |
- { |
- std::unique_ptr<OnDiskDirectoryBackingStore> dbs( |
- new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath())); |
- ASSERT_EQ(OPENED, dbs->Load(&handles_map, &delete_journals, |
- &metahandles_to_purge, &dir_info)); |
- if (!metahandles_to_purge.empty()) |
- dbs->DeleteEntries(DirectoryBackingStore::METAS_TABLE, |
- metahandles_to_purge); |
- ASSERT_FALSE(dbs->needs_column_refresh()); |
- ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); |
- int pageSize = 0; |
- ASSERT_TRUE(dbs->GetDatabasePageSize(&pageSize)); |
- ASSERT_EQ(kCurrentPageSizeKB, pageSize); |
- } |
- |
- ASSERT_TRUE(connection.Open(GetDatabasePath())); |
- |
- // Columns deleted in Version 67. |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "name")); |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "unsanitized_name")); |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "server_name")); |
- |
- // Columns added in Version 68. |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); |
- |
- // Columns deleted in Version 68. |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "is_bookmark_object")); |
- ASSERT_FALSE(connection.DoesColumnExist("metas", |
- "server_is_bookmark_object")); |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_favicon")); |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_url")); |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "server_bookmark_url")); |
- |
- // Renamed a column in Version 70 |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "singleton_tag")); |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); |
- |
- // Removed extended attributes in Version 72. |
- ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); |
- |
- // Column replaced in version 75. |
- ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); |
- ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); |
- |
- // Columns removed in version 76. |
- ASSERT_FALSE( |
- connection.DoesColumnExist("share_info", "autofill_migration_state")); |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", |
- "bookmarks_added_during_autofill_migration")); |
- ASSERT_FALSE( |
- connection.DoesColumnExist("share_info", "autofill_migration_time")); |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", |
- "autofill_entries_added_during_migration")); |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", |
- "autofill_profiles_added_during_migration")); |
- |
- // Column added in version 78. |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); |
- |
- // Column added in version 82. |
- ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); |
- |
- // Column added in version 83. |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); |
- |
- // Table added in version 84. |
- ASSERT_TRUE(connection.DoesTableExist("deleted_metas")); |
- |
- // Column removed in version 85. |
- ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); |
- |
- // Columns removed in version 86. |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "next_id")); |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "prev_id")); |
- ASSERT_FALSE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); |
- |
- // Column added in version 87. |
- ASSERT_TRUE(connection.DoesColumnExist("metas", "attachment_metadata")); |
- |
- // Column added in version 88. |
- ASSERT_TRUE(connection.DoesColumnExist("models", "context")); |
- |
- // Column added in version 89. |
- ASSERT_TRUE( |
- connection.DoesColumnExist("metas", "server_attachment_metadata")); |
- |
- // Columns removed in version 90. |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_version")); |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_time")); |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", "next_id")); |
- ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); |
- |
- // Check download_progress state (v75 migration) |
- ASSERT_EQ(694, |
- dir_info.kernel_info.download_progress[BOOKMARKS] |
- .timestamp_token_for_migration()); |
- ASSERT_FALSE( |
- dir_info.kernel_info.download_progress[BOOKMARKS] |
- .has_token()); |
- ASSERT_EQ(32904, |
- dir_info.kernel_info.download_progress[BOOKMARKS] |
- .data_type_id()); |
- ASSERT_FALSE( |
- dir_info.kernel_info.download_progress[THEMES] |
- .has_timestamp_token_for_migration()); |
- ASSERT_TRUE( |
- dir_info.kernel_info.download_progress[THEMES] |
- .has_token()); |
- ASSERT_TRUE( |
- dir_info.kernel_info.download_progress[THEMES] |
- .token().empty()); |
- ASSERT_EQ(41210, |
- dir_info.kernel_info.download_progress[THEMES] |
- .data_type_id()); |
- |
- // Check metas |
- EXPECT_EQ(GetExpectedMetaProtoTimes(DONT_INCLUDE_DELETED_ITEMS), |
- GetMetaProtoTimes(&connection)); |
- ExpectTimes(handles_map, GetExpectedMetaTimes()); |
- |
- Directory::MetahandlesMap::iterator it = handles_map.find(1); |
- ASSERT_TRUE(it != handles_map.end()); |
- ASSERT_EQ(1, it->second->ref(META_HANDLE)); |
- EXPECT_TRUE(it->second->ref(ID).IsRoot()); |
- EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); |
- EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); |
- EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); |
- |
- // Items 2, 4, and 5 were deleted. |
- it = handles_map.find(2); |
- ASSERT_TRUE(it == handles_map.end()); |
- it = handles_map.find(4); |
- ASSERT_TRUE(it == handles_map.end()); |
- it = handles_map.find(5); |
- ASSERT_TRUE(it == handles_map.end()); |
- |
- it = handles_map.find(6); |
- ASSERT_EQ(6, it->second->ref(META_HANDLE)); |
- EXPECT_TRUE(it->second->ref(IS_DIR)); |
- EXPECT_TRUE(it->second->ref(SERVER_IS_DIR)); |
- EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); |
- EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); |
- EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); |
- EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); |
- EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_EQ(UniquePosition::kSuffixLength, |
- it->second->ref(UNIQUE_BOOKMARK_TAG).length()); |
- EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); |
- EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); |
- |
- it = handles_map.find(7); |
- ASSERT_EQ(7, it->second->ref(META_HANDLE)); |
- EXPECT_EQ("google_chrome", it->second->ref(UNIQUE_SERVER_TAG)); |
- EXPECT_FALSE(it->second->ref(SPECIFICS).has_bookmark()); |
- EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); |
- // Make sure we didn't assign positions to google_chrome. |
- EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); |
- EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); |
- EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); |
- |
- it = handles_map.find(8); |
- ASSERT_EQ(8, it->second->ref(META_HANDLE)); |
- EXPECT_EQ("google_chrome_bookmarks", it->second->ref(UNIQUE_SERVER_TAG)); |
- EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); |
- EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); |
- ASSERT_EQ(it->second->ref(ID).value(), "s_ID_8"); |
- // Make sure we didn't mistake the bookmark root node for a real bookmark. |
- EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); |
- EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); |
- EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); |
- |
- it = handles_map.find(9); |
- ASSERT_EQ(9, it->second->ref(META_HANDLE)); |
- EXPECT_EQ("bookmark_bar", it->second->ref(UNIQUE_SERVER_TAG)); |
- EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); |
- EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); |
- // Make sure we didn't assign positions to bookmark_bar. |
- EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); |
- EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); |
- EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); |
- |
- it = handles_map.find(10); |
- ASSERT_EQ(10, it->second->ref(META_HANDLE)); |
- EXPECT_FALSE(it->second->ref(IS_DEL)); |
- EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); |
- EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); |
- EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); |
- EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); |
- EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); |
- EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); |
- EXPECT_EQ("other_bookmarks", it->second->ref(UNIQUE_SERVER_TAG)); |
- EXPECT_EQ("Other Bookmarks", it->second->ref(NON_UNIQUE_NAME)); |
- EXPECT_EQ("Other Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME)); |
- ASSERT_EQ(it->second->ref(ID).value(), "s_ID_10"); |
- EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); |
- EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); |
- // Make sure we didn't assign positions to server-created folders, either. |
- EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); |
- EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); |
- EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); |
- |
- it = handles_map.find(11); |
- ASSERT_EQ(11, it->second->ref(META_HANDLE)); |
- EXPECT_FALSE(it->second->ref(IS_DEL)); |
- EXPECT_FALSE(it->second->ref(IS_DIR)); |
- EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); |
- EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); |
- EXPECT_EQ("http://dev.chromium.org/", |
- it->second->ref(SPECIFICS).bookmark().url()); |
- EXPECT_EQ("AGATWA", it->second->ref(SPECIFICS).bookmark().favicon()); |
- EXPECT_EQ("http://dev.chromium.org/other", |
- it->second->ref(SERVER_SPECIFICS).bookmark().url()); |
- EXPECT_EQ("AFAGVASF", it->second->ref(SERVER_SPECIFICS).bookmark().favicon()); |
- EXPECT_EQ("", it->second->ref(UNIQUE_SERVER_TAG)); |
- EXPECT_EQ("Home (The Chromium Projects)", it->second->ref(NON_UNIQUE_NAME)); |
- EXPECT_EQ("Home (The Chromium Projects)", |
- it->second->ref(SERVER_NON_UNIQUE_NAME)); |
- EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_EQ(UniquePosition::kSuffixLength, |
- it->second->ref(UNIQUE_BOOKMARK_TAG).length()); |
- EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); |
- |
- it = handles_map.find(12); |
- ASSERT_EQ(12, it->second->ref(META_HANDLE)); |
- EXPECT_FALSE(it->second->ref(IS_DEL)); |
- EXPECT_TRUE(it->second->ref(IS_DIR)); |
- EXPECT_EQ("Extra Bookmarks", it->second->ref(NON_UNIQUE_NAME)); |
- EXPECT_EQ("Extra Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME)); |
- EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); |
- EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); |
- EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); |
- EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); |
- EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); |
- EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); |
- EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_EQ(UniquePosition::kSuffixLength, |
- it->second->ref(UNIQUE_BOOKMARK_TAG).length()); |
- EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); |
- EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); |
- |
- it = handles_map.find(13); |
- ASSERT_EQ(13, it->second->ref(META_HANDLE)); |
- EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_EQ(UniquePosition::kSuffixLength, |
- it->second->ref(UNIQUE_BOOKMARK_TAG).length()); |
- EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); |
- EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); |
- |
- it = handles_map.find(14); |
- ASSERT_EQ(14, it->second->ref(META_HANDLE)); |
- EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_EQ(UniquePosition::kSuffixLength, |
- it->second->ref(UNIQUE_BOOKMARK_TAG).length()); |
- EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); |
- EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); |
- |
- ASSERT_EQ(static_cast<size_t>(10), handles_map.size()); |
- |
- // Make sure that the syncable::Directory and the migration code agree on |
- // which items should or should not have unique position values. This test |
- // may become obsolete if the directory's definition of that function |
- // changes, but, until then, this is a useful test. |
- for (it = handles_map.begin(); it != handles_map.end(); it++) { |
- SCOPED_TRACE(it->second->ref(ID)); |
- if (it->second->ShouldMaintainPosition()) { |
- EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_FALSE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); |
- } else { |
- EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); |
- EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); |
- EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); |
- } |
- } |
-} |
- |
-INSTANTIATE_TEST_CASE_P(DirectoryBackingStore, MigrationTest, |
- testing::Range(67, kCurrentDBVersion + 1)); |
- |
-TEST_F(DirectoryBackingStoreTest, ModelTypeIds) { |
- ModelTypeSet protocol_types = ProtocolTypes(); |
- for (ModelTypeSet::Iterator iter = protocol_types.First(); iter.Good(); |
- iter.Inc()) { |
- std::string model_id = |
- TestDirectoryBackingStore::ModelTypeEnumToModelId(iter.Get()); |
- EXPECT_EQ(iter.Get(), |
- TestDirectoryBackingStore::ModelIdToModelTypeEnum(model_id.data(), |
- model_id.size())); |
- } |
-} |
- |
-namespace { |
- |
-class OnDiskDirectoryBackingStoreForTest : public OnDiskDirectoryBackingStore { |
- public: |
- OnDiskDirectoryBackingStoreForTest(const std::string& dir_name, |
- const base::FilePath& backing_filepath); |
- ~OnDiskDirectoryBackingStoreForTest() override; |
- bool DidFailFirstOpenAttempt(); |
- |
- protected: |
- void ReportFirstTryOpenFailure() override; |
- |
- private: |
- bool first_open_failed_; |
-}; |
- |
-OnDiskDirectoryBackingStoreForTest::OnDiskDirectoryBackingStoreForTest( |
- const std::string& dir_name, |
- const base::FilePath& backing_filepath) : |
- OnDiskDirectoryBackingStore(dir_name, backing_filepath), |
- first_open_failed_(false) { } |
- |
-OnDiskDirectoryBackingStoreForTest::~OnDiskDirectoryBackingStoreForTest() { } |
- |
-void OnDiskDirectoryBackingStoreForTest::ReportFirstTryOpenFailure() { |
- // Do nothing, just like we would in release-mode. In debug mode, we DCHECK. |
- first_open_failed_ = true; |
-} |
- |
-bool OnDiskDirectoryBackingStoreForTest::DidFailFirstOpenAttempt() { |
- return first_open_failed_; |
-} |
- |
-} // namespace |
- |
-// This is a whitebox test intended to exercise the code path where the on-disk |
-// directory load code decides to delete the current directory and start fresh. |
-// |
-// This is considered "minor" corruption because the database recreation is |
-// expected to succeed. The alternative, where recreation does not succeed (ie. |
-// due to read-only file system), is not tested here. |
-TEST_F(DirectoryBackingStoreTest, MinorCorruption) { |
- { |
- std::unique_ptr<OnDiskDirectoryBackingStore> dbs( |
- new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath())); |
- EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); |
- } |
- |
- // Corrupt the root node. |
- { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.Open(GetDatabasePath())); |
- ASSERT_TRUE(connection.Execute( |
- "UPDATE metas SET parent_id='bogus' WHERE id = 'r';")); |
- } |
- |
- { |
- std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( |
- new OnDiskDirectoryBackingStoreForTest(GetUsername(), |
- GetDatabasePath())); |
- |
- EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); |
- EXPECT_TRUE(dbs->DidFailFirstOpenAttempt()); |
- } |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, MinorCorruptionAndUpgrade) { |
- { |
- std::unique_ptr<OnDiskDirectoryBackingStore> dbs( |
- new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath())); |
- EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); |
- } |
- |
- // Make the node look outdated with an invalid version. |
- { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.Open(GetDatabasePath())); |
- ASSERT_TRUE(connection.Execute("UPDATE share_version SET data = 0;")); |
- ASSERT_TRUE(connection.Execute("PRAGMA page_size=4096;")); |
- ASSERT_TRUE(connection.Execute("VACUUM;")); |
- } |
- |
- { |
- std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( |
- new OnDiskDirectoryBackingStoreForTest(GetUsername(), |
- GetDatabasePath())); |
- dbs->SetCatastrophicErrorHandler(base::Bind(&base::DoNothing)); |
- |
- EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); |
- EXPECT_TRUE(dbs->DidFailFirstOpenAttempt()); |
- |
- int page_size = 0; |
- ASSERT_TRUE(dbs->GetDatabasePageSize(&page_size)); |
- EXPECT_EQ(kCurrentPageSizeKB, page_size); |
- } |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, DeleteEntries) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.OpenInMemory()); |
- |
- SetUpCurrentDatabaseAndCheckVersion(&connection); |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- Directory::MetahandlesMap handles_map; |
- JournalIndex delete_journals; |
- MetahandleSet metahandles_to_purge; |
- Directory::KernelLoadInfo kernel_load_info; |
- STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map); |
- |
- dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge, |
- &kernel_load_info); |
- size_t initial_size = handles_map.size(); |
- ASSERT_LT(0U, initial_size) << "Test requires handles_map to delete."; |
- int64_t first_to_die = handles_map.begin()->second->ref(META_HANDLE); |
- MetahandleSet to_delete; |
- to_delete.insert(first_to_die); |
- EXPECT_TRUE(dbs->DeleteEntries(to_delete)); |
- |
- STLDeleteValues(&handles_map); |
- metahandles_to_purge.clear(); |
- dbs->LoadEntries(&handles_map, &metahandles_to_purge); |
- |
- EXPECT_EQ(initial_size - 1, handles_map.size()); |
- bool delete_failed = false; |
- for (Directory::MetahandlesMap::iterator it = handles_map.begin(); |
- it != handles_map.end(); ++it) { |
- if (it->first == first_to_die) { |
- delete_failed = true; |
- break; |
- } |
- } |
- EXPECT_FALSE(delete_failed); |
- |
- to_delete.clear(); |
- for (Directory::MetahandlesMap::iterator it = handles_map.begin(); |
- it != handles_map.end(); ++it) { |
- to_delete.insert(it->first); |
- } |
- |
- EXPECT_TRUE(dbs->DeleteEntries(to_delete)); |
- |
- STLDeleteValues(&handles_map); |
- metahandles_to_purge.clear(); |
- dbs->LoadEntries(&handles_map, &metahandles_to_purge); |
- EXPECT_EQ(0U, handles_map.size()); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, GenerateCacheGUID) { |
- const std::string& guid1 = TestDirectoryBackingStore::GenerateCacheGUID(); |
- const std::string& guid2 = TestDirectoryBackingStore::GenerateCacheGUID(); |
- EXPECT_EQ(24U, guid1.size()); |
- EXPECT_EQ(24U, guid2.size()); |
- // In theory this test can fail, but it won't before the universe |
- // dies of heat death. |
- EXPECT_NE(guid1, guid2); |
-} |
- |
-TEST_F(DirectoryBackingStoreTest, IncreaseDatabasePageSizeFrom4KTo32K) { |
- sql::Connection connection; |
- ASSERT_TRUE(connection.Open(GetDatabasePath())); |
- |
- SetUpCurrentDatabaseAndCheckVersion(&connection); |
- std::unique_ptr<TestDirectoryBackingStore> dbs( |
- new TestDirectoryBackingStore(GetUsername(), &connection)); |
- Directory::MetahandlesMap handles_map; |
- JournalIndex delete_journals; |
- MetahandleSet metahandles_to_purge; |
- Directory::KernelLoadInfo kernel_load_info; |
- STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map); |
- |
- DirOpenResult open_result = dbs->Load( |
- &handles_map, &delete_journals, &metahandles_to_purge, &kernel_load_info); |
- EXPECT_EQ(open_result, OPENED); |
- |
- // Set up database's page size to 4096 |
- EXPECT_TRUE(dbs->db_->Execute("PRAGMA page_size=4096;")); |
- EXPECT_TRUE(dbs->Vacuum()); |
- |
- // Check if update is successful. |
- int pageSize = 0; |
- EXPECT_TRUE(dbs->GetDatabasePageSize(&pageSize)); |
- EXPECT_NE(kCurrentPageSizeKB, pageSize); |
- EXPECT_TRUE(dbs->UpdatePageSizeIfNecessary()); |
- pageSize = 0; |
- EXPECT_TRUE(dbs->GetDatabasePageSize(&pageSize)); |
- EXPECT_EQ(kCurrentPageSizeKB, pageSize); |
-} |
- |
-// See that a catastrophic error handler remains set across instances of the |
-// underlying sql:Connection. |
-TEST_F(DirectoryBackingStoreTest, CatastrophicErrorHandler_KeptAcrossReset) { |
- std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( |
- new OnDiskDirectoryBackingStoreForTest(GetUsername(), GetDatabasePath())); |
- // See that by default there is no catastrophic error handler. |
- ASSERT_FALSE(dbs->db_->has_error_callback()); |
- // Set one and see that it was set. |
- dbs->SetCatastrophicErrorHandler( |
- base::Bind(&CatastrophicErrorHandler, nullptr)); |
- ASSERT_TRUE(dbs->db_->has_error_callback()); |
- // Recreate the Connection and see that the handler remains set. |
- dbs->ResetAndCreateConnection(); |
- ASSERT_TRUE(dbs->db_->has_error_callback()); |
-} |
- |
-// Verify that database corruption encountered during Load will trigger the |
-// catastrohpic error handler. |
-TEST_F(DirectoryBackingStoreTest, |
- CatastrophicErrorHandler_InvocationDuringLoad) { |
- bool was_called = false; |
- const base::Closure handler = |
- base::Bind(&CatastrophicErrorHandler, &was_called); |
- { |
- std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( |
- new OnDiskDirectoryBackingStoreForTest(GetUsername(), |
- GetDatabasePath())); |
- dbs->SetCatastrophicErrorHandler(handler); |
- ASSERT_TRUE(dbs->db_->has_error_callback()); |
- // Load the DB, and save one entry. |
- ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); |
- ASSERT_FALSE(dbs->DidFailFirstOpenAttempt()); |
- Directory::SaveChangesSnapshot snapshot; |
- snapshot.dirty_metas.insert(CreateEntry(2, "").release()); |
- ASSERT_TRUE(dbs->SaveChanges(snapshot)); |
- } |
- |
- base::RunLoop().RunUntilIdle(); |
- // No catastrophic errors have happened. See that it hasn't be called yet. |
- ASSERT_FALSE(was_called); |
- |
- // Corrupt the DB. Some forms of corruption (like this one) will be detected |
- // upon loading the Sync DB. |
- ASSERT_TRUE(sql::test::CorruptSizeInHeader(GetDatabasePath())); |
- |
- { |
- std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( |
- new OnDiskDirectoryBackingStoreForTest(GetUsername(), |
- GetDatabasePath())); |
- dbs->SetCatastrophicErrorHandler(handler); |
- ASSERT_TRUE(dbs->db_->has_error_callback()); |
- ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); |
- |
- // See that the first open failed as expected. |
- ASSERT_TRUE(dbs->DidFailFirstOpenAttempt()); |
- } |
- |
- // At this point the handler has been posted but not executed. |
- ASSERT_FALSE(was_called); |
- // Pump the message loop and see that it is executed. |
- base::RunLoop().RunUntilIdle(); |
- ASSERT_TRUE(was_called); |
-} |
- |
-// Verify that database corruption encountered during SaveChanges will trigger |
-// the catastrohpic error handler. |
-TEST_F(DirectoryBackingStoreTest, |
- CatastrophicErrorHandler_InvocationDuringSaveChanges) { |
- bool was_called = false; |
- const base::Closure handler = |
- base::Bind(&CatastrophicErrorHandler, &was_called); |
- // Create a DB with many entries. |
- std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( |
- new OnDiskDirectoryBackingStoreForTest(GetUsername(), GetDatabasePath())); |
- dbs->SetCatastrophicErrorHandler(handler); |
- ASSERT_TRUE(dbs->db_->has_error_callback()); |
- ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); |
- ASSERT_FALSE(dbs->DidFailFirstOpenAttempt()); |
- Directory::SaveChangesSnapshot snapshot; |
- const std::string suffix(400, 'o'); |
- for (int i = 0; i < corruption_testing::kNumEntriesRequiredForCorruption; |
- ++i) { |
- std::unique_ptr<EntryKernel> large_entry = CreateEntry(i, suffix); |
- snapshot.dirty_metas.insert(large_entry.release()); |
- } |
- ASSERT_TRUE(dbs->SaveChanges(snapshot)); |
- // Corrupt it. |
- ASSERT_TRUE(corruption_testing::CorruptDatabase(GetDatabasePath())); |
- // Attempt to save all those entries again. See that it fails (because of the |
- // corruption). |
- // |
- // If this test fails because SaveChanges returned true, it may mean you need |
- // to increase the number of entries written to the DB. See also |
- // |kNumEntriesRequiredForCorruption|. |
- ASSERT_FALSE(dbs->SaveChanges(snapshot)); |
- // At this point the handler has been posted but not executed. |
- ASSERT_FALSE(was_called); |
- // Pump the message loop and see that it is executed. |
- base::RunLoop().RunUntilIdle(); |
- ASSERT_TRUE(was_called); |
-} |
- |
-} // namespace syncable |
-} // namespace syncer |