directory_backing_store_unittest.cc revision e5d81f57cb97b3b6b7fccc9c5610d21eb81db09d
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/file_util.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/stl_util.h" 14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string_number_conversions.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sql/connection.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sql/statement.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "sync/base/sync_export.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/internal_api/public/base/node_ordinal.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/protocol/bookmark_specifics.pb.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/protocol/sync.pb.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/syncable/directory_backing_store.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/syncable/on_disk_directory_backing_store.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/syncable/syncable-inl.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/test/test_directory_backing_store.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/util/time.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest-param-test.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncer { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncable { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SYNC_EXPORT_PRIVATE extern const int32 kCurrentDBVersion; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MigrationTest : public testing::TestWithParam<int> { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp() { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string GetUsername() { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return "nick@chromium.org"; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath GetDatabasePath() { 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return temp_dir_.path().Append(Directory::kSyncDatabaseFilename); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool LoadAndIgnoreReturnedData(DirectoryBackingStore *dbs) { 49868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap tmp_handles_map; 50868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) JournalIndex delete_journals; 51868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> deleter(&tmp_handles_map); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo kernel_load_info; 53868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return dbs->Load(&tmp_handles_map, &delete_journals, &kernel_load_info) == 54868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) OPENED; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion67Database(sql::Connection* connection); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion68Database(sql::Connection* connection); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion69Database(sql::Connection* connection); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion70Database(sql::Connection* connection); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion71Database(sql::Connection* connection); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion72Database(sql::Connection* connection); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion73Database(sql::Connection* connection); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion74Database(sql::Connection* connection); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion75Database(sql::Connection* connection); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion76Database(sql::Connection* connection); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion77Database(sql::Connection* connection); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion78Database(sql::Connection* connection); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion79Database(sql::Connection* connection); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion80Database(sql::Connection* connection); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion81Database(sql::Connection* connection); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion82Database(sql::Connection* connection); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetUpVersion83Database(sql::Connection* connection); 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetUpVersion84Database(sql::Connection* connection); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetUpVersion85Database(sql::Connection* connection); 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetUpVersion86Database(sql::Connection* connection); 77e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch void SetUpVersion87Database(sql::Connection* connection); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpCurrentDatabaseAndCheckVersion(sql::Connection* connection) { 80e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch SetUpVersion87Database(connection); // Prepopulates data. 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), connection)); 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ScopedTempDir temp_dir_; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DirectoryBackingStoreTest : public MigrationTest {}; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// On Windows, we used to store timestamps in FILETIME format. 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_1 129079956640320000LL 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_2 128976886618480000LL 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_4 129002163642690000LL 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_5 129001555500000000LL 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_6 129053976170000000LL 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_7 128976864758480000LL 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_8 128976864758480000LL 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_9 128976864758480000LL 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_10 128976864758480000LL 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_11 129079956948440000LL 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_12 129079957513650000LL 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_13 129079957985300000LL 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_14 129079958383000000LL 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_1 "129079956640320000" 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_2 "128976886618480000" 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_4 "129002163642690000" 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_5 "129001555500000000" 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_6 "129053976170000000" 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_7 "128976864758480000" 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_8 "128976864758480000" 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_9 "128976864758480000" 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_10 "128976864758480000" 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_11 "129079956948440000" 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_12 "129079957513650000" 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_13 "129079957985300000" 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_14 "129079958383000000" 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Generated via: 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ruby -ane '$F[1].sub!("LEGACY_", ""); $F[2] = Integer($F[2].sub!("LL", "")) / 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 10000 - 11644473600000; print "#{$F[0]} #{$F[1]} #{$F[2]}LL"' 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Magic numbers taken from 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://stackoverflow.com/questions/5398557/ 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// java-library-for-dealing-with-win32-filetime . 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Now we store them in Java format (ms since the Unix epoch). 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_1 1263522064032LL 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_2 1253215061848LL 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_4 1255742764269LL 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_5 1255681950000LL 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_6 1260924017000LL 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_7 1253212875848LL 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_8 1253212875848LL 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_9 1253212875848LL 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_10 1253212875848LL 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_11 1263522094844LL 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_12 1263522151365LL 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_13 1263522198530LL 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_14 1263522238300LL 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_1 "1263522064032" 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_2 "1253215061848" 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_4 "1255742764269" 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_5 "1255681950000" 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_6 "1260924017000" 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_7 "1253212875848" 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_8 "1253212875848" 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_9 "1253212875848" 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_10 "1253212875848" 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_11 "1263522094844" 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_12 "1263522151365" 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_13 "1263522198530" 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_14 "1263522238300" 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// On other platforms, we used to store timestamps in time_t format (s 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// since the Unix epoch). 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_1 1263522064LL 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_2 1253215061LL 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_4 1255742764LL 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_5 1255681950LL 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_6 1260924017LL 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_7 1253212875LL 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_8 1253212875LL 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_9 1253212875LL 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_10 1253212875LL 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_11 1263522094LL 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_12 1263522151LL 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_13 1263522198LL 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_14 1263522238LL 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_1 "1263522064" 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_2 "1253215061" 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_4 "1255742764" 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_5 "1255681950" 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_6 "1260924017" 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_7 "1253212875" 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_8 "1253212875" 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_9 "1253212875" 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_10 "1253212875" 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_11 "1263522094" 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_12 "1263522151" 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_13 "1263522198" 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_14 "1263522238" 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Now we store them in Java format (ms since the Unix epoch). 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_1 1263522064000LL 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_2 1253215061000LL 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_4 1255742764000LL 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_5 1255681950000LL 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_6 1260924017000LL 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_7 1253212875000LL 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_8 1253212875000LL 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_9 1253212875000LL 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_10 1253212875000LL 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_11 1263522094000LL 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_12 1263522151000LL 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_13 1263522198000LL 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_14 1263522238000LL 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_1 "1263522064000" 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_2 "1253215061000" 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_4 "1255742764000" 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_5 "1255681950000" 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_6 "1260924017000" 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_7 "1253212875000" 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_8 "1253212875000" 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_9 "1253212875000" 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_10 "1253212875000" 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_11 "1263522094000" 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_12 "1263522151000" 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_13 "1263522198000" 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_14 "1263522238000" 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper macros for the database dumps in the SetUpVersion*Database 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// functions. 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES(x) LEGACY_META_PROTO_TIMES_##x 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR(x) LEGACY_META_PROTO_TIMES_STR_##x 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_PROTO_TIME_VALS(x) \ 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES(x) META_PROTO_TIMES_##x 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR(x) META_PROTO_TIMES_STR_##x 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_VALS(x) \ 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper functions for testing. 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum ShouldIncludeDeletedItems { 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) INCLUDE_DELETED_ITEMS, 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DONT_INCLUDE_DELETED_ITEMS 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected legacy time (in proto 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// format). 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetExpectedLegacyMetaProtoTimes( 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ShouldIncludeDeletedItems include_deleted) { 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> expected_legacy_meta_proto_times; 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[1] = LEGACY_META_PROTO_TIMES(1); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (include_deleted == INCLUDE_DELETED_ITEMS) { 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[2] = LEGACY_META_PROTO_TIMES(2); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[4] = LEGACY_META_PROTO_TIMES(4); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[5] = LEGACY_META_PROTO_TIMES(5); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[6] = LEGACY_META_PROTO_TIMES(6); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[7] = LEGACY_META_PROTO_TIMES(7); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[8] = LEGACY_META_PROTO_TIMES(8); 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[9] = LEGACY_META_PROTO_TIMES(9); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[10] = LEGACY_META_PROTO_TIMES(10); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[11] = LEGACY_META_PROTO_TIMES(11); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[12] = LEGACY_META_PROTO_TIMES(12); 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[13] = LEGACY_META_PROTO_TIMES(13); 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[14] = LEGACY_META_PROTO_TIMES(14); 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_legacy_meta_proto_times; 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected time (in proto format). 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetExpectedMetaProtoTimes( 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ShouldIncludeDeletedItems include_deleted) { 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> expected_meta_proto_times; 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[1] = META_PROTO_TIMES(1); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (include_deleted == INCLUDE_DELETED_ITEMS) { 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[2] = META_PROTO_TIMES(2); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[4] = META_PROTO_TIMES(4); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[5] = META_PROTO_TIMES(5); 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[6] = META_PROTO_TIMES(6); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[7] = META_PROTO_TIMES(7); 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[8] = META_PROTO_TIMES(8); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[9] = META_PROTO_TIMES(9); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[10] = META_PROTO_TIMES(10); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[11] = META_PROTO_TIMES(11); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[12] = META_PROTO_TIMES(12); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[13] = META_PROTO_TIMES(13); 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[14] = META_PROTO_TIMES(14); 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_meta_proto_times; 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected time (as a Time object). 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, base::Time> GetExpectedMetaTimes() { 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, base::Time> expected_meta_times; 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::map<int64, int64>& expected_meta_proto_times = 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS); 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (std::map<int64, int64>::const_iterator it = 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times.begin(); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) it != expected_meta_proto_times.end(); ++it) { 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_times[it->first] = ProtoTimeToTime(it->second); 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_meta_times; 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Extracts a map from metahandle -> time (in proto format) from the 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// given database. 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetMetaProtoTimes(sql::Connection *db) { 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(db->GetCachedStatement( 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SQL_FROM_HERE, 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, mtime, server_mtime, ctime, server_ctime " 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas")); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(5, s.ColumnCount()); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> meta_times; 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (s.Step()) { 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 metahandle = s.ColumnInt64(0); 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 mtime = s.ColumnInt64(1); 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 server_mtime = s.ColumnInt64(2); 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 ctime = s.ColumnInt64(3); 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 server_ctime = s.ColumnInt64(4); 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, server_mtime); 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, ctime); 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, server_ctime); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) meta_times[metahandle] = mtime; 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(s.Succeeded()); 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return meta_times; 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)::testing::AssertionResult AssertTimesMatch(const char* t1_expr, 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* t2_expr, 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& t1, 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& t2) { 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (t1 == t2) 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ::testing::AssertionSuccess(); 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ::testing::AssertionFailure() 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << t1_expr << " and " << t2_expr 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " (internal values: " << t1.ToInternalValue() 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " and " << t2.ToInternalValue() 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << ") (proto time: " << TimeToProtoTime(t1) 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " and " << TimeToProtoTime(t2) 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << ") do not match"; 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Expect that all time fields of the given entry kernel will be the 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// given time. 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ExpectTime(const EntryKernel& entry_kernel, 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& expected_time) { 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(CTIME)); 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(SERVER_CTIME)); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(MTIME)); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(SERVER_MTIME)); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Expect that all the entries in |entries| have times matching those in 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the given map (from metahandle to expect time). 367868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void ExpectTimes(const Directory::MetahandlesMap& handles_map, 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::map<int64, base::Time>& expected_times) { 369868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) for (Directory::MetahandlesMap::const_iterator it = handles_map.begin(); 370868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it != handles_map.end(); ++it) { 371868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int64 meta_handle = it->first; 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SCOPED_TRACE(meta_handle); 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, base::Time>::const_iterator it2 = 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_times.find(meta_handle); 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it2 == expected_times.end()) { 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ADD_FAILURE() << "Could not find expected time for " << meta_handle; 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 379868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ExpectTime(*it->second, it2->second); 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion67Database(sql::Connection* connection) { 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is a version 67 database dump whose contents were backformed from 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the contents of the version 68 database dump (the v68 migration was 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // actually written first). 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,server_is_bookmark_object bit default 0," 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "name varchar(255), " /* COLLATE PATHNAME, */ 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unsanitized_name varchar(255)," /* COLLATE PATHNAME, */ 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar," 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_name varchar(255)," /* COLLATE PATHNAME */ 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_non_unique_name varchar," 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob);" 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);" 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1," 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item',NULL,'Deleted Item','Deleted Item','Deleted Item'," 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/','http://www.google.com/2',NULL,'AASGASGA'," 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ASADGADGADG');" 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1," 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium',NULL,'Welcome to Chromium'," 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7,'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1," 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,'Google','Google','Google','http://www.google.com/'," 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,'The Internet','The Internet'," 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,NULL,NULL,NULL);" 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,'Google Chrome','Google Chrome'," 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL);" 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,'Bookmarks','Bookmarks','Bookmarks',NULL,NULL," 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'google_chrome_bookmarks',NULL,NULL);" 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Bookmark Bar',NULL,'Bookmark Bar','Bookmark Bar','Bookmark Bar'," 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,'bookmark_bar',NULL,NULL);" 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152," 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks',NULL,'Other Bookmarks','Other Bookmarks'," 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks',NULL,NULL,'other_bookmarks'," 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL);" 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)',NULL,'Home (The Chromium Projects)'," 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF');" 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1," 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks',NULL,'Extra Bookmarks','Extra Bookmarks'," 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0," 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN Internet Corporation for Assigned Names and Numbers'," 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL," 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'PNGAXF0AAFF','DAAFASF');" 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project',NULL," 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','http://webkit.org/'," 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/x',NULL,'PNGX','PNG2Y');" 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',68);")); 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion68Database(sql::Connection* connection) { 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This sets up an actual version 68 database dump. The IDs were 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // canonicalized to be less huge, and the favicons were overwritten 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // with random junk so that they didn't contain any unprintable 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // characters. A few server URLs were tweaked so that they'd be 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // different from the local URLs. Lastly, the custom collation on 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the server_non_unique_name column was removed. 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0," 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object bit default 0," 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob);" 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL,NULL,NULL,NULL);" 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1," 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item','http://www.google.com/'," 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG');" 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1," 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7,'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1," 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google','Google','http://www.google.com/'," 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet','The Internet',NULL,NULL,NULL,NULL,NULL);" 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome','Google Chrome',NULL,NULL,'google_chrome',NULL," 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL);" 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL," 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152," 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL);" 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF');" 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1," 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0," 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL," 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'PNGAXF0AAFF','DAAFASF');" 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y');" 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',68);")); 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion69Database(sql::Connection* connection) { 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0," 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object bit default 0," 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob, specifics blob, " 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL,NULL,NULL,NULL,NULL," 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1," 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item','http://www.google.com/'," 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG'," 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841415" 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "34741534741',X'C28810260A17687474703A2F2F7777772E676F6F676C652E636F" 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6D2F32120B4153414447414447414447');" 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1," 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL,NULL," 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A3168" 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F6" 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "56E2F77656C636F6D652E68746D6C1200');" 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1," 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google','Google','http://www.google.com/'," 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG',X'C28810220A166" 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "87474703A2F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'" 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464" 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "447415347');" 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6" 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1,'The Internet'," 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,NULL,NULL,NULL,X'C2881000',X'C2881000');" 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1,'Google Chrome'," 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL,NULL,NULL);" 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL," 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0,1," 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL,NULL," 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C2881000',X'C2881000');" 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF',X'C28810220A18687474703A2F2F6465762E6368726F6D6" 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9756D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F646576" 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2E6368726F6D69756D2E6F72672F6F7468657212084146414756415346');" 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1," 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL," 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0," 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL,'PNGAXF0AAFF'," 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'DAAFASF',X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F1" 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "20B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963" 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "616E6E2E636F6D2F120744414146415346');" 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y'," 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C2" 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "88101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259');" 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',69);" 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion70Database(sql::Connection* connection) { 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',70);" 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_dir bit default 0,server_is_del bit default 0," 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar," 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "specifics blob,server_specifics blob);" 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');" 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) "," 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-2097152,4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0," 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A" 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X'C2881026" 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B415341444741" 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4447414447');" 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A" 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E74" 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F" 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765" 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C636F6D652E68746D6C1200');" 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C6" 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "52E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F77777" 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72E676F6F676C652E636F6D2F12084147464447415347');" 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome'," 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome','google_chrome',NULL,NULL,NULL);" 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000'," 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0," 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881000'," 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2097152,2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F" 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636872" 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6D69756D2E6F72672F6F7468657212084146414756415346');" 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F" 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E69" 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "63616E6E2E636F6D2F120744414146415346');" 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F78120550" 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E473259');" 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion71Database(sql::Connection* connection) { 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',71);" 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT);" 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');")); 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion72Database(sql::Connection* connection) { 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',72);" 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT);" 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');")); 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion73Database(sql::Connection* connection) { 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',73);" 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT, " 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "notification_state BLOB);" 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x',X'C2881000');")); 11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion74Database(sql::Connection* connection) { 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',74);" 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, last_download_timestamp" 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " INT, initial_sync_ended BOOLEAN default 0);" 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd" 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra" 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion_state INT default 0, bookmarks_added_during_autofill_migration" 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " INT default 0, autofill_migration_time INT default 0, autofill_ent" 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ries_added_during_migration INT default 0, autofill_profiles_added_" 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "during_migration INT default 0);" 11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'" 11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542" 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);" 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,bas" 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_version bigint default -1,server_version bigint default 0,mtime b" 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "igint default 0,server_mtime bigint default 0,ctime bigint default " 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,server_ctime bigint default 0,server_position_in_parent bigint de" 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault 0,local_external_id bigint default 0,id varchar(255) default " 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'r',parent_id varchar(255) default 'r',server_parent_id varchar(255" 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ") default 'r',prev_id varchar(255) default 'r',next_id varchar(255)" 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " default 'r',is_unsynced bit default 0,is_unapplied_update bit defa" 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 0,is_del bit default 0,is_dir bit default 0,server_is_dir bit d" 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_is_del bit default 0,non_unique_name varchar,server" 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_non_unique_name varchar(255),unique_server_tag varchar,unique_clie" 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "nt_tag varchar,specifics blob,server_specifics blob);" 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'" 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "');" 11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_2','s_ID" 11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted " 11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" 11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "36F6D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E67" 11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6F676C652E636F6D2F32120B4153414447414447414447');" 11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_4','s_ID" 11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','W" 11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "elcome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E6" 12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E" 12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "68746D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636" 12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');" 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5','s_ID_" 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NU" 12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841" 12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47415347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" 12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "36F6D2F12084147464447415347');" 12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_6','s_ID" 12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL" 12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,X'C2881000',X'C2881000');" 12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7','r','r" 12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrom" 12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e',NULL,NULL,NULL);" 12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8','s_ID_" 12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chr" 12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ome_bookmarks',NULL,X'C2881000',X'C2881000');" 12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9','s_ID_" 12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'" 12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'bookmark_bar',NULL,X'C2881000',X'C2881000');" 12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_10','s_I" 12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Boo" 12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "kmarks','other_bookmarks',NULL,X'C2881000',X'C2881000');" 12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID_11','s_" 12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projec" 12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ts)','Home (The Chromium Projects)',NULL,NULL,X'C28810220A186874747" 12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810" 12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120" 12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "84146414756415346');" 12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s_ID_6','" 12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bo" 12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "okmarks',NULL,NULL,X'C2881000',X'C2881000');" 12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID_13','s_" 12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Co" 12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "rporation for Assigned Names and Numbers','ICANN | Internet Corpora" 12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474" 12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C" 12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F12074441414641" 12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5346');" 12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID_14','s_" 12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Pr" 12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "oject','The WebKit Open Source Project',NULL,NULL,X'C288101A0A12687" 12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474" 12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "703A2F2F7765626B69742E6F72672F781205504E473259');" 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion75Database(sql::Connection* connection) { 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',75);" 12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd" 12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra" 12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion_state INT default 0,bookmarks_added_during_autofill_migration " 12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INT default 0, autofill_migration_time INT default 0, autofill_entr" 12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ies_added_during_migration INT default 0, autofill_profiles_added_d" 12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "uring_migration INT default 0);" 12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org" 12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-655" 12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "42,'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);" 12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, " 12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BOOLEAN default 0);" 12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,ba" 12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "se_version bigint default -1,server_version bigint default 0,mtime" 12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " bigint default 0,server_mtime bigint default 0,ctime bigint defau" 12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "lt 0,server_ctime bigint default 0,server_position_in_parent bigin" 12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t default 0,local_external_id bigint default 0,id varchar(255) def" 12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ault 'r',parent_id varchar(255) default 'r',server_parent_id varch" 12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ar(255) default 'r',prev_id varchar(255) default 'r',next_id varch" 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ar(255) default 'r',is_unsynced bit default 0,is_unapplied_update " 12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bit default 0,is_del bit default 0,is_dir bit default 0,server_is_" 12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "dir bit default 0,server_is_del bit default 0,non_unique_name varc" 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,server_non_unique_name varchar(255),unique_server_tag varchar," 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_client_tag varchar,specifics blob,server_specifics blob);" 12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NUL" 12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "L,X'',X'');" 12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_" 12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Ite" 12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "m','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772" 12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A176874" 12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "74703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474" 12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447');" 12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_" 13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to " 13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A316874747" 13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F65" 13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7" 13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765" 13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C636F6D652E68746D6C1200');" 13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5" 13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Goo" 13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "gle',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C65" 13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F777" 13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7772E676F6F676C652E636F6D2F12084147464447415347');" 13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_" 13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The In" 13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ternet',NULL,NULL,X'C2881000',X'C2881000');" 13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7" 13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','" 13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "google_chrome',NULL,NULL,NULL);" 13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8" 13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks'" 13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9" 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','B" 13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_" 13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks" 13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','Other Bookmarks','other_bookmarks',NULL,X'C2881000',X'C28810" 13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00');" 13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID" 13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chr" 13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "omium Projects)','Home (The Chromium Projects)',NULL,NULL,X'C28" 13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F120641" 13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s" 13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmark" 13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "s','Extra Bookmarks',NULL,NULL,X'C2881000',X'C2881000');" 13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID" 13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN |" 13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " Internet Corporation for Assigned Names and Numbers','ICANN | " 13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Internet Corporation for Assigned Names and Numbers',NULL,NULL," 13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E696361" 13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6E6E2E636F6D2F120744414146415346');" 13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID" 13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Op" 13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "en Source Project','The WebKit Open Source Project',NULL,NULL,X" 13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758'," 13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473" 13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "259');" 13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion76Database(sql::Connection* connection) { 13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',76);" 13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,mtime big" 13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "int default 0,server_mtime bigint default 0,ctime bigint default 0,s" 13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "erver_ctime bigint default 0,server_position_in_parent bigint defaul" 13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 0,local_external_id bigint default 0,id varchar(255) default 'r',p" 13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob);" 13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'')" 13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ";" 13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_2','s_ID_9" 13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted Ite" 13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "m',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6" 13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E676F6F6" 13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76C652E636F6D2F32120B4153414447414447414447');" 13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_4','s_ID_9" 13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','Welc" 13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E676F6" 13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746" 13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6" 14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');" 14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5','s_ID_9'" 14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NULL," 14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F1208414741" 14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D" 14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F12084147464447415347');" 14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_6','s_ID_9" 14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL,NU" 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000');" 14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7','r','r'," 14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrome'," 14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL);" 14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8','s_ID_7'" 14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chrome" 14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_bookmarks',NULL,X'C2881000',X'C2881000');" 14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9','s_ID_8'" 14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar','b" 14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ookmark_bar',NULL,X'C2881000',X'C2881000');" 14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_10','s_ID_" 14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Bookma" 14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "rks','other_bookmarks',NULL,X'C2881000',X'C2881000');" 14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID_11','s_ID" 14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projects)" 14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','Home (The Chromium Projects)',NULL,NULL,X'C28810220A18687474703A2" 14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1" 14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120841464" 14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14756415346');" 14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s_ID_6','s_" 14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm" 14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arks',NULL,NULL,X'C2881000',X'C2881000');" 14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID_13','s_ID" 14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Corpo" 14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ration for Assigned Names and Numbers','ICANN | Internet Corporation" 14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474703A2" 14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C288102" 14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00A15687474703A2F2F7777772E6963616E6E2E636F6D2F120744414146415346');" 14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID_14','s_ID" 14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Proje" 14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ct','The WebKit Open Source Project',NULL,NULL,X'C288101A0A126874747" 14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2" 14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7765626B69742E6F72672F781205504E473259');" 14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion77Database(sql::Connection* connection) { 14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',77);" 14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob);" 14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) 14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');" 14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447');" 14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200');" 14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," META_PROTO_TIMES_VALS(5) 14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','" 14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E" 15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E67" 15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6F676C652E636F6D2F12084147464447415347');" 15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," META_PROTO_TIMES_VALS(7) 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Goo" 15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "gle Chrome','google_chrome',NULL,NULL,NULL);" 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," META_PROTO_TIMES_VALS(8) 15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmar" 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," META_PROTO_TIMES_VALS(9) 15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'" 15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000');" 15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346');" 15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," META_PROTO_TIMES_VALS(12) 15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_12','s_ID_6','s_" 15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm" 15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arks',NULL,NULL,X'C2881000',X'C2881000');" 15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346');" 15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259');" 15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion78Database(sql::Connection* connection) { 15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',78);" 15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 15645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 16155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 16275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 16315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 16325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 16445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 16455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion79Database(sql::Connection* connection) { 16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',79);" 16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 16605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 16625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 16705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 16725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 16805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 16815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 16845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 16855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 17035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 17045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 17205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 17305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL);" 17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion80Database(sql::Connection* connection) { 17435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 17465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',80);" 17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 17495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 17515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 17535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 17635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 17745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 17755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 17765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 17775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 17785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 17795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 17805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 17815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 17905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 17915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 17975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 17985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 18045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 18055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 18075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 18095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 18115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 18165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 18185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 18195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 18285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 18315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 18325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 18335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);" 18345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 18355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 18365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper definitions to create the version 81 DB tables. 18405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 18415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int V80_ROW_COUNT = 13; 18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int64 V80_POSITIONS[V80_ROW_COUNT] = { 18445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 18455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -2097152, 18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -3145728, 18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -4194304, 18495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2097152, 18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1048576, 18545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 18555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -917504, 18565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576 18575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string V81_Ordinal(int n) { 18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return Int64ToNodeOrdinal(V80_POSITIONS[n]).ToInternalValue(); 18615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} //namespace 18645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Unlike the earlier versions, the rows for version 81 are generated 18665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// programmatically to accurately handle unprintable characters for the 18675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// server_ordinal_in_parent field. 18685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion81Database(sql::Connection* connection) { 18695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 18705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 18715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 18725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 18735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',81);" 18745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 18755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 18765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 18775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 18785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 18795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0" 18805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 18815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 18825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 18845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 18855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 18865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 18875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 18885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 18895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ", server_ordinal_in_parent blob);" 18905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 18915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 18925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 18935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 18945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 18955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 18965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 18975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 18995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 19005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);", 19015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 19025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 19035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 19045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 19055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 19065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL,?);", 19075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 19085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 19095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 19105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 19115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 19125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 19135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?);", 19145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 19155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 19165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 19175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 19185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 19195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL,?);", 19205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 19215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 19225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 19235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,?);", 19245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 19255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 19265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);", 19275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 19285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 19295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 19305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL,?);", 19315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 19325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 19335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 19345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL,?);", 19355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 19365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 19375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 19385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?);", 19395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 19405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 19415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 19425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 19435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 19445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);", 19455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 19465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 19475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 19485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL,?);", 19495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 19505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 19515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 19525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 19535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 19545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 19555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?);", 19565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 19575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 19585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 19595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 19605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 19615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL,?);" }; 19625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 19645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 19655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ord = V81_Ordinal(i); 19665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 19675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Run()); 19685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Reset(true); 19695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 19705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 19715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 19725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion82Database(sql::Connection* connection) { 19745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 19755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 19765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 19775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 19782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',82);" 19795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 19805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 19815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0);" 19825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 19835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 19845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 19855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0" 19865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 19875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 19885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 19895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 19905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 19915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 19925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 19935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 19945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 19955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ", server_ordinal_in_parent blob);" 19965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 19975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 19985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 19995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 20005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 20015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 20025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 20035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 20055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 20065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);", 20075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 20085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 20095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 20105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 20115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 20125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL,?);", 20135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 20145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 20155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 20165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 20175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 20185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 20195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?);", 20205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 20215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 20225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 20235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 20245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 20255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL,?);", 20265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 20275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 20285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 20295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,?);", 20305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 20315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 20325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);", 20335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 20345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 20355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 20365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL,?);", 20375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 20385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 20395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 20405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL,?);", 20415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 20425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 20435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 20445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?);", 20455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 20465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 20475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 20485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 20495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 20505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);", 20515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 20525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 20535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 20545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL,?);", 20555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 20565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 20575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 20585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 20595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 20605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 20615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?);", 20625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 20635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 20645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 20655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 20665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 20675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL,?);" }; 20685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 20705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 20715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ord = V81_Ordinal(i); 20725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 20735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Run()); 20745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Reset(true); 20755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 20765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 20775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 20785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MigrationTest::SetUpVersion83Database(sql::Connection* connection) { 20802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 20812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 20822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 20832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 20842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',83);" 20852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 20862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 20872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "default 0);" 20882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 20892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 20902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 20912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 20922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 20932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 20942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 20952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 20962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 20972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 20982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 20992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 21002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 21012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 21022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 21032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 21042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 21052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 21062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "blob);" 21072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 21082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 21092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 21102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 21112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 21122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 21132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", 21142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 21152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 21162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 21172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 21182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 21192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "14447414447414447',NULL,?,0);", 21202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 21212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 21222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 21232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 21242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 21252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 21262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", 21272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 21282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 21292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 21302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 21312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 21322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ULL,?,0);", 21332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 21342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 21352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 21362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",NULL,?,0);", 21372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 21382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 21392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" 21402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "", 21412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 21422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 21432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 21442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "00',X'C2881000',NULL,?,0);", 21452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 21462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 21472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 21482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "000',X'C2881000',NULL,?,0);", 21492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 21502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 21512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 21522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?,0);", 21532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 21542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 21552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 21562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 21572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 21582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", 21592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 21602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 21612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 21622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2881000',X'C2881000',NULL,?,0);", 21632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 21642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 21652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 21662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 21672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 21682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 21692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", 21702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 21712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 21722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 21732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 21742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 21752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "81205504E473259',NULL,?,0);" }; 21762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 21772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 21782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 21792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string ord = V81_Ordinal(i); 21802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 21812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(s.Run()); 21822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.Reset(true); 21832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 21842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 21852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 21862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 21872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MigrationTest::SetUpVersion84Database(sql::Connection* connection) { 21882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 21892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 21902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 21912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 21922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',84);" 21932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 21942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 21952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "default 0);" 21962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 21972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 21982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 21992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 22002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 22012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 22022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 22032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 22042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 22052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 22062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 22072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 22082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 22092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 22102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 22112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'deleted_metas'" 22122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "(metahandle bigint primary key ON CONFLICT FAIL,base" 22132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 22142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 22152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 22162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 22172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 22182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 22192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 22202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 22212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 22222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 22232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 22242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 22252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 22262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 22272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 22282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 22292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "blob);" 22302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 22312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 22322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 22332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 22342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 22352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 22362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", 22372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 22382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 22392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 22402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 22412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 22422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "14447414447414447',NULL,?,0);", 22432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 22442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 22452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 22462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 22472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 22482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 22492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", 22502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 22512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 22522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 22532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 22542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 22552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ULL,?,0);", 22562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 22572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 22582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 22592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",NULL,?,0);", 22602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 22612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 22622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" 22632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "", 22642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 22652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 22662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 22672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "00',X'C2881000',NULL,?,0);", 22682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 22692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 22702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 22712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "000',X'C2881000',NULL,?,0);", 22722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 22732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 22742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 22752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?,0);", 22762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 22772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 22782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 22792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 22802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 22812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", 22822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 22832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 22842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 22852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2881000',X'C2881000',NULL,?,0);", 22862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 22872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 22882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 22892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 22902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 22912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 22922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", 22932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 22942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 22952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 22962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 22972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 22982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "81205504E473259',NULL,?,0);" }; 22992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 23002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 23012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 23022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string ord = V81_Ordinal(i); 23032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 23042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(s.Run()); 23052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.Reset(true); 23062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 23072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 23082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 23092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 23102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MigrationTest::SetUpVersion85Database(sql::Connection* connection) { 23112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 23122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 23132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 23142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 23152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',85);" 23162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, " 23172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "transaction_version BIGINT default 0);" 23182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605', 1);" 23192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 23202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 23212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 23222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 23232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 23242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 23252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 23262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 23272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 23282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 23292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 23302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 23312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 23322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 23332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'deleted_metas'" 23342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "(metahandle bigint primary key ON CONFLICT FAIL,base" 23352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 23362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 23372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 23382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 23392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 23402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 23412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 23422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 23432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 23442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 23452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 23462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 23472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 23482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 23492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 23502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 23512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "blob);" 23522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 23532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 23542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 23552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 23562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 23572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 23582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", 23592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 23602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 23612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 23622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 23632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 23642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "14447414447414447',NULL,?,0);", 23652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 23662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 23672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 23682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 23692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 23702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 23712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", 23722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 23732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 23742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 23752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 23762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 23772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ULL,?,0);", 23782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 23792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 23802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 23812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",NULL,?,0);", 23822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 23832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 23842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" 23852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "", 23862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 23872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 23882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 23892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "00',X'C2881000',NULL,?,0);", 23902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 23912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 23922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 23932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "000',X'C2881000',NULL,?,0);", 23942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 23952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 23962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 23972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?,0);", 23982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 23992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 24002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 24012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 24022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 24032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", 24042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 24052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 24062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 24072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2881000',X'C2881000',NULL,?,0);", 24082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 24092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 24102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 24112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 24122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 24132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 24142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", 24152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 24162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 24172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 24182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 24192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 24202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "81205504E473259',NULL,?,0);" }; 24212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 24222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 24232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 24242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string ord = V81_Ordinal(i); 24252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 24262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(s.Run()); 24272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.Reset(true); 24282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 24292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 24302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 24312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2432c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void MigrationTest::SetUpVersion86Database(sql::Connection* connection) { 2433c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 2434c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 2435c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 2436c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 2437c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',86);" 2438c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB," 2439c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " transaction_version BIGINT default 0);" 2440c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 2441c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,b" 2442c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "ase_version bigint default -1,server_version bigint default 0,local_e" 2443c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "xternal_id bigint default 0,transaction_version bigint default 0,mtim" 2444c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "e bigint default 0,server_mtime bigint default 0,ctime bigint default" 2445c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " 0,server_ctime bigint default 0,id varchar(255) default 'r',parent_i" 2446c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "d varchar(255) default 'r',server_parent_id varchar(255) default 'r'," 2447c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0,is_del bi" 2448c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "t default 0,is_dir bit default 0,server_is_dir bit default 0,server_i" 2449c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "s_del bit default 0,non_unique_name varchar,server_non_unique_name va" 2450a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "rchar(255),unique_server_tag varchar,unique_client_tag varchar,unique" 2451a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "_bookmark_tag varchar,specifics blob,server_specifics blob,base_serve" 2452a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "r_specifics blob,server_unique_position blob,unique_position blob);" 2453c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," 2454c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) META_PROTO_TIMES_VALS(1) 2455c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL," 2456a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "X'',X'',X'',NULL,X'2200',X'2200');" 2457c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6,0," 2458a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The" 2459a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) " Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D653" 2460a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "273625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFF" 2461a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "FFFC000006754307476346749735A5734654D653273625336557753582F77673D',X'" 2462a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "22247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582" 2463a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "F77673D');" 2464c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0,0," 2465a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome" 2466a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "','Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'2" 2467a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "200');" 2468c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0,0," 2469a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Boo" 2470a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "kmarks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'" 2471a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "C2881000',NULL,X'2200',X'2200');" 2472c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1,0," 2473a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Boo" 2474a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "kmark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C2881" 2475a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "000',NULL,X'2200',X'2200');" 2476c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2,0," 2477a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'O" 2478a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ther Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C28810" 2479a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "00',X'C2881000',NULL,X'2200',X'2200');" 2480c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8,0," 2481a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'H" 2482a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ome (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL" 2483a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ",X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C28810" 2484a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F120641474154574" 2485a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "1',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74" 2486a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "68657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D" 2487a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "623579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF00000505" 2488a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "14C784A456D623579366267644237646A7A2B62314130346E493D');" 2489c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9,0," 2490a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'E" 2491a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "xtra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6" 2492a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "F616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'222" 2493a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "480000000000000007867626A704A646134635A6F616C376A49513338734B46324837" 2494a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "773D',X'222480000000000000007867626A704A646134635A6F616C376A495133387" 2495a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "34B46324837773D');" 2496c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10,0," 2497a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I" 2498a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | " 2499a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142" 2500a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156" 2501a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646'," 2502a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464" 2503a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304" 2504a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650" 2505a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "4179672B304A614A514B3452384A413D');" 2506c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11,0," 2507a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T" 2508a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "he WebKit Open Source Project','The WebKit Open Source Project',NULL," 2509a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2" 2510a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101" 2511a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222" 2512a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C" 2513a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315" 2514a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "9552F6E644C553D');" 2515a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" 2516a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "IL,base_version bigint default -1,server_version bigint default 0,loc" 2517a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "al_external_id bigint default 0,transaction_version bigint default 0," 2518a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" 2519a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" 2520a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " 2521a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" 2522a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" 2523a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" 2524a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" 2525a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" 2526a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "erver_specifics blob,server_unique_position blob,unique_position blob" 2527c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ");" 2528c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birt" 2529c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "hday TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 2530c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "fault -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB" 2531c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ");" 2532c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.or" 2533c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "g','c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-13107" 2534c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "8,'9010788312004066376x-6609234393368420856x',NULL,NULL);")); 2535c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 2536c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 2537c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2538e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochvoid MigrationTest::SetUpVersion87Database(sql::Connection* connection) { 2539e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(connection->is_open()); 2540e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(connection->BeginTransaction()); 2541e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(connection->Execute( 2542e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 2543e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'share_version' VALUES('nick@chromium.org',87);" 2544e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, tr" 2545e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "ansaction_version BIGINT default 0);" 2546e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 2547e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 2548e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "_version bigint default -1,server_version bigint default 0,local_exte" 2549e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "rnal_id bigint default 0,transaction_version bigint default 0,mtime b" 2550e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "igint default 0,server_mtime bigint default 0,ctime bigint default 0," 2551e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v" 2552e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_" 2553e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d" 2554e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d" 2555e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "el bit default 0,non_unique_name varchar,server_non_unique_name varch" 2556e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo" 2557e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s" 2558e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "pecifics blob,server_unique_position blob,unique_position blob,attach" 2559e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "ment_metadata blob);" 2560e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(1,-1,0,0,0," 2561e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(1) 2562e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X''" 2563e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",X'',X'',NULL,X'2200',X'2200',NULL);" 2564e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(6,694,694,6,0," 2565e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(6) 2566e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The " 2567e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D6532" 2568e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "73625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFFF" 2569e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "FFC000006754307476346749735A5734654D653273625336557753582F77673D',X'2" 2570e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "2247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582F" 2571e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "77673D',NULL);" 2572e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(7,663,663,0,0," 2573e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(7) 2574e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome'" 2575e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'22" 2576e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "00',NULL);" 2577e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(8,664,664,0,0," 2578e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(8) 2579e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Book" 2580e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "marks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'C" 2581e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "2881000',NULL,X'2200',X'2200',NULL);" 2582e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(9,665,665,1,0," 2583e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(9) 2584e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Book" 2585e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "mark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C28810" 2586e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "00',NULL,X'2200',X'2200',NULL);" 2587e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(10,666,666,2,0," 2588e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(10) 2589e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Ot" 2590e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "her Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C288100" 2591e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "0',X'C2881000',NULL,X'2200',X'2200',NULL);" 2592e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(11,683,683,8,0," 2593e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(11) 2594e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Ho" 2595e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "me (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL," 2596e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C288102" 2597e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "20A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741" 2598e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F746" 2599e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "8657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D6" 2600e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "23579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF000005051" 2601e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "4C784A456D623579366267644237646A7A2B62314130346E493D',NULL);" 2602e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(12,685,685,9,0," 2603e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(12) 2604e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Ex" 2605e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "tra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6F" 2606e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'2224" 2607e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "80000000000000007867626A704A646134635A6F616C376A49513338734B463248377" 2608e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "73D',X'222480000000000000007867626A704A646134635A6F616C376A4951333873" 2609e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "4B46324837773D',NULL);" 2610e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(13,687,687,10,0," 2611e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(13) 2612e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I" 2613e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | " 2614e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142" 2615e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156" 2616e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646'," 2617e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464" 2618e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304" 2619e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650" 2620e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "4179672B304A614A514B3452384A413D',NULL);" 2621e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(14,692,692,11,0," 2622e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(14) 2623e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T" 2624e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "he WebKit Open Source Project','The WebKit Open Source Project',NULL," 2625e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2" 2626e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101" 2627e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222" 2628e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C" 2629e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315" 2630e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "9552F6E644C553D',NULL);" 2631e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" 2632e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "IL,base_version bigint default -1,server_version bigint default 0,loc" 2633e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "al_external_id bigint default 0,transaction_version bigint default 0," 2634e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" 2635e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" 2636e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " 2637e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" 2638e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" 2639e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" 2640e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" 2641e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" 2642e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "erver_specifics blob,server_unique_position blob,unique_position blob" 2643e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",attachment_metadata blob);" 2644e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 2645e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defau" 2646e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "lt -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB);" 2647e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 2648e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-131078,'" 2649e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "9010788312004066376x-6609234393368420856x',NULL,NULL);")); 2650e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(connection->CommitTransaction()); 2651e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 2652e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 26535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion67To68) { 26545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 26555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 26565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion67Database(&connection); 26585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns existing before version 67. 26605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "name")); 26615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unsanitized_name")); 26625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_name")); 26635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 26655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 26665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 26685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion67To68()); 26695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(68, dbs->GetVersion()); 26705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 26715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 26725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion68To69) { 26745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 26755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 26765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion68Database(&connection); 26775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 26795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 26805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 26815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 26835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion68To69()); 26845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(69, dbs->GetVersion()); 26855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 26865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 26875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); 26895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); 26905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT non_unique_name," 26915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del, is_dir, id, specifics, server_specifics FROM metas " 26925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "WHERE metahandle = 2")); 26935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 26945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("Deleted Item", s.ColumnString(0)); 26955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.ColumnBool(1)); 26965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.ColumnBool(2)); 26975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("s_ID_2", s.ColumnString(3)); 26985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_pb::EntitySpecifics specifics; 26995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics.ParseFromArray(s.ColumnBlob(4), s.ColumnByteLength(4)); 27005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(specifics.has_bookmark()); 27015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("http://www.google.com/", specifics.bookmark().url()); 27025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("AASGASGA", specifics.bookmark().favicon()); 27035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics.ParseFromArray(s.ColumnBlob(5), s.ColumnByteLength(5)); 27045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(specifics.has_bookmark()); 27055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("http://www.google.com/2", specifics.bookmark().url()); 27065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("ASADGADGADG", specifics.bookmark().favicon()); 27075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.Step()); 27085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 27095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion69To70) { 27115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 27125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 27135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion69Database(&connection); 27145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "singleton_tag")); 27165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_server_tag")); 27175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_client_tag")); 27185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 27205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 27215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 27225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 27245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion69To70()); 27255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(70, dbs->GetVersion()); 27265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 27275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 27285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); 27305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); 27315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT id" 27325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " FROM metas WHERE unique_server_tag = 'google_chrome'")); 27335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 27345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("s_ID_7", s.ColumnString(0)); 27355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 27365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion70To71) { 27385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 27395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 27405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion70Database(&connection); 27415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); 27435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "initial_sync_ended")); 27445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("models")); 27455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 27475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 27485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 27495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 27515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion70To71()); 27525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(71, dbs->GetVersion()); 27535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 27545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 27555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); 27575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "initial_sync_ended")); 27585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("models")); 27595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); 27605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); 27615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "model_id")); 27625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT model_id, " 27645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended, last_download_timestamp FROM models")); 27655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 27665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string model_id = s.ColumnString(0); 27675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("C2881000", base::HexEncode(model_id.data(), model_id.size())) 27685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Model ID is expected to be the empty BookmarkSpecifics proto."; 27695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(s.ColumnBool(1)); 27705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(694, s.ColumnInt64(2)); 27715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.Step()); 27725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 27735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion71To72) { 27765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 27775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 27785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion71Database(&connection); 27795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("extended_attributes")); 27815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 27835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 27845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 27855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 27875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion71To72()); 27885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(72, dbs->GetVersion()); 27895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 27905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 27915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); 27935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 27945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion72To73) { 27965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 27975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 27985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion72Database(&connection); 27995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); 28015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 28035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 28045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 28055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion72To73()); 28085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(73, dbs->GetVersion()); 28095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 28115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); 28135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 28145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion73To74) { 28165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 28175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 28185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion73Database(&connection); 28195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 28215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 28225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 28235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 28245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 28255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 28265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 28275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 28285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 28295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 28305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 28325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 28335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 28345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 28365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 28375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 28385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion73To74()); 28415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(74, dbs->GetVersion()); 28425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 28445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 28465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 28475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 28485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 28495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 28505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 28515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 28525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 28535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 28545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 28555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 28575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 28585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 28595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 28605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion74To75) { 28625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 28635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 28645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion74Database(&connection); 28655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "progress_marker")); 28675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); 28685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 28705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 28715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 28725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion74To75()); 28755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(75, dbs->GetVersion()); 28765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 28785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); 28805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); 28815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 28825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion75To76) { 28845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 28855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 28865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion75Database(&connection); 28875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 28895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 28905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 28915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 28925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 28935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 28945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 28955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 28965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 28975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 28985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion75To76()); 29035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(76, dbs->GetVersion()); 29045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 29055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cannot actual refresh columns due to version 76 not containing all 29065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // necessary columns. 29075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion76To77) { 29105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 29115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 29125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion76Database(&connection); 29135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedLegacyMetaProtoTimes(INCLUDE_DELETED_ITEMS), 29195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(dbs->db_.get())); 29205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Since the proto times are expected to be in a legacy format, they may not 29215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // be compatible with ProtoTimeToTime, so we don't call ExpectTimes(). 29225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion76To77()); 29245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(77, dbs->GetVersion()); 29255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS), 29275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(dbs->db_.get())); 29285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cannot actually load entries due to version 77 not having all required 29295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // columns. 29305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion77To78) { 29345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 29355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 29365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion77Database(&connection); 29375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "BASE_SERVER_SPECIFICS")); 29395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 29415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion77To78()); 29455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(78, dbs->GetVersion()); 29465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 29495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); 29515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion78To79) { 29545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kInitialNextId = -65542; 29555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 29575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 29585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion78Database(&connection); 29595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Double-check the original next_id is what we think it is. 29615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 29625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT next_id FROM share_info")); 29635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Step(); 29645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(kInitialNextId, s.ColumnInt(0)); 29655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion78To79()); 29705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(79, dbs->GetVersion()); 29715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure the next_id has been incremented. 2974868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 29752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals;; 2976868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map); 29775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo load_info; 29785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Clear(); 2980868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &load_info)); 29815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_LE(load_info.kernel_info.next_id, kInitialNextId - 65536); 29825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion79To80) { 29855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 29865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 29875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion79Database(&connection); 29885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion79To80()); 29935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(80, dbs->GetVersion()); 29945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure the bag_of_chips has been set. 2997868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 29982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals;; 2999868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map); 30005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo load_info; 30015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3002868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &load_info)); 30035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check that the initial value is the serialization of an empty ChipBag. 30045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_pb::ChipBag chip_bag; 30055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string serialized_chip_bag; 30065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(chip_bag.SerializeToString(&serialized_chip_bag)); 30075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(serialized_chip_bag, load_info.kernel_info.bag_of_chips); 30085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 30095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion80To81) { 30115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 30125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 30135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion80Database(&connection); 30145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 30165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, server_position_in_parent " 30175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas WHERE unique_server_tag = 'google_chrome'")); 30185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 30195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(sql::COLUMN_TYPE_INTEGER, s.ColumnType(1)); 30205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 30225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 30235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion80To81()); 30245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(81, dbs->GetVersion()); 30255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test that ordinal values are preserved correctly. 30275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement new_s(connection.GetUniqueStatement( 30285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, server_ordinal_in_parent " 30295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas WHERE unique_server_tag = 'google_chrome'")); 30305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_s.Step()); 30315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(sql::COLUMN_TYPE_BLOB, new_s.ColumnType(1)); 30325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string expected_ordinal = Int64ToNodeOrdinal(1048576).ToInternalValue(); 30345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string actual_ordinal; 30355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_s.ColumnBlobAsString(1, &actual_ordinal); 30365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(expected_ordinal, actual_ordinal); 30375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 30385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion81To82) { 30405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 30415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 30425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion81Database(&connection); 30435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "transaction_version")); 30445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 30465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 30475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 30485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion81To82()); 30495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(82, dbs->GetVersion()); 30505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 30515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); 30535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 30545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion82To83) { 30565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 30575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 30585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion82Database(&connection); 30595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "transaction_version")); 30605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 30625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 30635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion82To83()); 30645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(83, dbs->GetVersion()); 30655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); 30675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 30685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion83To84) { 30702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Connection connection; 30712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 30722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion83Database(&connection); 30732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("deleted_metas")); 30742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 30752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 30762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 30772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion83To84()); 30782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(84, dbs->GetVersion()); 30792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 30802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("deleted_metas")); 30812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 30822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 30832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion84To85) { 30842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Connection connection; 30852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 30862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion84Database(&connection); 30872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); 30882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 30892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 30902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 30912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion84To85()); 30922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(85, dbs->GetVersion()); 30932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); 30942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 30952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3096c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion85To86) { 3097c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sql::Connection connection; 3098c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 3099c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion85Database(&connection); 3100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "next_id")); 3101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "prev_id")); 3102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); 3103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_position")); 3104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(connection.DoesColumnExist("metas", "server_unique_position")); 3105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_bookmark_tag")); 3106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 3108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion85To86()); 3110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(86, dbs->GetVersion()); 3111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_position")); 3112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "server_unique_position")); 3113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_bookmark_tag")); 3114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 3115a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 3116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3117e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(DirectoryBackingStoreTest, MigrateVersion86To87) { 3118e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch sql::Connection connection; 3119e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(connection.OpenInMemory()); 3120e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch SetUpVersion86Database(&connection); 3121e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(connection.DoesColumnExist("metas", "attachment_metadata")); 3122e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 3123e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch scoped_ptr<TestDirectoryBackingStore> dbs( 3124e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch new TestDirectoryBackingStore(GetUsername(), &connection)); 3125e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(dbs->MigrateVersion86To87()); 3126e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_EQ(87, dbs->GetVersion()); 3127e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(connection.DoesColumnExist("metas", "attachment_metadata")); 3128e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(dbs->needs_column_refresh_); 3129e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 3130e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 3131a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// The purpose of this test case is to make it easier to get a dump of the 3132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// database so you can implement a SetUpVersionYDatabase method. Here's what 3133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// you should do: 3134a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 3135a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 1. Say you're going from version X to version Y. Write the migration 3136a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// method MigrateVersionXToY. 3137a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 2. Update the test below to call SetUpVersionXDatabase and then 3138a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// MigrateVersionXToY. You now have a database at version Y. Let's dump it. 3139a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 3. Set a breakpoint to stop execution just after the connection is 3140a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// destroyed. Examine temp_dir_ to find the version Y database that was 3141a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// created on disk. E.g. (gdb) p temp_dir_.path().value().c_str() 3142a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 4. Dump the database using the sqlite3 command line tool: 3143a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// > .output foo_dump.sql 3144a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// > .dump 3145a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 5. Replace the timestamp columns with META_PROTO_TIMES(x) (or 3146a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// LEGACY_META_PROTO_TIMES(x) if before Version 77). Use this dump to write 3147a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// a SetupVersionYDatabase method. 3148a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateToLatestAndDump) { 3149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 3150a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) sql::Connection connection; 3151a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(connection.Open(GetDatabasePath())); 3152e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch SetUpVersion86Database(&connection); // Update this. 3153a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3154a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 3155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3156e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(dbs->MigrateVersion86To87()); // Update this. 3157a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 3158e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_EQ(87, dbs->GetVersion()); // Update this. 3159a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 3160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 3161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Set breakpoint here. 3162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 3163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, DetectInvalidPosition) { 3165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sql::Connection connection; 3166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 3167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion86Database(&connection); 3168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 3170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(86, dbs->GetVersion()); 3172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Insert row with bad position. 3174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 3175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO metas " 3176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "( id, metahandle, is_dir, ctime, mtime," 3177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " unique_position, server_unique_position) " 3178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "VALUES('c-invalid', 9999, 1, 0, 0, 'BAD_POS', 'BAD_POS')")); 3179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(s.Run()); 3180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Trying to unpack this entry should signal that the DB is corrupted. 3182868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 3183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) JournalIndex delete_journals;; 3184868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map); 3185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Directory::KernelLoadInfo kernel_load_info; 3186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(FAILED_DATABASE_CORRUPT, 3187868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->Load(&handles_map, &delete_journals, &kernel_load_info)); 3188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 3189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 31905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_P(MigrationTest, ToCurrentVersion) { 31915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 31925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 31935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (GetParam()) { 31945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 67: 31955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion67Database(&connection); 31965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 31975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 68: 31985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion68Database(&connection); 31995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 69: 32015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion69Database(&connection); 32025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 70: 32045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion70Database(&connection); 32055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 71: 32075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion71Database(&connection); 32085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 72: 32105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion72Database(&connection); 32115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 73: 32135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion73Database(&connection); 32145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 74: 32165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion74Database(&connection); 32175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 75: 32195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion75Database(&connection); 32205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 76: 32225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion76Database(&connection); 32235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 77: 32255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion77Database(&connection); 32265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 78: 32285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion78Database(&connection); 32295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 79: 32315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion79Database(&connection); 32325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 80: 32345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion80Database(&connection); 32355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 81: 32375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion81Database(&connection); 32385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 82: 32405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion82Database(&connection); 32415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 32422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case 83: 32432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion83Database(&connection); 32442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 32452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case 84: 32462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion84Database(&connection); 32472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 3248c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case 85: 3249c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion85Database(&connection); 3250c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) break; 3251c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case 86: 3252c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion86Database(&connection); 3253c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) break; 3254e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch case 87: 3255e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch SetUpVersion87Database(&connection); 3256e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch break; 32575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 32585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If you see this error, it may mean that you've increased the 32595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // database version number but you haven't finished adding unit tests 32605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for the database migration code. You need to need to supply a 3261a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // SetUpVersionYDatabase function with a dump of the test database 3262a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // at the new schema. See the MigrateToLatestAndDump test case. 32635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FAIL() << "Need to supply database dump for version " << GetParam(); 32645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 32655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) syncable::Directory::KernelLoadInfo dir_info; 3267868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 32682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals;; 3269868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map); 32705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 32725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 32735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3274868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(OPENED, dbs->Load(&handles_map, &delete_journals, &dir_info)); 32755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 32765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); 32775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 32785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns deleted in Version 67. 32805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "name")); 32815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unsanitized_name")); 32825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "server_name")); 32835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns added in Version 68. 32855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); 32865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); 32875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns deleted in Version 68. 32895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "is_bookmark_object")); 32905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", 32915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object")); 32925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_favicon")); 32935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_url")); 32945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "server_bookmark_url")); 32955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Renamed a column in Version 70 32975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "singleton_tag")); 32985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); 32995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); 33005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removed extended attributes in Version 72. 33025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); 33035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns added in Version 73. 33055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); 33065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column replaced in version 75. 33085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); 33095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); 33105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns removed in version 76. 33125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 33135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 33145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 33155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 33165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 33175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 33185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 33195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 33205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 33215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 33225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 78. 33245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); 33255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 82. 33275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); 33285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 83. 33305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); 33315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Table added in version 84. 33332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("deleted_metas")); 33342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 33352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Column removed in version 85. 33362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); 33372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3338a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Columns removed in version 86. 3339a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "next_id")); 3340a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "prev_id")); 3341a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); 3342a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3343e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // Column added in version 87. 3344e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "attachment_metadata")); 3345e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 33465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check download_progress state (v75 migration) 33475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(694, 33485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 33495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .timestamp_token_for_migration()); 33505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 33515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 33525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_token()); 33535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(32904, 33545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 33555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .data_type_id()); 33565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 33575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 33585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_timestamp_token_for_migration()); 33595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 33605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 33615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_token()); 33625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 33635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 33645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .token().empty()); 33655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(41210, 33665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 33675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .data_type_id()); 33685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check metas 33705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedMetaProtoTimes(DONT_INCLUDE_DELETED_ITEMS), 33715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(&connection)); 3372868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ExpectTimes(handles_map, GetExpectedMetaTimes()); 33735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3374868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap::iterator it = handles_map.find(1); 3375868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_TRUE(it != handles_map.end()); 3376868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(1, it->second->ref(META_HANDLE)); 3377868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(ID).IsRoot()); 3378a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3379a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3380a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3381e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3382a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3383a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Items 2, 4, and 5 were deleted. 3384a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it = handles_map.find(2); 3385a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(it == handles_map.end()); 3386a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it = handles_map.find(4); 3387a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(it == handles_map.end()); 3388a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it = handles_map.find(5); 3389a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(it == handles_map.end()); 33905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3391868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(6); 3392868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(6, it->second->ref(META_HANDLE)); 3393868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(IS_DIR)); 3394868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_IS_DIR)); 3395a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); 3396a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); 3397a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); 3398868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 3399a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3400a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3401a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3402a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3403e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3404868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3405868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(7); 3406868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(7, it->second->ref(META_HANDLE)); 3407868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("google_chrome", it->second->ref(UNIQUE_SERVER_TAG)); 3408868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).has_bookmark()); 3409868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3410a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't assign positions to google_chrome. 3411a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3412a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3413a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3414e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3415868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3416868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(8); 3417868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(8, it->second->ref(META_HANDLE)); 3418868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("google_chrome_bookmarks", it->second->ref(UNIQUE_SERVER_TAG)); 3419868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3420868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3421a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ(it->second->ref(ID).value(), "s_ID_8"); 3422a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't mistake the bookmark root node for a real bookmark. 3423a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3424a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3425a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3426e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3427868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3428868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(9); 3429868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(9, it->second->ref(META_HANDLE)); 3430868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("bookmark_bar", it->second->ref(UNIQUE_SERVER_TAG)); 3431868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3432868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3433a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't assign positions to bookmark_bar. 3434a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3435a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3436a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3437e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3438868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3439868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(10); 3440868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(10, it->second->ref(META_HANDLE)); 3441868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DEL)); 3442868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3443868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3444868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); 3445a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); 3446a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); 3447868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 3448868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("other_bookmarks", it->second->ref(UNIQUE_SERVER_TAG)); 3449868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Other Bookmarks", it->second->ref(NON_UNIQUE_NAME)); 3450868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Other Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME)); 3451a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ(it->second->ref(ID).value(), "s_ID_10"); 3452e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3453a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't assign positions to server-created folders, either. 3454a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3455a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3456a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3457e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3458868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3459868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(11); 3460868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(11, it->second->ref(META_HANDLE)); 3461868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DEL)); 3462868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DIR)); 3463868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3464868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 34655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("http://dev.chromium.org/", 3466a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(SPECIFICS).bookmark().url()); 3467a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("AGATWA", it->second->ref(SPECIFICS).bookmark().favicon()); 34685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("http://dev.chromium.org/other", 3469a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(SERVER_SPECIFICS).bookmark().url()); 3470a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("AFAGVASF", it->second->ref(SERVER_SPECIFICS).bookmark().favicon()); 3471868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("", it->second->ref(UNIQUE_SERVER_TAG)); 3472868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Home (The Chromium Projects)", it->second->ref(NON_UNIQUE_NAME)); 3473868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Home (The Chromium Projects)", 3474868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it->second->ref(SERVER_NON_UNIQUE_NAME)); 3475a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3476a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3477a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3478a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3479e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3480868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3481868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(12); 3482868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(12, it->second->ref(META_HANDLE)); 3483868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DEL)); 3484868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(IS_DIR)); 3485868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Extra Bookmarks", it->second->ref(NON_UNIQUE_NAME)); 3486868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Extra Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME)); 3487868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3488868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3489a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); 3490a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); 3491a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); 3492868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 3493a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3494a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3495a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3496a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3497e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 34985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3499868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(13); 3500868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(13, it->second->ref(META_HANDLE)); 3501a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3502a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3503a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3504a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3505e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 35065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3507868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(14); 3508868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(14, it->second->ref(META_HANDLE)); 3509a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3510a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3511a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3512a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3513e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 35145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3515868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(static_cast<size_t>(10), handles_map.size()); 3516a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3517a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure that the syncable::Directory and the migration code agree on 3518a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // which items should or should not have unique position values. This test 3519a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // may become obsolete if the directory's definition of that function 3520a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // changes, but, until then, this is a useful test. 3521a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) for (it = handles_map.begin(); it != handles_map.end(); it++) { 3522a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SCOPED_TRACE(it->second->ref(ID)); 3523a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (it->second->ShouldMaintainPosition()) { 3524a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3525a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3526a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3527a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } else { 3528a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3529a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3530a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3531a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 3532a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 35335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 35345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTANTIATE_TEST_CASE_P(DirectoryBackingStore, MigrationTest, 3536c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) testing::Range(67, kCurrentDBVersion + 1)); 35375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, ModelTypeIds) { 35392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ModelTypeSet protocol_types = ProtocolTypes(); 35402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (ModelTypeSet::Iterator iter = protocol_types.First(); iter.Good(); 35412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) iter.Inc()) { 35425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string model_id = 35432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestDirectoryBackingStore::ModelTypeEnumToModelId(iter.Get()); 35442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(iter.Get(), 35455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDirectoryBackingStore::ModelIdToModelTypeEnum(model_id.data(), 35465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_id.size())); 35475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 35495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 35515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OnDiskDirectoryBackingStoreForTest : public OnDiskDirectoryBackingStore { 35535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 35545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDiskDirectoryBackingStoreForTest(const std::string& dir_name, 35552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& backing_filepath); 35565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~OnDiskDirectoryBackingStoreForTest(); 35575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool DidFailFirstOpenAttempt(); 35585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 35605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ReportFirstTryOpenFailure() OVERRIDE; 35615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 35635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool first_open_failed_; 35645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 35655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OnDiskDirectoryBackingStoreForTest::OnDiskDirectoryBackingStoreForTest( 35675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& dir_name, 35682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& backing_filepath) : 35695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDiskDirectoryBackingStore(dir_name, backing_filepath), 35705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_open_failed_(false) { } 35715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OnDiskDirectoryBackingStoreForTest::~OnDiskDirectoryBackingStoreForTest() { } 35735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OnDiskDirectoryBackingStoreForTest::ReportFirstTryOpenFailure() { 35755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do nothing, just like we would in release-mode. In debug mode, we DCHECK. 35765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_open_failed_ = true; 35775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 35785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool OnDiskDirectoryBackingStoreForTest::DidFailFirstOpenAttempt() { 35805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return first_open_failed_; 35815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 35825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 35845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is a whitebox test intended to exercise the code path where the on-disk 35865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// directory load code decides to delete the current directory and start fresh. 35875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is considered "minor" corruption because the database recreation is 35895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// expected to succeed. The alternative, where recreation does not succeed (ie. 35905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// due to read-only file system), is not tested here. 35915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MinorCorruption) { 35925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<OnDiskDirectoryBackingStore> dbs( 35945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath())); 35955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 35965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Corrupt the root node. 35995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 36005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 36015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.Open(GetDatabasePath())); 36025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.Execute( 36035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "UPDATE metas SET parent_id='bogus' WHERE id = 'r';")); 36045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 36055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 36075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<OnDiskDirectoryBackingStoreForTest> dbs( 36085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new OnDiskDirectoryBackingStoreForTest(GetUsername(), 36095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDatabasePath())); 36105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 36125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(dbs->DidFailFirstOpenAttempt()); 36135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 36145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, DeleteEntries) { 36175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 36185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 36195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpCurrentDatabaseAndCheckVersion(&connection); 36215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 36225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3623868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 36242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals; 36255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo kernel_load_info; 3626868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map); 36275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3628868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->Load(&handles_map, &delete_journals, &kernel_load_info); 3629868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) size_t initial_size = handles_map.size(); 3630868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_LT(0U, initial_size) << "Test requires handles_map to delete."; 3631868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int64 first_to_die = handles_map.begin()->second->ref(META_HANDLE); 36325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetahandleSet to_delete; 36335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to_delete.insert(first_to_die); 36342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(dbs->DeleteEntries(TestDirectoryBackingStore::METAS_TABLE, 36352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) to_delete)); 36365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3637868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLDeleteValues(&handles_map); 3638868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->LoadEntries(&handles_map); 36395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3640868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(initial_size - 1, handles_map.size()); 36415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool delete_failed = false; 3642868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) for (Directory::MetahandlesMap::iterator it = handles_map.begin(); 3643868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it != handles_map.end(); ++it) { 3644868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (it->first == first_to_die) { 36455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete_failed = true; 36465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 36475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 36485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 36495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(delete_failed); 36505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to_delete.clear(); 3652868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) for (Directory::MetahandlesMap::iterator it = handles_map.begin(); 3653868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it != handles_map.end(); ++it) { 3654868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) to_delete.insert(it->first); 36555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 36565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(dbs->DeleteEntries(TestDirectoryBackingStore::METAS_TABLE, 36582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) to_delete)); 36595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3660868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLDeleteValues(&handles_map); 3661868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->LoadEntries(&handles_map); 3662868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(0U, handles_map.size()); 36635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, GenerateCacheGUID) { 36665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& guid1 = TestDirectoryBackingStore::GenerateCacheGUID(); 36675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& guid2 = TestDirectoryBackingStore::GenerateCacheGUID(); 36685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(24U, guid1.size()); 36695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(24U, guid2.size()); 36705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // In theory this test can fail, but it won't before the universe 36715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // dies of heat death. 36725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(guid1, guid2); 36735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncable 36765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncer 3677