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) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.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); 78c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void SetUpVersion88Database(sql::Connection* connection); 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void SetUpVersion89Database(sql::Connection* connection); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpCurrentDatabaseAndCheckVersion(sql::Connection* connection) { 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SetUpVersion89Database(connection); // Prepopulates data. 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), connection)); 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ScopedTempDir temp_dir_; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DirectoryBackingStoreTest : public MigrationTest {}; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// On Windows, we used to store timestamps in FILETIME format. 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_1 129079956640320000LL 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_2 128976886618480000LL 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_4 129002163642690000LL 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_5 129001555500000000LL 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_6 129053976170000000LL 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_7 128976864758480000LL 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_8 128976864758480000LL 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_9 128976864758480000LL 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_10 128976864758480000LL 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_11 129079956948440000LL 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_12 129079957513650000LL 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_13 129079957985300000LL 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_14 129079958383000000LL 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_1 "129079956640320000" 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_2 "128976886618480000" 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_4 "129002163642690000" 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_5 "129001555500000000" 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_6 "129053976170000000" 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_7 "128976864758480000" 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_8 "128976864758480000" 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_9 "128976864758480000" 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_10 "128976864758480000" 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_11 "129079956948440000" 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_12 "129079957513650000" 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_13 "129079957985300000" 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_14 "129079958383000000" 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Generated via: 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ruby -ane '$F[1].sub!("LEGACY_", ""); $F[2] = Integer($F[2].sub!("LL", "")) / 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 10000 - 11644473600000; print "#{$F[0]} #{$F[1]} #{$F[2]}LL"' 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Magic numbers taken from 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://stackoverflow.com/questions/5398557/ 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// java-library-for-dealing-with-win32-filetime . 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Now we store them in Java format (ms since the Unix epoch). 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_1 1263522064032LL 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_2 1253215061848LL 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_4 1255742764269LL 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_5 1255681950000LL 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_6 1260924017000LL 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_7 1253212875848LL 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_8 1253212875848LL 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_9 1253212875848LL 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_10 1253212875848LL 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_11 1263522094844LL 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_12 1263522151365LL 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_13 1263522198530LL 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_14 1263522238300LL 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_1 "1263522064032" 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_2 "1253215061848" 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_4 "1255742764269" 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_5 "1255681950000" 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_6 "1260924017000" 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_7 "1253212875848" 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_8 "1253212875848" 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_9 "1253212875848" 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_10 "1253212875848" 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_11 "1263522094844" 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_12 "1263522151365" 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_13 "1263522198530" 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_14 "1263522238300" 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// On other platforms, we used to store timestamps in time_t format (s 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// since the Unix epoch). 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_1 1263522064LL 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_2 1253215061LL 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_4 1255742764LL 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_5 1255681950LL 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_6 1260924017LL 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_7 1253212875LL 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_8 1253212875LL 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_9 1253212875LL 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_10 1253212875LL 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_11 1263522094LL 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_12 1263522151LL 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_13 1263522198LL 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_14 1263522238LL 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_1 "1263522064" 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_2 "1253215061" 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_4 "1255742764" 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_5 "1255681950" 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_6 "1260924017" 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_7 "1253212875" 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_8 "1253212875" 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_9 "1253212875" 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_10 "1253212875" 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_11 "1263522094" 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_12 "1263522151" 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_13 "1263522198" 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_14 "1263522238" 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Now we store them in Java format (ms since the Unix epoch). 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_1 1263522064000LL 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_2 1253215061000LL 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_4 1255742764000LL 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_5 1255681950000LL 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_6 1260924017000LL 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_7 1253212875000LL 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_8 1253212875000LL 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_9 1253212875000LL 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_10 1253212875000LL 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_11 1263522094000LL 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_12 1263522151000LL 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_13 1263522198000LL 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_14 1263522238000LL 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_1 "1263522064000" 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_2 "1253215061000" 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_4 "1255742764000" 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_5 "1255681950000" 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_6 "1260924017000" 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_7 "1253212875000" 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_8 "1253212875000" 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_9 "1253212875000" 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_10 "1253212875000" 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_11 "1263522094000" 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_12 "1263522151000" 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_13 "1263522198000" 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_14 "1263522238000" 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper macros for the database dumps in the SetUpVersion*Database 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// functions. 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES(x) LEGACY_META_PROTO_TIMES_##x 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR(x) LEGACY_META_PROTO_TIMES_STR_##x 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_PROTO_TIME_VALS(x) \ 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES(x) META_PROTO_TIMES_##x 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR(x) META_PROTO_TIMES_STR_##x 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_VALS(x) \ 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper functions for testing. 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum ShouldIncludeDeletedItems { 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) INCLUDE_DELETED_ITEMS, 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DONT_INCLUDE_DELETED_ITEMS 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected legacy time (in proto 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// format). 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetExpectedLegacyMetaProtoTimes( 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ShouldIncludeDeletedItems include_deleted) { 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> expected_legacy_meta_proto_times; 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[1] = LEGACY_META_PROTO_TIMES(1); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (include_deleted == INCLUDE_DELETED_ITEMS) { 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[2] = LEGACY_META_PROTO_TIMES(2); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[4] = LEGACY_META_PROTO_TIMES(4); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[5] = LEGACY_META_PROTO_TIMES(5); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[6] = LEGACY_META_PROTO_TIMES(6); 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[7] = LEGACY_META_PROTO_TIMES(7); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[8] = LEGACY_META_PROTO_TIMES(8); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[9] = LEGACY_META_PROTO_TIMES(9); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[10] = LEGACY_META_PROTO_TIMES(10); 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[11] = LEGACY_META_PROTO_TIMES(11); 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[12] = LEGACY_META_PROTO_TIMES(12); 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[13] = LEGACY_META_PROTO_TIMES(13); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[14] = LEGACY_META_PROTO_TIMES(14); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_legacy_meta_proto_times; 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected time (in proto format). 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetExpectedMetaProtoTimes( 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ShouldIncludeDeletedItems include_deleted) { 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> expected_meta_proto_times; 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[1] = META_PROTO_TIMES(1); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (include_deleted == INCLUDE_DELETED_ITEMS) { 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[2] = META_PROTO_TIMES(2); 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[4] = META_PROTO_TIMES(4); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[5] = META_PROTO_TIMES(5); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[6] = META_PROTO_TIMES(6); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[7] = META_PROTO_TIMES(7); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[8] = META_PROTO_TIMES(8); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[9] = META_PROTO_TIMES(9); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[10] = META_PROTO_TIMES(10); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[11] = META_PROTO_TIMES(11); 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[12] = META_PROTO_TIMES(12); 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[13] = META_PROTO_TIMES(13); 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[14] = META_PROTO_TIMES(14); 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_meta_proto_times; 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected time (as a Time object). 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, base::Time> GetExpectedMetaTimes() { 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, base::Time> expected_meta_times; 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::map<int64, int64>& expected_meta_proto_times = 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (std::map<int64, int64>::const_iterator it = 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times.begin(); 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) it != expected_meta_proto_times.end(); ++it) { 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_times[it->first] = ProtoTimeToTime(it->second); 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_meta_times; 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Extracts a map from metahandle -> time (in proto format) from the 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// given database. 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetMetaProtoTimes(sql::Connection *db) { 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(db->GetCachedStatement( 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SQL_FROM_HERE, 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, mtime, server_mtime, ctime, server_ctime " 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas")); 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(5, s.ColumnCount()); 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> meta_times; 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (s.Step()) { 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 metahandle = s.ColumnInt64(0); 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 mtime = s.ColumnInt64(1); 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 server_mtime = s.ColumnInt64(2); 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 ctime = s.ColumnInt64(3); 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 server_ctime = s.ColumnInt64(4); 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, server_mtime); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, ctime); 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, server_ctime); 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) meta_times[metahandle] = mtime; 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(s.Succeeded()); 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return meta_times; 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)::testing::AssertionResult AssertTimesMatch(const char* t1_expr, 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* t2_expr, 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& t1, 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& t2) { 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (t1 == t2) 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ::testing::AssertionSuccess(); 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ::testing::AssertionFailure() 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << t1_expr << " and " << t2_expr 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " (internal values: " << t1.ToInternalValue() 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " and " << t2.ToInternalValue() 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << ") (proto time: " << TimeToProtoTime(t1) 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " and " << TimeToProtoTime(t2) 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << ") do not match"; 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Expect that all time fields of the given entry kernel will be the 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// given time. 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ExpectTime(const EntryKernel& entry_kernel, 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& expected_time) { 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(CTIME)); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(SERVER_CTIME)); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(MTIME)); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(SERVER_MTIME)); 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 367868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Expect that all the entries in |entries| have times matching those in 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the given map (from metahandle to expect time). 369868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void ExpectTimes(const Directory::MetahandlesMap& handles_map, 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::map<int64, base::Time>& expected_times) { 371868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) for (Directory::MetahandlesMap::const_iterator it = handles_map.begin(); 372868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it != handles_map.end(); ++it) { 373868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int64 meta_handle = it->first; 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SCOPED_TRACE(meta_handle); 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, base::Time>::const_iterator it2 = 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_times.find(meta_handle); 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it2 == expected_times.end()) { 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ADD_FAILURE() << "Could not find expected time for " << meta_handle; 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 381868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ExpectTime(*it->second, it2->second); 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion67Database(sql::Connection* connection) { 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is a version 67 database dump whose contents were backformed from 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the contents of the version 68 database dump (the v68 migration was 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // actually written first). 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,server_is_bookmark_object bit default 0," 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "name varchar(255), " /* COLLATE PATHNAME, */ 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unsanitized_name varchar(255)," /* COLLATE PATHNAME, */ 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar," 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_name varchar(255)," /* COLLATE PATHNAME */ 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_non_unique_name varchar," 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob);" 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);" 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item',NULL,'Deleted Item','Deleted Item','Deleted Item'," 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/','http://www.google.com/2',NULL,'AASGASGA'," 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ASADGADGADG');" 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium',NULL,'Welcome to Chromium'," 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,'Google','Google','Google','http://www.google.com/'," 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,'The Internet','The Internet'," 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,NULL,NULL,NULL);" 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,'Google Chrome','Google Chrome'," 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL);" 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,'Bookmarks','Bookmarks','Bookmarks',NULL,NULL," 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'google_chrome_bookmarks',NULL,NULL);" 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Bookmark Bar',NULL,'Bookmark Bar','Bookmark Bar','Bookmark Bar'," 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,'bookmark_bar',NULL,NULL);" 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152," 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks',NULL,'Other Bookmarks','Other Bookmarks'," 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks',NULL,NULL,'other_bookmarks'," 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL);" 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)',NULL,'Home (The Chromium Projects)'," 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF');" 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks',NULL,'Extra Bookmarks','Extra Bookmarks'," 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'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) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL," 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'PNGAXF0AAFF','DAAFASF');" 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project',NULL," 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','http://webkit.org/'," 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/x',NULL,'PNGX','PNG2Y');" 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',68);")); 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion68Database(sql::Connection* connection) { 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This sets up an actual version 68 database dump. The IDs were 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // canonicalized to be less huge, and the favicons were overwritten 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // with random junk so that they didn't contain any unprintable 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // characters. A few server URLs were tweaked so that they'd be 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // different from the local URLs. Lastly, the custom collation on 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the server_non_unique_name column was removed. 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0," 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object bit default 0," 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob);" 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL,NULL,NULL,NULL);" 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item','http://www.google.com/'," 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG');" 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google','Google','http://www.google.com/'," 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet','The Internet',NULL,NULL,NULL,NULL,NULL);" 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome','Google Chrome',NULL,NULL,'google_chrome',NULL," 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL);" 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL," 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152," 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL);" 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF');" 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL," 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'PNGAXF0AAFF','DAAFASF');" 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y');" 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',68);")); 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion69Database(sql::Connection* connection) { 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0," 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object bit default 0," 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob, specifics blob, " 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL,NULL,NULL,NULL,NULL," 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item','http://www.google.com/'," 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG'," 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841415" 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "34741534741',X'C28810260A17687474703A2F2F7777772E676F6F676C652E636F" 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6D2F32120B4153414447414447414447');" 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL,NULL," 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A3168" 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F6" 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "56E2F77656C636F6D652E68746D6C1200');" 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google','Google','http://www.google.com/'," 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG',X'C28810220A166" 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "87474703A2F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'" 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464" 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "447415347');" 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6" 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1,'The Internet'," 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,NULL,NULL,NULL,X'C2881000',X'C2881000');" 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1,'Google Chrome'," 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL,NULL,NULL);" 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL," 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0,1," 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL,NULL," 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C2881000',X'C2881000');" 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF',X'C28810220A18687474703A2F2F6465762E6368726F6D6" 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9756D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F646576" 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2E6368726F6D69756D2E6F72672F6F7468657212084146414756415346');" 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL," 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL,'PNGAXF0AAFF'," 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'DAAFASF',X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F1" 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "20B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963" 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "616E6E2E636F6D2F120744414146415346');" 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y'," 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C2" 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "88101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259');" 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',69);" 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion70Database(sql::Connection* connection) { 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',70);" 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_dir bit default 0,server_is_del bit default 0," 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar," 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "specifics blob,server_specifics blob);" 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');" 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) "," 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-2097152,4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0," 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A" 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X'C2881026" 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B415341444741" 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4447414447');" 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A" 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E74" 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F" 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765" 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C636F6D652E68746D6C1200');" 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C6" 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "52E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F77777" 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72E676F6F676C652E636F6D2F12084147464447415347');" 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome'," 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome','google_chrome',NULL,NULL,NULL);" 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000'," 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0," 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881000'," 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2097152,2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F" 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636872" 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6D69756D2E6F72672F6F7468657212084146414756415346');" 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F" 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E69" 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "63616E6E2E636F6D2F120744414146415346');" 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F78120550" 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E473259');" 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion71Database(sql::Connection* connection) { 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',71);" 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT);" 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');")); 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion72Database(sql::Connection* connection) { 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',72);" 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT);" 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');")); 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion73Database(sql::Connection* connection) { 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',73);" 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT, " 11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "notification_state BLOB);" 11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x',X'C2881000');")); 11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion74Database(sql::Connection* connection) { 11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',74);" 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, last_download_timestamp" 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " INT, initial_sync_ended BOOLEAN default 0);" 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd" 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra" 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion_state INT default 0, bookmarks_added_during_autofill_migration" 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " INT default 0, autofill_migration_time INT default 0, autofill_ent" 11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ries_added_during_migration INT default 0, autofill_profiles_added_" 11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "during_migration INT default 0);" 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'" 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542" 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);" 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,bas" 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_version bigint default -1,server_version bigint default 0,mtime b" 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "igint default 0,server_mtime bigint default 0,ctime bigint default " 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,server_ctime bigint default 0,server_position_in_parent bigint de" 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault 0,local_external_id bigint default 0,id varchar(255) default " 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'r',parent_id varchar(255) default 'r',server_parent_id varchar(255" 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ") default 'r',prev_id varchar(255) default 'r',next_id varchar(255)" 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " default 'r',is_unsynced bit default 0,is_unapplied_update bit defa" 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 0,is_del bit default 0,is_dir bit default 0,server_is_dir bit d" 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_is_del bit default 0,non_unique_name varchar,server" 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_non_unique_name varchar(255),unique_server_tag varchar,unique_clie" 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "nt_tag varchar,specifics blob,server_specifics blob);" 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'" 11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "');" 11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_2','s_ID" 11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted " 11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" 11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "36F6D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E67" 11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6F676C652E636F6D2F32120B4153414447414447414447');" 11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_4','s_ID" 12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','W" 12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "elcome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E6" 12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E" 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "68746D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636" 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');" 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5','s_ID_" 12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NU" 12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841" 12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47415347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "36F6D2F12084147464447415347');" 12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_6','s_ID" 12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL" 12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,X'C2881000',X'C2881000');" 12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7','r','r" 12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrom" 12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e',NULL,NULL,NULL);" 12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8','s_ID_" 12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chr" 12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ome_bookmarks',NULL,X'C2881000',X'C2881000');" 12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9','s_ID_" 12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'" 12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'bookmark_bar',NULL,X'C2881000',X'C2881000');" 12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_10','s_I" 12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Boo" 12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "kmarks','other_bookmarks',NULL,X'C2881000',X'C2881000');" 12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID_11','s_" 12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projec" 12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ts)','Home (The Chromium Projects)',NULL,NULL,X'C28810220A186874747" 12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810" 12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120" 12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "84146414756415346');" 12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s_ID_6','" 12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bo" 12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "okmarks',NULL,NULL,X'C2881000',X'C2881000');" 12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID_13','s_" 12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Co" 12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "rporation for Assigned Names and Numbers','ICANN | Internet Corpora" 12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474" 12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C" 12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F12074441414641" 12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5346');" 12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID_14','s_" 12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Pr" 12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "oject','The WebKit Open Source Project',NULL,NULL,X'C288101A0A12687" 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474" 12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "703A2F2F7765626B69742E6F72672F781205504E473259');" 12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion75Database(sql::Connection* connection) { 12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',75);" 12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd" 12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra" 12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion_state INT default 0,bookmarks_added_during_autofill_migration " 12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INT default 0, autofill_migration_time INT default 0, autofill_entr" 12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ies_added_during_migration INT default 0, autofill_profiles_added_d" 12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "uring_migration INT default 0);" 12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org" 12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-655" 12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "42,'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);" 12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, " 12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BOOLEAN default 0);" 12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,ba" 12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "se_version bigint default -1,server_version bigint default 0,mtime" 12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " bigint default 0,server_mtime bigint default 0,ctime bigint defau" 12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "lt 0,server_ctime bigint default 0,server_position_in_parent bigin" 12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t default 0,local_external_id bigint default 0,id varchar(255) def" 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ault 'r',parent_id varchar(255) default 'r',server_parent_id varch" 12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ar(255) default 'r',prev_id varchar(255) default 'r',next_id varch" 12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ar(255) default 'r',is_unsynced bit default 0,is_unapplied_update " 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bit default 0,is_del bit default 0,is_dir bit default 0,server_is_" 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "dir bit default 0,server_is_del bit default 0,non_unique_name varc" 12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,server_non_unique_name varchar(255),unique_server_tag varchar," 12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_client_tag varchar,specifics blob,server_specifics blob);" 12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NUL" 12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "L,X'',X'');" 12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_" 12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Ite" 12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "m','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772" 12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A176874" 12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "74703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474" 13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447');" 13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_" 13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to " 13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A316874747" 13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F65" 13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7" 13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765" 13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C636F6D652E68746D6C1200');" 13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5" 13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Goo" 13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "gle',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C65" 13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F777" 13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7772E676F6F676C652E636F6D2F12084147464447415347');" 13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_" 13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The In" 13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ternet',NULL,NULL,X'C2881000',X'C2881000');" 13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7" 13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','" 13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "google_chrome',NULL,NULL,NULL);" 13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8" 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks'" 13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9" 13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','B" 13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_" 13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks" 13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','Other Bookmarks','other_bookmarks',NULL,X'C2881000',X'C28810" 13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00');" 13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID" 13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chr" 13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "omium Projects)','Home (The Chromium Projects)',NULL,NULL,X'C28" 13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F120641" 13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s" 13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmark" 13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "s','Extra Bookmarks',NULL,NULL,X'C2881000',X'C2881000');" 13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID" 13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN |" 13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " Internet Corporation for Assigned Names and Numbers','ICANN | " 13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Internet Corporation for Assigned Names and Numbers',NULL,NULL," 13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E696361" 13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6E6E2E636F6D2F120744414146415346');" 13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID" 13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Op" 13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "en Source Project','The WebKit Open Source Project',NULL,NULL,X" 13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758'," 13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473" 13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "259');" 13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion76Database(sql::Connection* connection) { 13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',76);" 13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,mtime big" 13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "int default 0,server_mtime bigint default 0,ctime bigint default 0,s" 13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "erver_ctime bigint default 0,server_position_in_parent bigint defaul" 13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 0,local_external_id bigint default 0,id varchar(255) default 'r',p" 13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob);" 13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'')" 13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ";" 13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_2','s_ID_9" 13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted Ite" 13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "m',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6" 13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E676F6F6" 13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76C652E636F6D2F32120B4153414447414447414447');" 13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_4','s_ID_9" 13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','Welc" 13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E676F6" 14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746" 14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6" 14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');" 14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5','s_ID_9'" 14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NULL," 14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F1208414741" 14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D" 14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F12084147464447415347');" 14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_6','s_ID_9" 14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL,NU" 14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000');" 14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7','r','r'," 14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrome'," 14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL);" 14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8','s_ID_7'" 14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chrome" 14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_bookmarks',NULL,X'C2881000',X'C2881000');" 14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9','s_ID_8'" 14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar','b" 14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ookmark_bar',NULL,X'C2881000',X'C2881000');" 14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_10','s_ID_" 14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Bookma" 14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "rks','other_bookmarks',NULL,X'C2881000',X'C2881000');" 14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID_11','s_ID" 14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projects)" 14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','Home (The Chromium Projects)',NULL,NULL,X'C28810220A18687474703A2" 14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1" 14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120841464" 14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14756415346');" 14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s_ID_6','s_" 14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm" 14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arks',NULL,NULL,X'C2881000',X'C2881000');" 14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID_13','s_ID" 14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Corpo" 14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ration for Assigned Names and Numbers','ICANN | Internet Corporation" 14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474703A2" 14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C288102" 14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00A15687474703A2F2F7777772E6963616E6E2E636F6D2F120744414146415346');" 14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID_14','s_ID" 14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Proje" 14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ct','The WebKit Open Source Project',NULL,NULL,X'C288101A0A126874747" 14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2" 14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7765626B69742E6F72672F781205504E473259');" 14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion77Database(sql::Connection* connection) { 14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',77);" 14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob);" 14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) 14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');" 14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447');" 14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200');" 14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," META_PROTO_TIMES_VALS(5) 15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','" 15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E" 15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E67" 15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6F676C652E636F6D2F12084147464447415347');" 15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," META_PROTO_TIMES_VALS(7) 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Goo" 15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "gle Chrome','google_chrome',NULL,NULL,NULL);" 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," META_PROTO_TIMES_VALS(8) 15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmar" 15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," META_PROTO_TIMES_VALS(9) 15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'" 15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000');" 15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346');" 15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," META_PROTO_TIMES_VALS(12) 15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_12','s_ID_6','s_" 15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm" 15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arks',NULL,NULL,X'C2881000',X'C2881000');" 15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346');" 15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259');" 15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion78Database(sql::Connection* connection) { 15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',78);" 15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 15645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 16155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 16275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 16315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 16325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 16445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 16455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 16465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion79Database(sql::Connection* connection) { 16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',79);" 16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 16605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 16625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 16705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 16725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 16805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 16815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 16845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 16855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 17035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 17045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 17205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 17305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL);" 17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion80Database(sql::Connection* connection) { 17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 17465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 17495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',80);" 17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 17515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 17535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 17635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 17745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 17755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 17765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 17775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 17785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 17795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 17805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 17815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 17905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 17915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 17975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 17985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 18045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 18055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 18075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 18095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 18115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 18165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 18185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 18195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 18285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 18315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 18325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 18335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 18345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 18355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);" 18365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 18375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 18385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper definitions to create the version 81 DB tables. 18425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int V80_ROW_COUNT = 13; 18455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int64 V80_POSITIONS[V80_ROW_COUNT] = { 18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -2097152, 18485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -3145728, 18495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -4194304, 18515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2097152, 18555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1048576, 18565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 18575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -917504, 18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576 18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string V81_Ordinal(int n) { 18625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return Int64ToNodeOrdinal(V80_POSITIONS[n]).ToInternalValue(); 18635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} //namespace 18665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Unlike the earlier versions, the rows for version 81 are generated 18685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// programmatically to accurately handle unprintable characters for the 18695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// server_ordinal_in_parent field. 18705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion81Database(sql::Connection* connection) { 18715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 18725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 18735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 18745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 18755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',81);" 18765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 18775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 18785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 18795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 18805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 18815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0" 18825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 18845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 18855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 18865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 18875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 18885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 18895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 18905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 18915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ", server_ordinal_in_parent blob);" 18925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 18935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 18945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 18955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 18965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 18975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 18985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 18995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 19015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 19025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);", 19035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 19045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 19055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 19065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 19075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 19085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL,?);", 19095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 19105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 19115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 19125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 19135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 19145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 19155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?);", 19165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 19175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 19185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 19195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 19205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 19215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL,?);", 19225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 19235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 19245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 19255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,?);", 19265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 19275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 19285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);", 19295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 19305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 19315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 19325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL,?);", 19335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 19345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 19355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 19365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL,?);", 19375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 19385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 19395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 19405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?);", 19415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 19425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 19435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 19445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 19455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 19465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);", 19475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 19485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 19495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 19505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL,?);", 19515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 19525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 19535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 19545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 19555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 19565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 19575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?);", 19585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 19595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 19605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 19615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 19625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL,?);" }; 19645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 19665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 19675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ord = V81_Ordinal(i); 19685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 19695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Run()); 19705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Reset(true); 19715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 19725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 19735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 19745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion82Database(sql::Connection* connection) { 19765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 19775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 19785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 19795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 19802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',82);" 19815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 19825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 19835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0);" 19845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 19855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 19865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 19875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0" 19885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 19895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 19905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 19915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 19925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 19935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 19945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 19955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 19965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 19975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ", server_ordinal_in_parent blob);" 19985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 19995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 20005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 20015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 20025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 20035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 20045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 20055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 20075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 20085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);", 20095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 20105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 20115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 20125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 20135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 20145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL,?);", 20155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 20165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 20175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 20185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 20195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 20205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 20215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?);", 20225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 20235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 20245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 20255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 20265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 20275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL,?);", 20285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 20295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 20305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 20315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,?);", 20325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 20335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 20345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);", 20355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 20365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 20375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 20385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL,?);", 20395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 20405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 20415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 20425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL,?);", 20435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 20445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 20455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 20465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?);", 20475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 20485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 20495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 20505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 20515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 20525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);", 20535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 20545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 20555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 20565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL,?);", 20575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 20585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 20595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 20605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 20615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 20625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 20635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?);", 20645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 20655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 20665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 20675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 20685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 20695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL,?);" }; 20705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 20725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 20735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ord = V81_Ordinal(i); 20745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 20755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Run()); 20765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Reset(true); 20775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 20785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 20795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 20805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MigrationTest::SetUpVersion83Database(sql::Connection* connection) { 20822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 20832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 20842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 20852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 20862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',83);" 20872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 20882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 20892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "default 0);" 20902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 20912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 20922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 20932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 20942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 20952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 20962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 20972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 20982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 20992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 21002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 21012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 21022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 21032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 21042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 21052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 21062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 21072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 21082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "blob);" 21092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 21102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 21112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 21122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 21132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 21142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 21152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", 21162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 21172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 21182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 21192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 21202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 21212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "14447414447414447',NULL,?,0);", 21222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 21232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 21242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 21252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 21262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 21272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 21282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", 21292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 21302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 21312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 21322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 21332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 21342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ULL,?,0);", 21352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 21362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 21372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 21382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",NULL,?,0);", 21392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 21402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 21412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" 21422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "", 21432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 21442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 21452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 21462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "00',X'C2881000',NULL,?,0);", 21472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 21482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 21492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 21502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "000',X'C2881000',NULL,?,0);", 21512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 21522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 21532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 21542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?,0);", 21552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 21562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 21572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 21582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 21592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 21602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", 21612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 21622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 21632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 21642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2881000',X'C2881000',NULL,?,0);", 21652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 21662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 21672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 21682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 21692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 21702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 21712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", 21722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 21732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 21742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 21752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 21762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 21772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "81205504E473259',NULL,?,0);" }; 21782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 21792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 21802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 21812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string ord = V81_Ordinal(i); 21822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 21832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(s.Run()); 21842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.Reset(true); 21852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 21862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 21872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 21882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 21892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MigrationTest::SetUpVersion84Database(sql::Connection* connection) { 21902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 21912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 21922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 21932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 21942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',84);" 21952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 21962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 21972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "default 0);" 21982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 21992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 22002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 22012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 22022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 22032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 22042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 22052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 22062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 22072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 22082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 22092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 22102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 22112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 22122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 22132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'deleted_metas'" 22142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "(metahandle bigint primary key ON CONFLICT FAIL,base" 22152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 22162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 22172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 22182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 22192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 22202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 22212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 22222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 22232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 22242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 22252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 22262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 22272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 22282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 22292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 22302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 22312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "blob);" 22322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 22332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 22342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 22352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 22362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 22372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 22382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", 22392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 22402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 22412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 22422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 22432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 22442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "14447414447414447',NULL,?,0);", 22452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 22462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 22472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 22482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 22492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 22502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 22512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", 22522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 22532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 22542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 22552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 22562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 22572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ULL,?,0);", 22582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 22592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 22602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 22612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",NULL,?,0);", 22622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 22632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 22642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" 22652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "", 22662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 22672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 22682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 22692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "00',X'C2881000',NULL,?,0);", 22702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 22712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 22722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 22732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "000',X'C2881000',NULL,?,0);", 22742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 22752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 22762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 22772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?,0);", 22782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 22792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 22802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 22812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 22822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 22832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", 22842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 22852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 22862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 22872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2881000',X'C2881000',NULL,?,0);", 22882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 22892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 22902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 22912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 22922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 22932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 22942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", 22952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 22962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 22972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 22982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 22992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 23002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "81205504E473259',NULL,?,0);" }; 23012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 23022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 23032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 23042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string ord = V81_Ordinal(i); 23052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 23062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(s.Run()); 23072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.Reset(true); 23082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 23092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 23102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 23112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 23122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MigrationTest::SetUpVersion85Database(sql::Connection* connection) { 23132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 23142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 23152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 23162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 23172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',85);" 23182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, " 23192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "transaction_version BIGINT default 0);" 23202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605', 1);" 23212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 23222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 23232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 23242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 23252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 23262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 23272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 23282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 23292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 23302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 23312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 23322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 23332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 23342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 23352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'deleted_metas'" 23362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "(metahandle bigint primary key ON CONFLICT FAIL,base" 23372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 23382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 23392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 23402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 23412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 23422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 23432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 23442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 23452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 23462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 23472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 23482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 23492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 23502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 23512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 23522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 23532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "blob);" 23542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 23552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 23562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 23572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 23582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 23592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 23602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", 23612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 23622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 23632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 23642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 23652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 23662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "14447414447414447',NULL,?,0);", 23672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 23682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 23692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 23702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 23712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 23722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 23732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", 23742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 23752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 23762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 23772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 23782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 23792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ULL,?,0);", 23802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 23812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 23822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 23832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",NULL,?,0);", 23842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 23852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 23862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" 23872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "", 23882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 23892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 23902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 23912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "00',X'C2881000',NULL,?,0);", 23922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 23932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 23942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 23952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "000',X'C2881000',NULL,?,0);", 23962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 23972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 23982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 23992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?,0);", 24002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 24012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 24022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 24032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 24042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 24052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", 24062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 24072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 24082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 24092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2881000',X'C2881000',NULL,?,0);", 24102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 24112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 24122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 24132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 24142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 24152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 24162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", 24172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 24182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 24192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 24202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 24212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 24222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "81205504E473259',NULL,?,0);" }; 24232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 24242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 24252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 24262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string ord = V81_Ordinal(i); 24272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 24282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(s.Run()); 24292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.Reset(true); 24302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 24312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 24322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 24332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2434c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void MigrationTest::SetUpVersion86Database(sql::Connection* connection) { 2435c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 2436c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 2437c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 2438c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 2439c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',86);" 2440c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB," 2441c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " transaction_version BIGINT default 0);" 2442c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 2443c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,b" 2444c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "ase_version bigint default -1,server_version bigint default 0,local_e" 2445c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "xternal_id bigint default 0,transaction_version bigint default 0,mtim" 2446c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "e bigint default 0,server_mtime bigint default 0,ctime bigint default" 2447c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " 0,server_ctime bigint default 0,id varchar(255) default 'r',parent_i" 2448c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "d varchar(255) default 'r',server_parent_id varchar(255) default 'r'," 2449c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0,is_del bi" 2450c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "t default 0,is_dir bit default 0,server_is_dir bit default 0,server_i" 2451c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "s_del bit default 0,non_unique_name varchar,server_non_unique_name va" 2452a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "rchar(255),unique_server_tag varchar,unique_client_tag varchar,unique" 2453a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "_bookmark_tag varchar,specifics blob,server_specifics blob,base_serve" 2454a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "r_specifics blob,server_unique_position blob,unique_position blob);" 2455c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," 2456c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) META_PROTO_TIMES_VALS(1) 2457c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL," 2458a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "X'',X'',X'',NULL,X'2200',X'2200');" 2459c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6,0," 2460a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The" 2461a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) " Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D653" 2462a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "273625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFF" 2463a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "FFFC000006754307476346749735A5734654D653273625336557753582F77673D',X'" 2464a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "22247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582" 2465a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "F77673D');" 2466c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0,0," 2467a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome" 2468a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "','Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'2" 2469a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "200');" 2470c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0,0," 2471a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Boo" 2472a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "kmarks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'" 2473a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "C2881000',NULL,X'2200',X'2200');" 2474c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1,0," 2475a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Boo" 2476a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "kmark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C2881" 2477a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "000',NULL,X'2200',X'2200');" 2478c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2,0," 2479a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'O" 2480a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ther Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C28810" 2481a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "00',X'C2881000',NULL,X'2200',X'2200');" 2482c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8,0," 2483a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'H" 2484a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ome (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL" 2485a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ",X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C28810" 2486a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F120641474154574" 2487a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "1',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74" 2488a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "68657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D" 2489a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "623579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF00000505" 2490a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "14C784A456D623579366267644237646A7A2B62314130346E493D');" 2491c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9,0," 2492a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'E" 2493a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "xtra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6" 2494a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "F616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'222" 2495a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "480000000000000007867626A704A646134635A6F616C376A49513338734B46324837" 2496a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "773D',X'222480000000000000007867626A704A646134635A6F616C376A495133387" 2497a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "34B46324837773D');" 2498c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10,0," 2499a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I" 2500a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | " 2501a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142" 2502a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156" 2503a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646'," 2504a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464" 2505a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304" 2506a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650" 2507a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "4179672B304A614A514B3452384A413D');" 2508c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11,0," 2509a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T" 2510a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "he WebKit Open Source Project','The WebKit Open Source Project',NULL," 2511a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2" 2512a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101" 2513a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222" 2514a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C" 2515a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315" 2516a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "9552F6E644C553D');" 2517a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" 2518a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "IL,base_version bigint default -1,server_version bigint default 0,loc" 2519a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "al_external_id bigint default 0,transaction_version bigint default 0," 2520a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" 2521a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" 2522a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " 2523a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" 2524a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" 2525a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" 2526a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" 2527a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" 2528a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "erver_specifics blob,server_unique_position blob,unique_position blob" 2529c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ");" 2530c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birt" 2531c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "hday TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 2532c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "fault -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB" 2533c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ");" 2534c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.or" 2535c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "g','c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-13107" 2536c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "8,'9010788312004066376x-6609234393368420856x',NULL,NULL);")); 2537c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 2538c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 2539c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2540e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochvoid MigrationTest::SetUpVersion87Database(sql::Connection* connection) { 2541e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(connection->is_open()); 2542e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(connection->BeginTransaction()); 2543e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(connection->Execute( 2544e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 2545e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'share_version' VALUES('nick@chromium.org',87);" 2546e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, tr" 2547e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "ansaction_version BIGINT default 0);" 2548e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 2549e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 2550e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "_version bigint default -1,server_version bigint default 0,local_exte" 2551e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "rnal_id bigint default 0,transaction_version bigint default 0,mtime b" 2552e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "igint default 0,server_mtime bigint default 0,ctime bigint default 0," 2553e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v" 2554e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_" 2555e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d" 2556e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d" 2557e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "el bit default 0,non_unique_name varchar,server_non_unique_name varch" 2558e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo" 2559e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s" 2560e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "pecifics blob,server_unique_position blob,unique_position blob,attach" 2561e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "ment_metadata blob);" 2562e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(1,-1,0,0,0," 2563e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(1) 2564e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X''" 2565e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",X'',X'',NULL,X'2200',X'2200',NULL);" 2566e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(6,694,694,6,0," 2567e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(6) 2568e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The " 2569e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D6532" 2570e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "73625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFFF" 2571e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "FFC000006754307476346749735A5734654D653273625336557753582F77673D',X'2" 2572e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "2247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582F" 2573e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "77673D',NULL);" 2574e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(7,663,663,0,0," 2575e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(7) 2576e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome'" 2577e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'22" 2578e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "00',NULL);" 2579e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(8,664,664,0,0," 2580e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(8) 2581e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Book" 2582e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "marks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'C" 2583e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "2881000',NULL,X'2200',X'2200',NULL);" 2584e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(9,665,665,1,0," 2585e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(9) 2586e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Book" 2587e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "mark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C28810" 2588e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "00',NULL,X'2200',X'2200',NULL);" 2589e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(10,666,666,2,0," 2590e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(10) 2591e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Ot" 2592e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "her Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C288100" 2593e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "0',X'C2881000',NULL,X'2200',X'2200',NULL);" 2594e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(11,683,683,8,0," 2595e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(11) 2596e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Ho" 2597e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "me (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL," 2598e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C288102" 2599e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "20A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741" 2600e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F746" 2601e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "8657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D6" 2602e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "23579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF000005051" 2603e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "4C784A456D623579366267644237646A7A2B62314130346E493D',NULL);" 2604e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(12,685,685,9,0," 2605e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(12) 2606e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Ex" 2607e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "tra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6F" 2608e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'2224" 2609e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "80000000000000007867626A704A646134635A6F616C376A49513338734B463248377" 2610e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "73D',X'222480000000000000007867626A704A646134635A6F616C376A4951333873" 2611e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "4B46324837773D',NULL);" 2612e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(13,687,687,10,0," 2613e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(13) 2614e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I" 2615e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | " 2616e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142" 2617e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156" 2618e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646'," 2619e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464" 2620e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304" 2621e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650" 2622e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "4179672B304A614A514B3452384A413D',NULL);" 2623e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'metas' VALUES(14,692,692,11,0," 2624e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch META_PROTO_TIMES_VALS(14) 2625e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T" 2626e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "he WebKit Open Source Project','The WebKit Open Source Project',NULL," 2627e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2" 2628e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101" 2629e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222" 2630e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C" 2631e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315" 2632e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "9552F6E644C553D',NULL);" 2633e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" 2634e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "IL,base_version bigint default -1,server_version bigint default 0,loc" 2635e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "al_external_id bigint default 0,transaction_version bigint default 0," 2636e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" 2637e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" 2638e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " 2639e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" 2640e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" 2641e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" 2642e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" 2643e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" 2644e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "erver_specifics blob,server_unique_position blob,unique_position blob" 2645e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ",attachment_metadata blob);" 2646e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 2647e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defau" 2648e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "lt -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB);" 2649e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 2650e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-131078,'" 2651e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "9010788312004066376x-6609234393368420856x',NULL,NULL);")); 2652e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(connection->CommitTransaction()); 2653e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 2654e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 2655c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid MigrationTest::SetUpVersion88Database(sql::Connection* connection) { 2656c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(connection->is_open()); 2657c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(connection->BeginTransaction()); 2658c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(connection->Execute( 2659c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 2660c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'share_version' VALUES('nick@chromium.org',88);" 2661c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB," 2662c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch " transaction_version BIGINT default 0, context BLOB);" 2663c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1,NULL);" 2664c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 2665c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "_version bigint default -1,server_version bigint default 0,local_exte" 2666c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "rnal_id bigint default 0,transaction_version bigint default 0,mtime b" 2667c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "igint default 0,server_mtime bigint default 0,ctime bigint default 0," 2668c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v" 2669c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_" 2670c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d" 2671c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d" 2672c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "el bit default 0,non_unique_name varchar,server_non_unique_name varch" 2673c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo" 2674c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s" 2675c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "pecifics blob,server_unique_position blob,unique_position blob,attach" 2676c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "ment_metadata blob);" 2677c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'metas' VALUES(1,-1,0,0,0," 2678c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch META_PROTO_TIMES_VALS(1) 2679c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X''" 2680c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",X'',X'',NULL,X'2200',X'2200',NULL);" 2681c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'metas' VALUES(6,694,694,6,0," 2682c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch META_PROTO_TIMES_VALS(6) 2683c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The " 2684c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D6532" 2685c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "73625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFFF" 2686c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "FFC000006754307476346749735A5734654D653273625336557753582F77673D',X'2" 2687c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "2247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582F" 2688c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "77673D',NULL);" 2689c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'metas' VALUES(7,663,663,0,0," 2690c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch META_PROTO_TIMES_VALS(7) 2691c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome'" 2692c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",'Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'22" 2693c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "00',NULL);" 2694c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'metas' VALUES(8,664,664,0,0," 2695c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch META_PROTO_TIMES_VALS(8) 2696c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Book" 2697c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "marks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'C" 2698c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "2881000',NULL,X'2200',X'2200',NULL);" 2699c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'metas' VALUES(9,665,665,1,0," 2700c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch META_PROTO_TIMES_VALS(9) 2701c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Book" 2702c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "mark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C28810" 2703c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "00',NULL,X'2200',X'2200',NULL);" 2704c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'metas' VALUES(10,666,666,2,0," 2705c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch META_PROTO_TIMES_VALS(10) 2706c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Ot" 2707c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "her Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C288100" 2708c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "0',X'C2881000',NULL,X'2200',X'2200',NULL);" 2709c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'metas' VALUES(11,683,683,8,0," 2710c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch META_PROTO_TIMES_VALS(11) 2711c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Ho" 2712c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "me (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL," 2713c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C288102" 2714c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "20A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741" 2715c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F746" 2716c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "8657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D6" 2717c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "23579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF000005051" 2718c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "4C784A456D623579366267644237646A7A2B62314130346E493D',NULL);" 2719c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'metas' VALUES(12,685,685,9,0," 2720c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch META_PROTO_TIMES_VALS(12) 2721c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Ex" 2722c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "tra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6F" 2723c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'2224" 2724c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "80000000000000007867626A704A646134635A6F616C376A49513338734B463248377" 2725c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "73D',X'222480000000000000007867626A704A646134635A6F616C376A4951333873" 2726c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "4B46324837773D',NULL);" 2727c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'metas' VALUES(13,687,687,10,0," 2728c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch META_PROTO_TIMES_VALS(13) 2729c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I" 2730c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | " 2731c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142" 2732c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156" 2733c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646'," 2734c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464" 2735c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304" 2736c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650" 2737c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "4179672B304A614A514B3452384A413D',NULL);" 2738c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'metas' VALUES(14,692,692,11,0," 2739c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch META_PROTO_TIMES_VALS(14) 2740c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T" 2741c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "he WebKit Open Source Project','The WebKit Open Source Project',NULL," 2742c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2" 2743c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101" 2744c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222" 2745c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C" 2746c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315" 2747c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "9552F6E644C553D',NULL);" 2748c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" 2749c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "IL,base_version bigint default -1,server_version bigint default 0,loc" 2750c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "al_external_id bigint default 0,transaction_version bigint default 0," 2751c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" 2752c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" 2753c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " 2754c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" 2755c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" 2756c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" 2757c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" 2758c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" 2759c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "erver_specifics blob,server_unique_position blob,unique_position blob" 2760c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ",attachment_metadata blob);" 2761c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 2762c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defau" 2763c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "lt -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB);" 2764c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 2765c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-131078,'" 2766c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "9010788312004066376x-6609234393368420856x',NULL,NULL);")); 2767c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(connection->CommitTransaction()); 2768c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 2769c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 2770116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2771116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid MigrationTest::SetUpVersion89Database(sql::Connection* connection) { 2772116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(connection->is_open()); 2773116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(connection->BeginTransaction()); 2774116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(connection->Execute( 2775116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 2776116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'share_version' VALUES('nick@chromium.org',89);" 2777116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, tr" 2778116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "ansaction_version BIGINT default 0, context BLOB);" 2779116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1,NULL);" 2780116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 2781116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "_version bigint default -1,server_version bigint default 0,local_exte" 2782116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "rnal_id bigint default 0,transaction_version bigint default 0,mtime b" 2783116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "igint default 0,server_mtime bigint default 0,ctime bigint default 0," 2784116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v" 2785116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_" 2786116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d" 2787116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d" 2788116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "el bit default 0,non_unique_name varchar,server_non_unique_name varch" 2789116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo" 2790116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s" 2791116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "pecifics blob,server_unique_position blob,unique_position blob,attach" 2792116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "ment_metadata blob,server_attachment_metadata blob);" 2793116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'metas' VALUES(1,-1,0,0,0," 2794116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch META_PROTO_TIMES_VALS(1) 2795116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',X'',NULL,X'2200'" 2796116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",X'2200',NULL,NULL);" 2797116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'metas' VALUES(6,694,694,6,0," 2798116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch META_PROTO_TIMES_VALS(6) 2799116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The Internet','The Internet'" 2800116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",NULL,NULL,X'6754307476346749735A5734654D653273625336557753582F77673D" 2801116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "',X'C2881000',X'C2881000',NULL,X'22247FFFFFFFFFC000006754307476346749" 2802116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "735A5734654D653273625336557753582F77673D',X'22247FFFFFFFFFC0000067543" 2803116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "07476346749735A5734654D653273625336557753582F77673D',NULL,NULL);" 2804116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'metas' VALUES(7,663,663,0,0," 2805116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch META_PROTO_TIMES_VALS(7) 2806116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google" 2807116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'2200',NULL,NULL);" 2808116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'metas' VALUES(8,664,664,0,0," 2809116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch META_PROTO_TIMES_VALS(8) 2810116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Bookmarks','Bookmarks','goog" 2811116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "le_chrome_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'" 2812116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "2200',NULL,NULL);" 2813116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'metas' VALUES(9,665,665,1,0," 2814116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch META_PROTO_TIMES_VALS(9) 2815116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'" 2816116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",'bookmark_bar',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'2200'" 2817116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",NULL,NULL);" 2818116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'metas' VALUES(10,666,666,2,0," 2819116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch META_PROTO_TIMES_VALS(10) 2820116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Other Bookmarks','Other Boo" 2821116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "kmarks','other_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'220" 2822116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "0',X'2200',NULL,NULL);" 2823116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'metas' VALUES(11,683,683,8,0," 2824116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch META_PROTO_TIMES_VALS(11) 2825116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Home (The Chromium Projects" 2826116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ")','Home (The Chromium Projects)',NULL,NULL,X'50514C784A456D623579366" 2827116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "267644237646A7A2B62314130346E493D',X'C28810220A18687474703A2F2F646576" 2828116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "2E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1D687474703" 2829116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "A2F2F6465762E6368726F6D69756D2E6F72672F6F7468657212084146414756415346" 2830116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "',NULL,X'22247FFFFFFFFFF0000050514C784A456D623579366267644237646A7A2B" 2831116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "62314130346E493D',X'22247FFFFFFFFFF0000050514C784A456D623579366267644" 2832116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "237646A7A2B62314130346E493D',NULL,NULL);" 2833116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'metas' VALUES(12,685,685,9,0," 2834116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch META_PROTO_TIMES_VALS(12) 2835116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Extra Bookmarks','Extra Boo" 2836116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "kmarks',NULL,NULL,X'7867626A704A646134635A6F616C376A49513338734B46324" 2837116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "837773D',X'C2881000',X'C2881000',NULL,X'222480000000000000007867626A7" 2838116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "04A646134635A6F616C376A49513338734B46324837773D',X'222480000000000000" 2839116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "007867626A704A646134635A6F616C376A49513338734B46324837773D',NULL,NULL" 2840116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ");" 2841116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'metas' VALUES(13,687,687,10,0," 2842116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch META_PROTO_TIMES_VALS(13) 2843116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'ICANN | Internet Corporatio" 2844116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "n for Assigned Names and Numbers','ICANN | Internet Corporation for A" 2845116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "ssigned Names and Numbers',NULL,NULL,X'3142756B572F774176695650417967" 2846116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "2B304A614A514B3452384A413D',X'C28810240A15687474703A2F2F7777772E69636" 2847116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "16E6E2E636F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F" 2848116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "2F7777772E6963616E6E2E636F6D2F120744414146415346',NULL,X'22247FFFFFFF" 2849116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "FFF200003142756B572F7741766956504179672B304A614A514B3452384A413D',X'2" 2850116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "2247FFFFFFFFFF200003142756B572F7741766956504179672B304A614A514B345238" 2851116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "4A413D',NULL,NULL);" 2852116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'metas' VALUES(14,692,692,11,0," 2853116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch META_PROTO_TIMES_VALS(14) 2854116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'The WebKit Open Source Proj" 2855116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "ect','The WebKit Open Source Project',NULL,NULL,X'5A5678314E797636457" 2856116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "9524D3177494F7236563159552F6E644C553D',X'C288101A0A12687474703A2F2F77" 2857116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "65626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2F2F7765626" 2858116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "B69742E6F72672F781205504E473259',NULL,X'222480000000001000005A5678314" 2859116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "E7976364579524D3177494F7236563159552F6E644C553D',X'222480000000001000" 2860116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "005A5678314E7976364579524D3177494F7236563159552F6E644C553D',NULL,NULL" 2861116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ");" 2862116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" 2863116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "IL,base_version bigint default -1,server_version bigint default 0,loc" 2864116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "al_external_id bigint default 0,transaction_version bigint default 0," 2865116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" 2866116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" 2867116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " 2868116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" 2869116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" 2870116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" 2871116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" 2872116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" 2873116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "erver_specifics blob,server_unique_position blob,unique_position blob" 2874116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ",attachment_metadata blob,server_attachment_metadata blob);" 2875116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 2876116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defau" 2877116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "lt -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB);" 2878116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 2879116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-131078,'" 2880116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "9010788312004066376x-6609234393368420856x',NULL,NULL);")); 2881116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(connection->CommitTransaction()); 2882116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 2883116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2884116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 28855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion67To68) { 28865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 28875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 28885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion67Database(&connection); 28905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns existing before version 67. 28925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "name")); 28935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unsanitized_name")); 28945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_name")); 28955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 28975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 28985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion67To68()); 29015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(68, dbs->GetVersion()); 29025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 29035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion68To69) { 29065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 29075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 29085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion68Database(&connection); 29095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 29115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion68To69()); 29165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(69, dbs->GetVersion()); 29175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 29185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 29195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); 29215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); 29225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT non_unique_name," 29235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del, is_dir, id, specifics, server_specifics FROM metas " 29245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "WHERE metahandle = 2")); 29255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 29265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("Deleted Item", s.ColumnString(0)); 29275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.ColumnBool(1)); 29285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.ColumnBool(2)); 29295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("s_ID_2", s.ColumnString(3)); 29305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_pb::EntitySpecifics specifics; 29315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics.ParseFromArray(s.ColumnBlob(4), s.ColumnByteLength(4)); 29325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(specifics.has_bookmark()); 29335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("http://www.google.com/", specifics.bookmark().url()); 29345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("AASGASGA", specifics.bookmark().favicon()); 29355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics.ParseFromArray(s.ColumnBlob(5), s.ColumnByteLength(5)); 29365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(specifics.has_bookmark()); 29375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("http://www.google.com/2", specifics.bookmark().url()); 29385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("ASADGADGADG", specifics.bookmark().favicon()); 29395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.Step()); 29405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion69To70) { 29435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 29445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 29455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion69Database(&connection); 29465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "singleton_tag")); 29485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_server_tag")); 29495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_client_tag")); 29505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 29525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion69To70()); 29575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(70, dbs->GetVersion()); 29585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 29595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 29605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); 29625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); 29635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT id" 29645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " FROM metas WHERE unique_server_tag = 'google_chrome'")); 29655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 29665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("s_ID_7", s.ColumnString(0)); 29675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion70To71) { 29705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 29715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 29725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion70Database(&connection); 29735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); 29755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "initial_sync_ended")); 29765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("models")); 29775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 29795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion70To71()); 29845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(71, dbs->GetVersion()); 29855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 29875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); 29895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "initial_sync_ended")); 29905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("models")); 29915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); 29925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); 29935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "model_id")); 29945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT model_id, " 29965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended, last_download_timestamp FROM models")); 29975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 29985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string model_id = s.ColumnString(0); 29995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("C2881000", base::HexEncode(model_id.data(), model_id.size())) 30005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Model ID is expected to be the empty BookmarkSpecifics proto."; 30015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(s.ColumnBool(1)); 30025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(694, s.ColumnInt64(2)); 30035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.Step()); 30045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 30055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion71To72) { 30085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 30095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 30105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion71Database(&connection); 30115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("extended_attributes")); 30135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 30155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 30165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 30175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 30195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion71To72()); 30205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(72, dbs->GetVersion()); 30215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 30225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 30235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); 30255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 30265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion72To73) { 30285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 30295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 30305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion72Database(&connection); 30315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); 30335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 30355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 30365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 30375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 30395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion72To73()); 30405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(73, dbs->GetVersion()); 30415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 30425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 30435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); 30455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 30465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion73To74) { 30485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 30495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 30505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion73Database(&connection); 30515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 30535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 30545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 30555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 30565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 30575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 30585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 30595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 30605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 30615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 30625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 30645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 30655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 30665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 30685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 30695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 30705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 30725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion73To74()); 30735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(74, dbs->GetVersion()); 30745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 30755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 30765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 30785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 30795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 30805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 30815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 30825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 30835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 30845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 30855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 30865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 30875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 30895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 30905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 30915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 30925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion74To75) { 30945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 30955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 30965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion74Database(&connection); 30975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "progress_marker")); 30995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); 31005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 31025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 31035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 31045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 31065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion74To75()); 31075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(75, dbs->GetVersion()); 31085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 31095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 31105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); 31125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); 31135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 31145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion75To76) { 31165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 31175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 31185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion75Database(&connection); 31195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 31215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 31225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 31235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 31245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 31255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 31265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 31275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 31285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 31295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 31305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 31325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 31335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 31345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion75To76()); 31355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(76, dbs->GetVersion()); 31365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 31375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cannot actual refresh columns due to version 76 not containing all 31385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // necessary columns. 31395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 31405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion76To77) { 31425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 31435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 31445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion76Database(&connection); 31455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 31475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 31485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 31495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedLegacyMetaProtoTimes(INCLUDE_DELETED_ITEMS), 31515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(dbs->db_.get())); 31525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Since the proto times are expected to be in a legacy format, they may not 31535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // be compatible with ProtoTimeToTime, so we don't call ExpectTimes(). 31545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion76To77()); 31565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(77, dbs->GetVersion()); 31575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS), 31595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(dbs->db_.get())); 31605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cannot actually load entries due to version 77 not having all required 31615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // columns. 31625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 31635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 31645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion77To78) { 31665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 31675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 31685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion77Database(&connection); 31695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "BASE_SERVER_SPECIFICS")); 31715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 31735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 31745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 31755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 31765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion77To78()); 31775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(78, dbs->GetVersion()); 31785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 31805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 31815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); 31835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 31845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion78To79) { 31865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kInitialNextId = -65542; 31875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 31895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 31905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion78Database(&connection); 31915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Double-check the original next_id is what we think it is. 31935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 31945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT next_id FROM share_info")); 31955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Step(); 31965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(kInitialNextId, s.ColumnInt(0)); 31975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 31995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 32005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 32015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion78To79()); 32025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(79, dbs->GetVersion()); 32035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 32045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure the next_id has been incremented. 3206868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 32072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals;; 3208868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map); 32095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo load_info; 32105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Clear(); 3212868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &load_info)); 32135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_LE(load_info.kernel_info.next_id, kInitialNextId - 65536); 32145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 32155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion79To80) { 32175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 32185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 32195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion79Database(&connection); 32205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 32225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 32235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 32245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion79To80()); 32255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(80, dbs->GetVersion()); 32265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 32275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure the bag_of_chips has been set. 3229868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 32302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals;; 3231868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map); 32325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo load_info; 32335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3234868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &load_info)); 32355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check that the initial value is the serialization of an empty ChipBag. 32365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_pb::ChipBag chip_bag; 32375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string serialized_chip_bag; 32385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(chip_bag.SerializeToString(&serialized_chip_bag)); 32395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(serialized_chip_bag, load_info.kernel_info.bag_of_chips); 32405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 32415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion80To81) { 32435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 32445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 32455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion80Database(&connection); 32465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 32485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, server_position_in_parent " 32495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas WHERE unique_server_tag = 'google_chrome'")); 32505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 32515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(sql::COLUMN_TYPE_INTEGER, s.ColumnType(1)); 32525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 32545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 32555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion80To81()); 32565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(81, dbs->GetVersion()); 32575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test that ordinal values are preserved correctly. 32595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement new_s(connection.GetUniqueStatement( 32605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, server_ordinal_in_parent " 32615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas WHERE unique_server_tag = 'google_chrome'")); 32625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_s.Step()); 32635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(sql::COLUMN_TYPE_BLOB, new_s.ColumnType(1)); 32645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string expected_ordinal = Int64ToNodeOrdinal(1048576).ToInternalValue(); 32665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string actual_ordinal; 32675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_s.ColumnBlobAsString(1, &actual_ordinal); 32685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(expected_ordinal, actual_ordinal); 32695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 32705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion81To82) { 32725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 32735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 32745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion81Database(&connection); 32755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "transaction_version")); 32765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 32785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 32795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 32805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion81To82()); 32815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(82, dbs->GetVersion()); 32825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 32835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); 32855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 32865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion82To83) { 32885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 32895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 32905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion82Database(&connection); 32915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "transaction_version")); 32925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 32945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 32955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion82To83()); 32965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(83, dbs->GetVersion()); 32975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); 32995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 33005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion83To84) { 33022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Connection connection; 33032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 33042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion83Database(&connection); 33052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("deleted_metas")); 33062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 33072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 33082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 33092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion83To84()); 33102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(84, dbs->GetVersion()); 33112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 33122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("deleted_metas")); 33132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 33142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 33152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion84To85) { 33162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Connection connection; 33172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 33182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion84Database(&connection); 33192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); 33202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 33212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 33222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 33232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion84To85()); 33242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(85, dbs->GetVersion()); 33252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); 33262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 33272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion85To86) { 3329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sql::Connection connection; 3330c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 3331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion85Database(&connection); 3332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "next_id")); 3333c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "prev_id")); 3334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); 3335c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_position")); 3336c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(connection.DoesColumnExist("metas", "server_unique_position")); 3337c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_bookmark_tag")); 3338c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3339c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 3340c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3341c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion85To86()); 3342c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(86, dbs->GetVersion()); 3343c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_position")); 3344c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "server_unique_position")); 3345c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_bookmark_tag")); 3346c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 3347a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 3348c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3349e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(DirectoryBackingStoreTest, MigrateVersion86To87) { 3350e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch sql::Connection connection; 3351e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(connection.OpenInMemory()); 3352e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch SetUpVersion86Database(&connection); 3353e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(connection.DoesColumnExist("metas", "attachment_metadata")); 3354e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 3355e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch scoped_ptr<TestDirectoryBackingStore> dbs( 3356e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch new TestDirectoryBackingStore(GetUsername(), &connection)); 3357e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(dbs->MigrateVersion86To87()); 3358e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_EQ(87, dbs->GetVersion()); 3359e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(connection.DoesColumnExist("metas", "attachment_metadata")); 3360e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(dbs->needs_column_refresh_); 3361e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 3362e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 3363c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochTEST_F(DirectoryBackingStoreTest, MigrateVersion87To88) { 3364c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch sql::Connection connection; 3365c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(connection.OpenInMemory()); 3366c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch SetUpVersion87Database(&connection); 3367c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 3368c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<TestDirectoryBackingStore> dbs( 3369c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch new TestDirectoryBackingStore(GetUsername(), &connection)); 3370c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(dbs->MigrateVersion87To88()); 3371c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_EQ(88, dbs->GetVersion()); 3372c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("models", "context")); 3373c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 3374c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 3375116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(DirectoryBackingStoreTest, MigrateVersion88To89) { 3376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sql::Connection connection; 3377116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(connection.OpenInMemory()); 3378116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SetUpVersion88Database(&connection); 3379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_FALSE( 3380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch connection.DoesColumnExist("metas", "server_attachment_metadata")); 3381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 3382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<TestDirectoryBackingStore> dbs( 3383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new TestDirectoryBackingStore(GetUsername(), &connection)); 3384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(dbs->MigrateVersion88To89()); 3385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_EQ(89, dbs->GetVersion()); 3386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE( 3387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch connection.DoesColumnExist("metas", "server_attachment_metadata")); 3388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(dbs->needs_column_refresh_); 3389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 3390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 3391a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// The purpose of this test case is to make it easier to get a dump of the 3392a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// database so you can implement a SetUpVersionYDatabase method. Here's what 3393a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// you should do: 3394a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 3395a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 1. Say you're going from version X to version Y. Write the migration 3396a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// method MigrateVersionXToY. 3397a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 2. Update the test below to call SetUpVersionXDatabase and then 3398a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// MigrateVersionXToY. You now have a database at version Y. Let's dump it. 3399a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 3. Set a breakpoint to stop execution just after the connection is 3400a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// destroyed. Examine temp_dir_ to find the version Y database that was 3401a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// created on disk. E.g. (gdb) p temp_dir_.path().value().c_str() 3402a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 4. Dump the database using the sqlite3 command line tool: 3403a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// > .output foo_dump.sql 3404a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// > .dump 3405a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 5. Replace the timestamp columns with META_PROTO_TIMES(x) (or 3406a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// LEGACY_META_PROTO_TIMES(x) if before Version 77). Use this dump to write 3407a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// a SetupVersionYDatabase method. 3408a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateToLatestAndDump) { 3409c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 3410a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) sql::Connection connection; 3411a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(connection.Open(GetDatabasePath())); 3412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SetUpVersion88Database(&connection); // Update this. 3413a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3414a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 3415a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(dbs->MigrateVersion88To89()); // Update this. 3417a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 3418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(89, dbs->GetVersion()); // Update this. 3419a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 3420c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 3421a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Set breakpoint here. 3422c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 3423c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3424c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, DetectInvalidPosition) { 3425c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sql::Connection connection; 3426c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 3427c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion86Database(&connection); 3428c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3429c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 3430c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3431c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(86, dbs->GetVersion()); 3432c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3433c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Insert row with bad position. 3434c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 3435c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO metas " 3436c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "( id, metahandle, is_dir, ctime, mtime," 3437c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " unique_position, server_unique_position) " 3438c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "VALUES('c-invalid', 9999, 1, 0, 0, 'BAD_POS', 'BAD_POS')")); 3439c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(s.Run()); 3440c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3441c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Trying to unpack this entry should signal that the DB is corrupted. 3442868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 3443c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) JournalIndex delete_journals;; 3444868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map); 3445c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Directory::KernelLoadInfo kernel_load_info; 3446c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(FAILED_DATABASE_CORRUPT, 3447868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->Load(&handles_map, &delete_journals, &kernel_load_info)); 3448c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 3449c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 34505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_P(MigrationTest, ToCurrentVersion) { 34515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 34525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 34535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (GetParam()) { 34545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 67: 34555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion67Database(&connection); 34565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 68: 34585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion68Database(&connection); 34595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 69: 34615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion69Database(&connection); 34625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 70: 34645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion70Database(&connection); 34655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 71: 34675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion71Database(&connection); 34685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 72: 34705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion72Database(&connection); 34715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 73: 34735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion73Database(&connection); 34745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 74: 34765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion74Database(&connection); 34775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 75: 34795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion75Database(&connection); 34805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 76: 34825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion76Database(&connection); 34835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 77: 34855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion77Database(&connection); 34865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 78: 34885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion78Database(&connection); 34895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 79: 34915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion79Database(&connection); 34925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 80: 34945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion80Database(&connection); 34955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 81: 34975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion81Database(&connection); 34985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 34995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 82: 35005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion82Database(&connection); 35015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 35022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case 83: 35032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion83Database(&connection); 35042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 35052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case 84: 35062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion84Database(&connection); 35072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 3508c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case 85: 3509c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion85Database(&connection); 3510c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) break; 3511c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case 86: 3512c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion86Database(&connection); 3513c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) break; 3514e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch case 87: 3515e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch SetUpVersion87Database(&connection); 3516e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch break; 3517c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch case 88: 3518c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch SetUpVersion88Database(&connection); 3519c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch break; 3520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch case 89: 3521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SetUpVersion89Database(&connection); 3522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch break; 35235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 35245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If you see this error, it may mean that you've increased the 35255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // database version number but you haven't finished adding unit tests 35265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for the database migration code. You need to need to supply a 3527a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // SetUpVersionYDatabase function with a dump of the test database 3528a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // at the new schema. See the MigrateToLatestAndDump test case. 35295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FAIL() << "Need to supply database dump for version " << GetParam(); 35305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) syncable::Directory::KernelLoadInfo dir_info; 3533868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 35342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals;; 3535868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map); 35365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 35395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3540868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(OPENED, dbs->Load(&handles_map, &delete_journals, &dir_info)); 35415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 35425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); 35435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns deleted in Version 67. 35465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "name")); 35475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unsanitized_name")); 35485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "server_name")); 35495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns added in Version 68. 35515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); 35525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); 35535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns deleted in Version 68. 35555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "is_bookmark_object")); 35565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", 35575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object")); 35585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_favicon")); 35595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_url")); 35605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "server_bookmark_url")); 35615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Renamed a column in Version 70 35635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "singleton_tag")); 35645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); 35655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); 35665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removed extended attributes in Version 72. 35685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); 35695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns added in Version 73. 35715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); 35725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column replaced in version 75. 35745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); 35755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); 35765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns removed in version 76. 35785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 35795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 35805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 35815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 35825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 35835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 35845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 35855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 35865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 35875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 35885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 78. 35905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); 35915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 82. 35935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); 35945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 83. 35965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); 35975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Table added in version 84. 35992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("deleted_metas")); 36002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 36012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Column removed in version 85. 36022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); 36032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3604a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Columns removed in version 86. 3605a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "next_id")); 3606a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "prev_id")); 3607a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); 3608a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3609e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // Column added in version 87. 3610e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "attachment_metadata")); 3611e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 3612c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Column added in version 88. 3613c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("models", "context")); 3614c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 3615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Column added in version 89. 3616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE( 3617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch connection.DoesColumnExist("metas", "server_attachment_metadata")); 3618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 36195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check download_progress state (v75 migration) 36205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(694, 36215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 36225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .timestamp_token_for_migration()); 36235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 36245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 36255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_token()); 36265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(32904, 36275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 36285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .data_type_id()); 36295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 36305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 36315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_timestamp_token_for_migration()); 36325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 36335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 36345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_token()); 36355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 36365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 36375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .token().empty()); 36385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(41210, 36395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 36405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .data_type_id()); 36415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check metas 36435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedMetaProtoTimes(DONT_INCLUDE_DELETED_ITEMS), 36445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(&connection)); 3645868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ExpectTimes(handles_map, GetExpectedMetaTimes()); 36465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3647868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap::iterator it = handles_map.find(1); 3648868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_TRUE(it != handles_map.end()); 3649868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(1, it->second->ref(META_HANDLE)); 3650868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(ID).IsRoot()); 3651a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3652a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3653a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3654e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3655116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); 3656a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3657a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Items 2, 4, and 5 were deleted. 3658a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it = handles_map.find(2); 3659a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(it == handles_map.end()); 3660a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it = handles_map.find(4); 3661a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(it == handles_map.end()); 3662a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it = handles_map.find(5); 3663a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(it == handles_map.end()); 36645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3665868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(6); 3666868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(6, it->second->ref(META_HANDLE)); 3667868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(IS_DIR)); 3668868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_IS_DIR)); 3669a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); 3670a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); 3671a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); 3672868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 3673a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3674a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3675a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3676a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3677e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); 3679868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3680868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(7); 3681868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(7, it->second->ref(META_HANDLE)); 3682868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("google_chrome", it->second->ref(UNIQUE_SERVER_TAG)); 3683868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).has_bookmark()); 3684868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3685a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't assign positions to google_chrome. 3686a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3687a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3688a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3689e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3690116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); 3691868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3692868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(8); 3693868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(8, it->second->ref(META_HANDLE)); 3694868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("google_chrome_bookmarks", it->second->ref(UNIQUE_SERVER_TAG)); 3695868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3696868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3697a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ(it->second->ref(ID).value(), "s_ID_8"); 3698a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't mistake the bookmark root node for a real bookmark. 3699a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3700a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3701a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3702e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3703116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); 3704868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3705868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(9); 3706868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(9, it->second->ref(META_HANDLE)); 3707868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("bookmark_bar", it->second->ref(UNIQUE_SERVER_TAG)); 3708868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3709868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3710a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't assign positions to bookmark_bar. 3711a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3712a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3713a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3714e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3715116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); 3716868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3717868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(10); 3718868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(10, it->second->ref(META_HANDLE)); 3719868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DEL)); 3720868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3721868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3722868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); 3723a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); 3724a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); 3725868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 3726868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("other_bookmarks", it->second->ref(UNIQUE_SERVER_TAG)); 3727868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Other Bookmarks", it->second->ref(NON_UNIQUE_NAME)); 3728868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Other Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME)); 3729a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ(it->second->ref(ID).value(), "s_ID_10"); 3730e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3731116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); 3732a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't assign positions to server-created folders, either. 3733a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3734a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3735a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3736e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3737116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); 3738868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3739868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(11); 3740868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(11, it->second->ref(META_HANDLE)); 3741868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DEL)); 3742868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DIR)); 3743868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3744868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 37455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("http://dev.chromium.org/", 3746a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(SPECIFICS).bookmark().url()); 3747a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("AGATWA", it->second->ref(SPECIFICS).bookmark().favicon()); 37485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("http://dev.chromium.org/other", 3749a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(SERVER_SPECIFICS).bookmark().url()); 3750a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("AFAGVASF", it->second->ref(SERVER_SPECIFICS).bookmark().favicon()); 3751868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("", it->second->ref(UNIQUE_SERVER_TAG)); 3752868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Home (The Chromium Projects)", it->second->ref(NON_UNIQUE_NAME)); 3753868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Home (The Chromium Projects)", 3754868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it->second->ref(SERVER_NON_UNIQUE_NAME)); 3755a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3756a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3757a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3758a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3759e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3760868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3761868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(12); 3762868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(12, it->second->ref(META_HANDLE)); 3763868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DEL)); 3764868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(IS_DIR)); 3765868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Extra Bookmarks", it->second->ref(NON_UNIQUE_NAME)); 3766868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Extra Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME)); 3767868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3768868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3769a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); 3770a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); 3771a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); 3772868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 3773a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3774a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3775a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3776a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3777e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3778116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); 37795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3780868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(13); 3781868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(13, it->second->ref(META_HANDLE)); 3782a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3783a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3784a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3785a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3786e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3787116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); 37885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3789868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(14); 3790868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(14, it->second->ref(META_HANDLE)); 3791a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3792a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3793a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3794a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3795e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized()); 3796116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized()); 37975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3798868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(static_cast<size_t>(10), handles_map.size()); 3799a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3800a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure that the syncable::Directory and the migration code agree on 3801a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // which items should or should not have unique position values. This test 3802a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // may become obsolete if the directory's definition of that function 3803a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // changes, but, until then, this is a useful test. 3804a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) for (it = handles_map.begin(); it != handles_map.end(); it++) { 3805a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SCOPED_TRACE(it->second->ref(ID)); 3806a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (it->second->ShouldMaintainPosition()) { 3807a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3808a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3809a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3810a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } else { 3811a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3812a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3813a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3814a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 3815a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 38165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTANTIATE_TEST_CASE_P(DirectoryBackingStore, MigrationTest, 3819c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) testing::Range(67, kCurrentDBVersion + 1)); 38205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, ModelTypeIds) { 38222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ModelTypeSet protocol_types = ProtocolTypes(); 38232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (ModelTypeSet::Iterator iter = protocol_types.First(); iter.Good(); 38242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) iter.Inc()) { 38255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string model_id = 38262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestDirectoryBackingStore::ModelTypeEnumToModelId(iter.Get()); 38272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(iter.Get(), 38285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDirectoryBackingStore::ModelIdToModelTypeEnum(model_id.data(), 38295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_id.size())); 38305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 38345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OnDiskDirectoryBackingStoreForTest : public OnDiskDirectoryBackingStore { 38365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 38375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDiskDirectoryBackingStoreForTest(const std::string& dir_name, 38382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& backing_filepath); 38395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~OnDiskDirectoryBackingStoreForTest(); 38405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool DidFailFirstOpenAttempt(); 38415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 38435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ReportFirstTryOpenFailure() OVERRIDE; 38445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 38465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool first_open_failed_; 38475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 38485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OnDiskDirectoryBackingStoreForTest::OnDiskDirectoryBackingStoreForTest( 38505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& dir_name, 38512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& backing_filepath) : 38525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDiskDirectoryBackingStore(dir_name, backing_filepath), 38535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_open_failed_(false) { } 38545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OnDiskDirectoryBackingStoreForTest::~OnDiskDirectoryBackingStoreForTest() { } 38565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OnDiskDirectoryBackingStoreForTest::ReportFirstTryOpenFailure() { 38585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do nothing, just like we would in release-mode. In debug mode, we DCHECK. 38595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_open_failed_ = true; 38605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool OnDiskDirectoryBackingStoreForTest::DidFailFirstOpenAttempt() { 38635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return first_open_failed_; 38645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 38675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is a whitebox test intended to exercise the code path where the on-disk 38695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// directory load code decides to delete the current directory and start fresh. 38705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 38715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is considered "minor" corruption because the database recreation is 38725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// expected to succeed. The alternative, where recreation does not succeed (ie. 38735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// due to read-only file system), is not tested here. 38745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MinorCorruption) { 38755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<OnDiskDirectoryBackingStore> dbs( 38775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath())); 38785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 38795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Corrupt the root node. 38825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 38845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.Open(GetDatabasePath())); 38855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.Execute( 38865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "UPDATE metas SET parent_id='bogus' WHERE id = 'r';")); 38875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<OnDiskDirectoryBackingStoreForTest> dbs( 38915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new OnDiskDirectoryBackingStoreForTest(GetUsername(), 38925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDatabasePath())); 38935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 38955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(dbs->DidFailFirstOpenAttempt()); 38965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, DeleteEntries) { 39005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 39015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 39025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpCurrentDatabaseAndCheckVersion(&connection); 39045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 39055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3906868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 39072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals; 39085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo kernel_load_info; 3909868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map); 39105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3911868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->Load(&handles_map, &delete_journals, &kernel_load_info); 3912868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) size_t initial_size = handles_map.size(); 3913868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_LT(0U, initial_size) << "Test requires handles_map to delete."; 3914868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int64 first_to_die = handles_map.begin()->second->ref(META_HANDLE); 39155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetahandleSet to_delete; 39165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to_delete.insert(first_to_die); 39172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(dbs->DeleteEntries(TestDirectoryBackingStore::METAS_TABLE, 39182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) to_delete)); 39195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3920868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLDeleteValues(&handles_map); 3921868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->LoadEntries(&handles_map); 39225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3923868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(initial_size - 1, handles_map.size()); 39245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool delete_failed = false; 3925868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) for (Directory::MetahandlesMap::iterator it = handles_map.begin(); 3926868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it != handles_map.end(); ++it) { 3927868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (it->first == first_to_die) { 39285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete_failed = true; 39295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 39305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(delete_failed); 39335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to_delete.clear(); 3935868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) for (Directory::MetahandlesMap::iterator it = handles_map.begin(); 3936868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it != handles_map.end(); ++it) { 3937868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) to_delete.insert(it->first); 39385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(dbs->DeleteEntries(TestDirectoryBackingStore::METAS_TABLE, 39412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) to_delete)); 39425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3943868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLDeleteValues(&handles_map); 3944868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->LoadEntries(&handles_map); 3945868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(0U, handles_map.size()); 39465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, GenerateCacheGUID) { 39495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& guid1 = TestDirectoryBackingStore::GenerateCacheGUID(); 39505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& guid2 = TestDirectoryBackingStore::GenerateCacheGUID(); 39515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(24U, guid1.size()); 39525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(24U, guid2.size()); 39535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // In theory this test can fail, but it won't before the universe 39545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // dies of heat death. 39555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(guid1, guid2); 39565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncable 39595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncer 3960