directory_backing_store_unittest.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/file_path.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/file_util.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/scoped_temp_dir.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/stl_util.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/string_number_conversions.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sql/connection.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sql/statement.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/internal_api/public/base/node_ordinal.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/protocol/bookmark_specifics.pb.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/protocol/sync.pb.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/syncable/directory_backing_store.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/syncable/on_disk_directory_backing_store.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/syncable/syncable-inl.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/test/test_directory_backing_store.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/util/time.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest-param-test.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncer { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncable { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const int32 kCurrentDBVersion; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MigrationTest : public testing::TestWithParam<int> { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp() { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string GetUsername() { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return "nick@chromium.org"; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FilePath GetDatabasePath() { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return temp_dir_.path().Append(Directory::kSyncDatabaseFilename); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool LoadAndIgnoreReturnedData(DirectoryBackingStore *dbs) { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetahandlesIndex metas; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) STLElementDeleter<MetahandlesIndex> index_deleter(&metas); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo kernel_load_info; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return dbs->Load(&metas, &kernel_load_info) == OPENED; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion67Database(sql::Connection* connection); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion68Database(sql::Connection* connection); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion69Database(sql::Connection* connection); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion70Database(sql::Connection* connection); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion71Database(sql::Connection* connection); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion72Database(sql::Connection* connection); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion73Database(sql::Connection* connection); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion74Database(sql::Connection* connection); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion75Database(sql::Connection* connection); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion76Database(sql::Connection* connection); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion77Database(sql::Connection* connection); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion78Database(sql::Connection* connection); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion79Database(sql::Connection* connection); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion80Database(sql::Connection* connection); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion81Database(sql::Connection* connection); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion82Database(sql::Connection* connection); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpCurrentDatabaseAndCheckVersion(sql::Connection* connection) { 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion77Database(connection); // Prepopulates data. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), connection)); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ScopedTempDir temp_dir_; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DirectoryBackingStoreTest : public MigrationTest {}; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// On Windows, we used to store timestamps in FILETIME format. 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_1 129079956640320000LL 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_2 128976886618480000LL 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_4 129002163642690000LL 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_5 129001555500000000LL 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_6 129053976170000000LL 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_7 128976864758480000LL 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_8 128976864758480000LL 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_9 128976864758480000LL 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_10 128976864758480000LL 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_11 129079956948440000LL 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_12 129079957513650000LL 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_13 129079957985300000LL 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_14 129079958383000000LL 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_1 "129079956640320000" 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_2 "128976886618480000" 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_4 "129002163642690000" 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_5 "129001555500000000" 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_6 "129053976170000000" 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_7 "128976864758480000" 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_8 "128976864758480000" 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_9 "128976864758480000" 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_10 "128976864758480000" 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_11 "129079956948440000" 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_12 "129079957513650000" 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_13 "129079957985300000" 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_14 "129079958383000000" 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Generated via: 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ruby -ane '$F[1].sub!("LEGACY_", ""); $F[2] = Integer($F[2].sub!("LL", "")) / 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 10000 - 11644473600000; print "#{$F[0]} #{$F[1]} #{$F[2]}LL"' 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Magic numbers taken from 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://stackoverflow.com/questions/5398557/ 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// java-library-for-dealing-with-win32-filetime . 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Now we store them in Java format (ms since the Unix epoch). 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_1 1263522064032LL 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_2 1253215061848LL 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_4 1255742764269LL 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_5 1255681950000LL 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_6 1260924017000LL 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_7 1253212875848LL 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_8 1253212875848LL 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_9 1253212875848LL 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_10 1253212875848LL 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_11 1263522094844LL 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_12 1263522151365LL 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_13 1263522198530LL 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_14 1263522238300LL 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_1 "1263522064032" 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_2 "1253215061848" 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_4 "1255742764269" 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_5 "1255681950000" 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_6 "1260924017000" 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_7 "1253212875848" 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_8 "1253212875848" 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_9 "1253212875848" 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_10 "1253212875848" 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_11 "1263522094844" 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_12 "1263522151365" 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_13 "1263522198530" 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_14 "1263522238300" 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// On other platforms, we used to store timestamps in time_t format (s 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// since the Unix epoch). 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_1 1263522064LL 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_2 1253215061LL 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_4 1255742764LL 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_5 1255681950LL 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_6 1260924017LL 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_7 1253212875LL 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_8 1253212875LL 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_9 1253212875LL 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_10 1253212875LL 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_11 1263522094LL 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_12 1263522151LL 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_13 1263522198LL 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_14 1263522238LL 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_1 "1263522064" 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_2 "1253215061" 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_4 "1255742764" 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_5 "1255681950" 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_6 "1260924017" 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_7 "1253212875" 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_8 "1253212875" 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_9 "1253212875" 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_10 "1253212875" 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_11 "1263522094" 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_12 "1263522151" 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_13 "1263522198" 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_14 "1263522238" 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Now we store them in Java format (ms since the Unix epoch). 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_1 1263522064000LL 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_2 1253215061000LL 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_4 1255742764000LL 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_5 1255681950000LL 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_6 1260924017000LL 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_7 1253212875000LL 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_8 1253212875000LL 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_9 1253212875000LL 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_10 1253212875000LL 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_11 1263522094000LL 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_12 1263522151000LL 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_13 1263522198000LL 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_14 1263522238000LL 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_1 "1263522064000" 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_2 "1253215061000" 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_4 "1255742764000" 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_5 "1255681950000" 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_6 "1260924017000" 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_7 "1253212875000" 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_8 "1253212875000" 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_9 "1253212875000" 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_10 "1253212875000" 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_11 "1263522094000" 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_12 "1263522151000" 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_13 "1263522198000" 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_14 "1263522238000" 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper macros for the database dumps in the SetUpVersion*Database 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// functions. 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES(x) LEGACY_META_PROTO_TIMES_##x 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR(x) LEGACY_META_PROTO_TIMES_STR_##x 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_PROTO_TIME_VALS(x) \ 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES(x) META_PROTO_TIMES_##x 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR(x) META_PROTO_TIMES_STR_##x 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_VALS(x) \ 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper functions for testing. 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum ShouldIncludeDeletedItems { 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) INCLUDE_DELETED_ITEMS, 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DONT_INCLUDE_DELETED_ITEMS 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected legacy time (in proto 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// format). 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetExpectedLegacyMetaProtoTimes( 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ShouldIncludeDeletedItems include_deleted) { 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> expected_legacy_meta_proto_times; 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[1] = LEGACY_META_PROTO_TIMES(1); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (include_deleted == INCLUDE_DELETED_ITEMS) { 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[2] = LEGACY_META_PROTO_TIMES(2); 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[4] = LEGACY_META_PROTO_TIMES(4); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[5] = LEGACY_META_PROTO_TIMES(5); 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[6] = LEGACY_META_PROTO_TIMES(6); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[7] = LEGACY_META_PROTO_TIMES(7); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[8] = LEGACY_META_PROTO_TIMES(8); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[9] = LEGACY_META_PROTO_TIMES(9); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[10] = LEGACY_META_PROTO_TIMES(10); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[11] = LEGACY_META_PROTO_TIMES(11); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[12] = LEGACY_META_PROTO_TIMES(12); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[13] = LEGACY_META_PROTO_TIMES(13); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[14] = LEGACY_META_PROTO_TIMES(14); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_legacy_meta_proto_times; 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected time (in proto format). 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetExpectedMetaProtoTimes( 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ShouldIncludeDeletedItems include_deleted) { 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> expected_meta_proto_times; 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[1] = META_PROTO_TIMES(1); 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (include_deleted == INCLUDE_DELETED_ITEMS) { 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[2] = META_PROTO_TIMES(2); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[4] = META_PROTO_TIMES(4); 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[5] = META_PROTO_TIMES(5); 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[6] = META_PROTO_TIMES(6); 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[7] = META_PROTO_TIMES(7); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[8] = META_PROTO_TIMES(8); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[9] = META_PROTO_TIMES(9); 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[10] = META_PROTO_TIMES(10); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[11] = META_PROTO_TIMES(11); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[12] = META_PROTO_TIMES(12); 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[13] = META_PROTO_TIMES(13); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[14] = META_PROTO_TIMES(14); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_meta_proto_times; 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected time (as a Time object). 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, base::Time> GetExpectedMetaTimes() { 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, base::Time> expected_meta_times; 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::map<int64, int64>& expected_meta_proto_times = 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS); 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (std::map<int64, int64>::const_iterator it = 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times.begin(); 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) it != expected_meta_proto_times.end(); ++it) { 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_times[it->first] = ProtoTimeToTime(it->second); 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_meta_times; 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Extracts a map from metahandle -> time (in proto format) from the 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// given database. 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetMetaProtoTimes(sql::Connection *db) { 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(db->GetCachedStatement( 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SQL_FROM_HERE, 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, mtime, server_mtime, ctime, server_ctime " 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas")); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(5, s.ColumnCount()); 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> meta_times; 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (s.Step()) { 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 metahandle = s.ColumnInt64(0); 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 mtime = s.ColumnInt64(1); 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 server_mtime = s.ColumnInt64(2); 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 ctime = s.ColumnInt64(3); 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 server_ctime = s.ColumnInt64(4); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, server_mtime); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, ctime); 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, server_ctime); 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) meta_times[metahandle] = mtime; 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(s.Succeeded()); 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return meta_times; 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)::testing::AssertionResult AssertTimesMatch(const char* t1_expr, 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* t2_expr, 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& t1, 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& t2) { 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (t1 == t2) 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ::testing::AssertionSuccess(); 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ::testing::AssertionFailure() 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << t1_expr << " and " << t2_expr 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " (internal values: " << t1.ToInternalValue() 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " and " << t2.ToInternalValue() 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << ") (proto time: " << TimeToProtoTime(t1) 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " and " << TimeToProtoTime(t2) 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << ") do not match"; 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Expect that all time fields of the given entry kernel will be the 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// given time. 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ExpectTime(const EntryKernel& entry_kernel, 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& expected_time) { 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(CTIME)); 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(SERVER_CTIME)); 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(MTIME)); 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(SERVER_MTIME)); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Expect that all the entries in |index| have times matching those in 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the given map (from metahandle to expect time). 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ExpectTimes(const MetahandlesIndex& index, 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::map<int64, base::Time>& expected_times) { 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (MetahandlesIndex::const_iterator it = index.begin(); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) it != index.end(); ++it) { 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 meta_handle = (*it)->ref(META_HANDLE); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SCOPED_TRACE(meta_handle); 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, base::Time>::const_iterator it2 = 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_times.find(meta_handle); 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it2 == expected_times.end()) { 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ADD_FAILURE() << "Could not find expected time for " << meta_handle; 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExpectTime(**it, it2->second); 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion67Database(sql::Connection* connection) { 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is a version 67 database dump whose contents were backformed from 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the contents of the version 68 database dump (the v68 migration was 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // actually written first). 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,server_is_bookmark_object bit default 0," 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "name varchar(255), " /* COLLATE PATHNAME, */ 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unsanitized_name varchar(255)," /* COLLATE PATHNAME, */ 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar," 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_name varchar(255)," /* COLLATE PATHNAME */ 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_non_unique_name varchar," 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob);" 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);" 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item',NULL,'Deleted Item','Deleted Item','Deleted Item'," 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/','http://www.google.com/2',NULL,'AASGASGA'," 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ASADGADGADG');" 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium',NULL,'Welcome to Chromium'," 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,'Google','Google','Google','http://www.google.com/'," 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,'The Internet','The Internet'," 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,NULL,NULL,NULL);" 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,'Google Chrome','Google Chrome'," 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL);" 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,'Bookmarks','Bookmarks','Bookmarks',NULL,NULL," 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'google_chrome_bookmarks',NULL,NULL);" 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Bookmark Bar',NULL,'Bookmark Bar','Bookmark Bar','Bookmark Bar'," 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,'bookmark_bar',NULL,NULL);" 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152," 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks',NULL,'Other Bookmarks','Other Bookmarks'," 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks',NULL,NULL,'other_bookmarks'," 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL);" 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)',NULL,'Home (The Chromium Projects)'," 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF');" 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks',NULL,'Extra Bookmarks','Extra Bookmarks'," 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN Internet Corporation for Assigned Names and Numbers'," 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL," 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'PNGAXF0AAFF','DAAFASF');" 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project',NULL," 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','http://webkit.org/'," 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/x',NULL,'PNGX','PNG2Y');" 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',68);")); 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion68Database(sql::Connection* connection) { 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This sets up an actual version 68 database dump. The IDs were 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // canonicalized to be less huge, and the favicons were overwritten 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // with random junk so that they didn't contain any unprintable 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // characters. A few server URLs were tweaked so that they'd be 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // different from the local URLs. Lastly, the custom collation on 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the server_non_unique_name column was removed. 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0," 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object bit default 0," 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob);" 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL,NULL,NULL,NULL);" 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item','http://www.google.com/'," 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG');" 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google','Google','http://www.google.com/'," 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet','The Internet',NULL,NULL,NULL,NULL,NULL);" 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome','Google Chrome',NULL,NULL,'google_chrome',NULL," 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL);" 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL," 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152," 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL);" 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF');" 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL," 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'PNGAXF0AAFF','DAAFASF');" 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y');" 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',68);")); 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion69Database(sql::Connection* connection) { 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0," 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object bit default 0," 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob, specifics blob, " 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL,NULL,NULL,NULL,NULL," 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item','http://www.google.com/'," 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG'," 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841415" 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "34741534741',X'C28810260A17687474703A2F2F7777772E676F6F676C652E636F" 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6D2F32120B4153414447414447414447');" 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL,NULL," 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A3168" 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F6" 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "56E2F77656C636F6D652E68746D6C1200');" 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google','Google','http://www.google.com/'," 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG',X'C28810220A166" 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "87474703A2F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'" 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464" 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "447415347');" 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6" 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1,'The Internet'," 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,NULL,NULL,NULL,X'C2881000',X'C2881000');" 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1,'Google Chrome'," 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL,NULL,NULL);" 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL," 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0,1," 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL,NULL," 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C2881000',X'C2881000');" 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF',X'C28810220A18687474703A2F2F6465762E6368726F6D6" 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9756D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F646576" 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2E6368726F6D69756D2E6F72672F6F7468657212084146414756415346');" 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL," 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL,'PNGAXF0AAFF'," 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'DAAFASF',X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F1" 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "20B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963" 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "616E6E2E636F6D2F120744414146415346');" 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y'," 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C2" 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "88101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259');" 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',69);" 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion70Database(sql::Connection* connection) { 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',70);" 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_dir bit default 0,server_is_del bit default 0," 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar," 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "specifics blob,server_specifics blob);" 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');" 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) "," 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-2097152,4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0," 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A" 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X'C2881026" 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B415341444741" 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4447414447');" 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A" 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E74" 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F" 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765" 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C636F6D652E68746D6C1200');" 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C6" 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "52E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F77777" 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72E676F6F676C652E636F6D2F12084147464447415347');" 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome'," 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome','google_chrome',NULL,NULL,NULL);" 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000'," 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0," 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881000'," 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2097152,2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F" 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636872" 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6D69756D2E6F72672F6F7468657212084146414756415346');" 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F" 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E69" 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "63616E6E2E636F6D2F120744414146415346');" 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F78120550" 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E473259');" 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion71Database(sql::Connection* connection) { 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',71);" 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT);" 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');")); 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion72Database(sql::Connection* connection) { 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',72);" 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT);" 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');")); 10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion73Database(sql::Connection* connection) { 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',73);" 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT, " 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "notification_state BLOB);" 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x',X'C2881000');")); 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion74Database(sql::Connection* connection) { 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',74);" 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, last_download_timestamp" 11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " INT, initial_sync_ended BOOLEAN default 0);" 11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd" 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra" 11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion_state INT default 0, bookmarks_added_during_autofill_migration" 11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " INT default 0, autofill_migration_time INT default 0, autofill_ent" 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ries_added_during_migration INT default 0, autofill_profiles_added_" 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "during_migration INT default 0);" 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'" 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542" 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);" 11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,bas" 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_version bigint default -1,server_version bigint default 0,mtime b" 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "igint default 0,server_mtime bigint default 0,ctime bigint default " 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,server_ctime bigint default 0,server_position_in_parent bigint de" 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault 0,local_external_id bigint default 0,id varchar(255) default " 11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'r',parent_id varchar(255) default 'r',server_parent_id varchar(255" 11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ") default 'r',prev_id varchar(255) default 'r',next_id varchar(255)" 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " default 'r',is_unsynced bit default 0,is_unapplied_update bit defa" 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 0,is_del bit default 0,is_dir bit default 0,server_is_dir bit d" 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_is_del bit default 0,non_unique_name varchar,server" 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_non_unique_name varchar(255),unique_server_tag varchar,unique_clie" 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "nt_tag varchar,specifics blob,server_specifics blob);" 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'" 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "');" 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_2','s_ID" 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted " 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "36F6D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E67" 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6F676C652E636F6D2F32120B4153414447414447414447');" 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_4','s_ID" 11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','W" 11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "elcome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E6" 11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E" 11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "68746D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636" 11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');" 11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5','s_ID_" 11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NU" 11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841" 11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47415347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" 12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "36F6D2F12084147464447415347');" 12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_6','s_ID" 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL" 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,X'C2881000',X'C2881000');" 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7','r','r" 12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrom" 12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e',NULL,NULL,NULL);" 12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8','s_ID_" 12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chr" 12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ome_bookmarks',NULL,X'C2881000',X'C2881000');" 12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9','s_ID_" 12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'" 12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'bookmark_bar',NULL,X'C2881000',X'C2881000');" 12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_10','s_I" 12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Boo" 12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "kmarks','other_bookmarks',NULL,X'C2881000',X'C2881000');" 12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID_11','s_" 12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projec" 12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ts)','Home (The Chromium Projects)',NULL,NULL,X'C28810220A186874747" 12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810" 12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120" 12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "84146414756415346');" 12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s_ID_6','" 12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bo" 12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "okmarks',NULL,NULL,X'C2881000',X'C2881000');" 12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID_13','s_" 12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Co" 12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "rporation for Assigned Names and Numbers','ICANN | Internet Corpora" 12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474" 12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C" 12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F12074441414641" 12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5346');" 12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID_14','s_" 12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Pr" 12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "oject','The WebKit Open Source Project',NULL,NULL,X'C288101A0A12687" 12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474" 12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "703A2F2F7765626B69742E6F72672F781205504E473259');" 12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion75Database(sql::Connection* connection) { 12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',75);" 12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd" 12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra" 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion_state INT default 0,bookmarks_added_during_autofill_migration " 12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INT default 0, autofill_migration_time INT default 0, autofill_entr" 12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ies_added_during_migration INT default 0, autofill_profiles_added_d" 12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "uring_migration INT default 0);" 12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org" 12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-655" 12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "42,'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);" 12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, " 12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BOOLEAN default 0);" 12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,ba" 12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "se_version bigint default -1,server_version bigint default 0,mtime" 12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " bigint default 0,server_mtime bigint default 0,ctime bigint defau" 12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "lt 0,server_ctime bigint default 0,server_position_in_parent bigin" 12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t default 0,local_external_id bigint default 0,id varchar(255) def" 12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ault 'r',parent_id varchar(255) default 'r',server_parent_id varch" 12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ar(255) default 'r',prev_id varchar(255) default 'r',next_id varch" 12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ar(255) default 'r',is_unsynced bit default 0,is_unapplied_update " 12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bit default 0,is_del bit default 0,is_dir bit default 0,server_is_" 12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "dir bit default 0,server_is_del bit default 0,non_unique_name varc" 12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,server_non_unique_name varchar(255),unique_server_tag varchar," 12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_client_tag varchar,specifics blob,server_specifics blob);" 12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NUL" 12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "L,X'',X'');" 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_" 12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Ite" 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "m','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772" 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A176874" 12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "74703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474" 12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447');" 12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_" 12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to " 12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A316874747" 12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F65" 12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7" 12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765" 12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C636F6D652E68746D6C1200');" 12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5" 13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Goo" 13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "gle',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C65" 13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F777" 13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7772E676F6F676C652E636F6D2F12084147464447415347');" 13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_" 13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The In" 13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ternet',NULL,NULL,X'C2881000',X'C2881000');" 13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7" 13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','" 13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "google_chrome',NULL,NULL,NULL);" 13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8" 13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks'" 13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9" 13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','B" 13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_" 13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks" 13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','Other Bookmarks','other_bookmarks',NULL,X'C2881000',X'C28810" 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00');" 13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID" 13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chr" 13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "omium Projects)','Home (The Chromium Projects)',NULL,NULL,X'C28" 13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F120641" 13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s" 13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmark" 13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "s','Extra Bookmarks',NULL,NULL,X'C2881000',X'C2881000');" 13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID" 13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN |" 13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " Internet Corporation for Assigned Names and Numbers','ICANN | " 13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Internet Corporation for Assigned Names and Numbers',NULL,NULL," 13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E696361" 13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6E6E2E636F6D2F120744414146415346');" 13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID" 13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Op" 13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "en Source Project','The WebKit Open Source Project',NULL,NULL,X" 13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758'," 13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473" 13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "259');" 13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion76Database(sql::Connection* connection) { 13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',76);" 13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,mtime big" 13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "int default 0,server_mtime bigint default 0,ctime bigint default 0,s" 13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "erver_ctime bigint default 0,server_position_in_parent bigint defaul" 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 0,local_external_id bigint default 0,id varchar(255) default 'r',p" 13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob);" 13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'')" 13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ";" 13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_2','s_ID_9" 13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted Ite" 13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "m',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6" 13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E676F6F6" 13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76C652E636F6D2F32120B4153414447414447414447');" 13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_4','s_ID_9" 13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','Welc" 13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E676F6" 13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746" 13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6" 13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');" 13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5','s_ID_9'" 13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NULL," 13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F1208414741" 13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D" 13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F12084147464447415347');" 13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_6','s_ID_9" 14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL,NU" 14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000');" 14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7','r','r'," 14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrome'," 14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL);" 14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8','s_ID_7'" 14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chrome" 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_bookmarks',NULL,X'C2881000',X'C2881000');" 14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9','s_ID_8'" 14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar','b" 14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ookmark_bar',NULL,X'C2881000',X'C2881000');" 14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_10','s_ID_" 14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Bookma" 14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "rks','other_bookmarks',NULL,X'C2881000',X'C2881000');" 14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID_11','s_ID" 14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projects)" 14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','Home (The Chromium Projects)',NULL,NULL,X'C28810220A18687474703A2" 14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1" 14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120841464" 14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14756415346');" 14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s_ID_6','s_" 14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm" 14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arks',NULL,NULL,X'C2881000',X'C2881000');" 14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID_13','s_ID" 14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Corpo" 14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ration for Assigned Names and Numbers','ICANN | Internet Corporation" 14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474703A2" 14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C288102" 14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00A15687474703A2F2F7777772E6963616E6E2E636F6D2F120744414146415346');" 14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID_14','s_ID" 14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Proje" 14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ct','The WebKit Open Source Project',NULL,NULL,X'C288101A0A126874747" 14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2" 14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7765626B69742E6F72672F781205504E473259');" 14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion77Database(sql::Connection* connection) { 14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',77);" 14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob);" 14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) 14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');" 14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447');" 14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200');" 14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," META_PROTO_TIMES_VALS(5) 14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','" 14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E" 14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E67" 14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6F676C652E636F6D2F12084147464447415347');" 14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," META_PROTO_TIMES_VALS(7) 14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Goo" 15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "gle Chrome','google_chrome',NULL,NULL,NULL);" 15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," META_PROTO_TIMES_VALS(8) 15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmar" 15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," META_PROTO_TIMES_VALS(9) 15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'" 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000');" 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346');" 15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," META_PROTO_TIMES_VALS(12) 15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_12','s_ID_6','s_" 15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm" 15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arks',NULL,NULL,X'C2881000',X'C2881000');" 15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346');" 15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259');" 15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion78Database(sql::Connection* connection) { 15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',78);" 15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 15645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 16155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 16275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 16315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 16325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion79Database(sql::Connection* connection) { 16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 16445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',79);" 16455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 16465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 16605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 16625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 16705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 16725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 16805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 16815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 16845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 16855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 17035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 17045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 17205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL);" 17305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion80Database(sql::Connection* connection) { 17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',80);" 17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 17435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 17465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 17495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 17515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 17535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 17635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 17745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 17755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 17765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 17775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 17785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 17795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 17805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 17815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 17905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 17915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 17975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 17985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 18045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 18055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 18075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 18095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 18115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 18165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 18185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 18195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);" 18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 18285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper definitions to create the version 81 DB tables. 18325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 18335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int V80_ROW_COUNT = 13; 18355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int64 V80_POSITIONS[V80_ROW_COUNT] = { 18365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 18375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -2097152, 18385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -3145728, 18395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -4194304, 18415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2097152, 18455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1048576, 18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -917504, 18485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576 18495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 18505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string V81_Ordinal(int n) { 18525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return Int64ToNodeOrdinal(V80_POSITIONS[n]).ToInternalValue(); 18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} //namespace 18565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Unlike the earlier versions, the rows for version 81 are generated 18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// programmatically to accurately handle unprintable characters for the 18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// server_ordinal_in_parent field. 18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion81Database(sql::Connection* connection) { 18615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 18625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 18635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 18645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 18655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',81);" 18665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 18675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 18685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 18695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 18705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 18715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0" 18725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 18735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 18745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 18755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 18765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 18775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 18785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 18795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 18805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 18815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ", server_ordinal_in_parent blob);" 18825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 18845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 18855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 18865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 18875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 18885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 18895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 18915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 18925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);", 18935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 18945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 18955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 18965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 18975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 18985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL,?);", 18995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 19005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 19015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 19025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 19035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 19045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 19055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?);", 19065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 19075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 19085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 19095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 19105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 19115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL,?);", 19125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 19135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 19145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 19155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,?);", 19165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 19175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 19185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);", 19195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 19205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 19215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 19225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL,?);", 19235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 19245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 19255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 19265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL,?);", 19275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 19285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 19295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 19305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?);", 19315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 19325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 19335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 19345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 19355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 19365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);", 19375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 19385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 19395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 19405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL,?);", 19415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 19425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 19435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 19445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 19455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 19465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 19475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?);", 19485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 19495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 19505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 19515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 19525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 19535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL,?);" }; 19545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 19565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 19575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ord = V81_Ordinal(i); 19585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 19595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Run()); 19605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Reset(true); 19615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 19625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 19645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion82Database(sql::Connection* connection) { 19665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 19675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 19685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 19695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 19705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',81);" 19715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 19725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 19735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0);" 19745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 19755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 19765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 19775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0" 19785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 19795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 19805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 19815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 19825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 19835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 19845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 19855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 19865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 19875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ", server_ordinal_in_parent blob);" 19885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 19895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 19905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 19915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 19925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 19935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 19945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 19955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 19975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 19985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);", 19995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 20005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 20015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 20025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 20035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 20045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL,?);", 20055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 20065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 20075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 20085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 20095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 20105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 20115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?);", 20125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 20135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 20145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 20155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 20165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 20175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL,?);", 20185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 20195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 20205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 20215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,?);", 20225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 20235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 20245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);", 20255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 20265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 20275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 20285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL,?);", 20295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 20305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 20315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 20325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL,?);", 20335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 20345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 20355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 20365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?);", 20375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 20385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 20395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 20405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 20415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 20425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);", 20435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 20445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 20455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 20465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL,?);", 20475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 20485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 20495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 20505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 20515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 20525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 20535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?);", 20545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 20555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 20565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 20575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 20585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 20595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL,?);" }; 20605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 20625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 20635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ord = V81_Ordinal(i); 20645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 20655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Run()); 20665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Reset(true); 20675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 20685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 20695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 20705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion67To68) { 20725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 20735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 20745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion67Database(&connection); 20765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns existing before version 67. 20785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "name")); 20795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unsanitized_name")); 20805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_name")); 20815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 20835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 20845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 20865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion67To68()); 20875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(68, dbs->GetVersion()); 20885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 20895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 20905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion68To69) { 20925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 20935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 20945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion68Database(&connection); 20955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 20975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 20985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 20995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 21015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion68To69()); 21025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(69, dbs->GetVersion()); 21035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 21045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 21055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); 21075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); 21085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT non_unique_name," 21095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del, is_dir, id, specifics, server_specifics FROM metas " 21105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "WHERE metahandle = 2")); 21115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 21125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("Deleted Item", s.ColumnString(0)); 21135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.ColumnBool(1)); 21145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.ColumnBool(2)); 21155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("s_ID_2", s.ColumnString(3)); 21165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_pb::EntitySpecifics specifics; 21175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics.ParseFromArray(s.ColumnBlob(4), s.ColumnByteLength(4)); 21185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(specifics.has_bookmark()); 21195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("http://www.google.com/", specifics.bookmark().url()); 21205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("AASGASGA", specifics.bookmark().favicon()); 21215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics.ParseFromArray(s.ColumnBlob(5), s.ColumnByteLength(5)); 21225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(specifics.has_bookmark()); 21235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("http://www.google.com/2", specifics.bookmark().url()); 21245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("ASADGADGADG", specifics.bookmark().favicon()); 21255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.Step()); 21265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 21275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion69To70) { 21295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 21305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 21315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion69Database(&connection); 21325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "singleton_tag")); 21345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_server_tag")); 21355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_client_tag")); 21365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 21385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 21395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 21405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 21425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion69To70()); 21435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(70, dbs->GetVersion()); 21445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 21455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 21465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); 21485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); 21495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT id" 21505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " FROM metas WHERE unique_server_tag = 'google_chrome'")); 21515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 21525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("s_ID_7", s.ColumnString(0)); 21535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 21545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion70To71) { 21565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 21575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 21585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion70Database(&connection); 21595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); 21615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "initial_sync_ended")); 21625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("models")); 21635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 21655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 21665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 21675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 21695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion70To71()); 21705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(71, dbs->GetVersion()); 21715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 21725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 21735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); 21755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "initial_sync_ended")); 21765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("models")); 21775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); 21785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); 21795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "model_id")); 21805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT model_id, " 21825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended, last_download_timestamp FROM models")); 21835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 21845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string model_id = s.ColumnString(0); 21855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("C2881000", base::HexEncode(model_id.data(), model_id.size())) 21865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Model ID is expected to be the empty BookmarkSpecifics proto."; 21875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(s.ColumnBool(1)); 21885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(694, s.ColumnInt64(2)); 21895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.Step()); 21905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 21915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion71To72) { 21945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 21955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 21965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion71Database(&connection); 21975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("extended_attributes")); 21995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 22015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 22025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 22035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 22055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion71To72()); 22065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(72, dbs->GetVersion()); 22075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 22085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 22095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); 22115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 22125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion72To73) { 22145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 22155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 22165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion72Database(&connection); 22175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); 22195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 22215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 22225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 22235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 22255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion72To73()); 22265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(73, dbs->GetVersion()); 22275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 22285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 22295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); 22315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 22325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion73To74) { 22345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 22355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 22365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion73Database(&connection); 22375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 22395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 22405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 22415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 22425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 22435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 22445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 22455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 22465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 22475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 22485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 22505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 22515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 22525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 22545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 22555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 22565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 22585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion73To74()); 22595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(74, dbs->GetVersion()); 22605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 22615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 22625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 22645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 22655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 22665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 22675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 22685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 22695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 22705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 22715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 22725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 22735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 22755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 22765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 22775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 22785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion74To75) { 22805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 22815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 22825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion74Database(&connection); 22835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "progress_marker")); 22855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); 22865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 22885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 22895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 22905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 22925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion74To75()); 22935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(75, dbs->GetVersion()); 22945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 22955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 22965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); 22985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); 22995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 23005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion75To76) { 23025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 23035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 23045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion75Database(&connection); 23055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 23075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 23085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 23095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 23105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 23115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 23125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 23135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 23145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 23155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 23165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 23185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 23195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 23205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion75To76()); 23215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(76, dbs->GetVersion()); 23225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 23235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cannot actual refresh columns due to version 76 not containing all 23245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // necessary columns. 23255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 23265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion76To77) { 23285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 23295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 23305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion76Database(&connection); 23315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 23335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 23345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 23355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedLegacyMetaProtoTimes(INCLUDE_DELETED_ITEMS), 23375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(dbs->db_.get())); 23385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Since the proto times are expected to be in a legacy format, they may not 23395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // be compatible with ProtoTimeToTime, so we don't call ExpectTimes(). 23405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion76To77()); 23425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(77, dbs->GetVersion()); 23435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS), 23455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(dbs->db_.get())); 23465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cannot actually load entries due to version 77 not having all required 23475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // columns. 23485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 23495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 23505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion77To78) { 23525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 23535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 23545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion77Database(&connection); 23555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "BASE_SERVER_SPECIFICS")); 23575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 23595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 23605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 23615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 23625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion77To78()); 23635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(78, dbs->GetVersion()); 23645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 23665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 23675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); 23695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 23705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion78To79) { 23725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kInitialNextId = -65542; 23735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 23755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 23765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion78Database(&connection); 23775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Double-check the original next_id is what we think it is. 23795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 23805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT next_id FROM share_info")); 23815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Step(); 23825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(kInitialNextId, s.ColumnInt(0)); 23835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 23855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 23865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 23875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion78To79()); 23885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(79, dbs->GetVersion()); 23895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 23905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure the next_id has been incremented. 23925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetahandlesIndex entry_bucket; 23935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) STLElementDeleter<MetahandlesIndex> deleter(&entry_bucket); 23945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo load_info; 23955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Clear(); 23975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->Load(&entry_bucket, &load_info)); 23985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_LE(load_info.kernel_info.next_id, kInitialNextId - 65536); 23995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 24005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion79To80) { 24025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 24035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 24045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion79Database(&connection); 24055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 24075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 24085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 24095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion79To80()); 24105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(80, dbs->GetVersion()); 24115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 24125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure the bag_of_chips has been set. 24145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetahandlesIndex entry_bucket; 24155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) STLElementDeleter<MetahandlesIndex> deleter(&entry_bucket); 24165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo load_info; 24175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->Load(&entry_bucket, &load_info)); 24195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check that the initial value is the serialization of an empty ChipBag. 24205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_pb::ChipBag chip_bag; 24215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string serialized_chip_bag; 24225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(chip_bag.SerializeToString(&serialized_chip_bag)); 24235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(serialized_chip_bag, load_info.kernel_info.bag_of_chips); 24245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 24255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion80To81) { 24275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 24285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 24295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion80Database(&connection); 24305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 24325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, server_position_in_parent " 24335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas WHERE unique_server_tag = 'google_chrome'")); 24345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 24355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(sql::COLUMN_TYPE_INTEGER, s.ColumnType(1)); 24365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 24385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 24395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion80To81()); 24405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(81, dbs->GetVersion()); 24415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test that ordinal values are preserved correctly. 24435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement new_s(connection.GetUniqueStatement( 24445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, server_ordinal_in_parent " 24455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas WHERE unique_server_tag = 'google_chrome'")); 24465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_s.Step()); 24475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(sql::COLUMN_TYPE_BLOB, new_s.ColumnType(1)); 24485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string expected_ordinal = Int64ToNodeOrdinal(1048576).ToInternalValue(); 24505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string actual_ordinal; 24515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_s.ColumnBlobAsString(1, &actual_ordinal); 24525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(expected_ordinal, actual_ordinal); 24535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 24545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, DetectInvalidOrdinal) { 24565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 24575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 24585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion81Database(&connection); 24595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 24615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 24625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(81, dbs->GetVersion()); 24635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Insert row with bad ordinal. 24655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int64 now = TimeToProtoTime(base::Time::Now()); 24665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 24675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas " 24685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "( id, metahandle, is_dir, ctime, mtime, server_ordinal_in_parent) " 24695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "VALUES( \"c-invalid\", 9999, 1, ?, ?, \" \")")); 24705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.BindInt64(0, now); 24715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.BindInt64(1, now); 24725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Run()); 24735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Trying to unpack this entry should signal that the DB is corrupted. 24755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetahandlesIndex entry_bucket; 24765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) STLElementDeleter<MetahandlesIndex> deleter(&entry_bucket); 24775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo kernel_load_info; 24785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(FAILED_DATABASE_CORRUPT, 24795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbs->Load(&entry_bucket, &kernel_load_info)); 24805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 24815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion81To82) { 24835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 24845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 24855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion81Database(&connection); 24865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "transaction_version")); 24875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 24895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 24905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 24915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion81To82()); 24925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(82, dbs->GetVersion()); 24935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 24945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); 24965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 24975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion82To83) { 24995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 25005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 25015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion82Database(&connection); 25025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "transaction_version")); 25035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 25055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 25065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion82To83()); 25075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(83, dbs->GetVersion()); 25085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); 25105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 25115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_P(MigrationTest, ToCurrentVersion) { 25135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 25145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 25155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (GetParam()) { 25165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 67: 25175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion67Database(&connection); 25185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 68: 25205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion68Database(&connection); 25215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 69: 25235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion69Database(&connection); 25245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 70: 25265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion70Database(&connection); 25275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 71: 25295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion71Database(&connection); 25305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 72: 25325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion72Database(&connection); 25335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 73: 25355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion73Database(&connection); 25365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 74: 25385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion74Database(&connection); 25395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 75: 25415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion75Database(&connection); 25425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 76: 25445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion76Database(&connection); 25455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 77: 25475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion77Database(&connection); 25485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 78: 25505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion78Database(&connection); 25515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 79: 25535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion79Database(&connection); 25545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 80: 25565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion80Database(&connection); 25575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 81: 25595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion81Database(&connection); 25605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 82: 25625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion82Database(&connection); 25635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 25645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 25655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If you see this error, it may mean that you've increased the 25665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // database version number but you haven't finished adding unit tests 25675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for the database migration code. You need to need to supply a 25685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // SetUpVersionXXDatabase function with a dump of the test database 25695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // at the old schema. Here's one way to do that: 25705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 1. Start on a clean tree (with none of your pending schema changes). 25715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 2. Set a breakpoint in this function and run the unit test. 25725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 3. Allow this test to run to completion (step out of the call), 25735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // without allowing ~MigrationTest to execute. 25745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 4. Examine this->temp_dir_ to determine the location of the 25755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // test database (it is currently of the version you need). 25765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 5. Dump this using the sqlite3 command line tool: 25775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // > .output foo_dump.sql 25785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // > .dump 25795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 6. Replace the timestamp columns with META_PROTO_TIMES(x) (or 25805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // LEGACY_META_PROTO_TIMES(x) if before Version 77). 25815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FAIL() << "Need to supply database dump for version " << GetParam(); 25825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 25835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) syncable::Directory::KernelLoadInfo dir_info; 25855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetahandlesIndex index; 25865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) STLElementDeleter<MetahandlesIndex> index_deleter(&index); 25875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 25895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 25905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 25915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(OPENED, dbs->Load(&index, &dir_info)); 25925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 25935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); 25945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 25955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns deleted in Version 67. 25975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "name")); 25985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unsanitized_name")); 25995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "server_name")); 26005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns added in Version 68. 26025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); 26035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); 26045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns deleted in Version 68. 26065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "is_bookmark_object")); 26075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", 26085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object")); 26095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_favicon")); 26105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_url")); 26115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "server_bookmark_url")); 26125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Renamed a column in Version 70 26145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "singleton_tag")); 26155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); 26165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); 26175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removed extended attributes in Version 72. 26195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); 26205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns added in Version 73. 26225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); 26235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column replaced in version 75. 26255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); 26265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); 26275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns removed in version 76. 26295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 26305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 26315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 26325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 26335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 26345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 26355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 26365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 26375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 26385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 26395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 78. 26415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); 26425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 82. 26445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); 26455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 83. 26475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); 26485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check download_progress state (v75 migration) 26505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(694, 26515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 26525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .timestamp_token_for_migration()); 26535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 26545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 26555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_token()); 26565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(32904, 26575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 26585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .data_type_id()); 26595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 26605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 26615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_timestamp_token_for_migration()); 26625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 26635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 26645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_token()); 26655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 26665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 26675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .token().empty()); 26685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(41210, 26695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 26705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .data_type_id()); 26715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check metas 26735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedMetaProtoTimes(DONT_INCLUDE_DELETED_ITEMS), 26745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(&connection)); 26755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExpectTimes(index, GetExpectedMetaTimes()); 26765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetahandlesIndex::iterator it = index.begin(); 26785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(it != index.end()); 26795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1, (*it)->ref(META_HANDLE)); 26805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(ID).IsRoot()); 26815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(++it != index.end()); 26835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(6, (*it)->ref(META_HANDLE)); 26845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(IS_DIR)); 26855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(SERVER_IS_DIR)); 26865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE( 26875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SPECIFICS).bookmark().has_url()); 26885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE( 26895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SERVER_SPECIFICS).bookmark().has_url()); 26905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE( 26915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SPECIFICS).bookmark().has_favicon()); 26925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE((*it)->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 26935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(++it != index.end()); 26955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(7, (*it)->ref(META_HANDLE)); 26965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("google_chrome", (*it)->ref(UNIQUE_SERVER_TAG)); 26975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE((*it)->ref(SPECIFICS).has_bookmark()); 26985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE((*it)->ref(SERVER_SPECIFICS).has_bookmark()); 26995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(++it != index.end()); 27015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(8, (*it)->ref(META_HANDLE)); 27025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("google_chrome_bookmarks", (*it)->ref(UNIQUE_SERVER_TAG)); 27035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(SPECIFICS).has_bookmark()); 27045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(SERVER_SPECIFICS).has_bookmark()); 27055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(++it != index.end()); 27075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(9, (*it)->ref(META_HANDLE)); 27085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("bookmark_bar", (*it)->ref(UNIQUE_SERVER_TAG)); 27095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(SPECIFICS).has_bookmark()); 27105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(SERVER_SPECIFICS).has_bookmark()); 27115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(++it != index.end()); 27135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(10, (*it)->ref(META_HANDLE)); 27145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE((*it)->ref(IS_DEL)); 27155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(SPECIFICS).has_bookmark()); 27165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(SERVER_SPECIFICS).has_bookmark()); 27175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE((*it)->ref(SPECIFICS).bookmark().has_url()); 27185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE( 27195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SPECIFICS).bookmark().has_favicon()); 27205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE( 27215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SERVER_SPECIFICS).bookmark().has_url()); 27225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE((*it)->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 27235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("other_bookmarks", (*it)->ref(UNIQUE_SERVER_TAG)); 27245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("Other Bookmarks", (*it)->ref(NON_UNIQUE_NAME)); 27255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("Other Bookmarks", (*it)->ref(SERVER_NON_UNIQUE_NAME)); 27265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(++it != index.end()); 27285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(11, (*it)->ref(META_HANDLE)); 27295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE((*it)->ref(IS_DEL)); 27305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE((*it)->ref(IS_DIR)); 27315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(SPECIFICS).has_bookmark()); 27325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(SERVER_SPECIFICS).has_bookmark()); 27335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("http://dev.chromium.org/", 27345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SPECIFICS).bookmark().url()); 27355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("AGATWA", 27365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SPECIFICS).bookmark().favicon()); 27375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("http://dev.chromium.org/other", 27385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SERVER_SPECIFICS).bookmark().url()); 27395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("AFAGVASF", 27405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SERVER_SPECIFICS).bookmark().favicon()); 27415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("", (*it)->ref(UNIQUE_SERVER_TAG)); 27425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("Home (The Chromium Projects)", (*it)->ref(NON_UNIQUE_NAME)); 27435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("Home (The Chromium Projects)", (*it)->ref(SERVER_NON_UNIQUE_NAME)); 27445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(++it != index.end()); 27465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(12, (*it)->ref(META_HANDLE)); 27475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE((*it)->ref(IS_DEL)); 27485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(IS_DIR)); 27495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("Extra Bookmarks", (*it)->ref(NON_UNIQUE_NAME)); 27505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("Extra Bookmarks", (*it)->ref(SERVER_NON_UNIQUE_NAME)); 27515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(SPECIFICS).has_bookmark()); 27525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE((*it)->ref(SERVER_SPECIFICS).has_bookmark()); 27535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE( 27545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SPECIFICS).bookmark().has_url()); 27555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE( 27565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SERVER_SPECIFICS).bookmark().has_url()); 27575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE( 27585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*it)->ref(SPECIFICS).bookmark().has_favicon()); 27595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE((*it)->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 27605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(++it != index.end()); 27625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(13, (*it)->ref(META_HANDLE)); 27635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(++it != index.end()); 27655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(14, (*it)->ref(META_HANDLE)); 27665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(++it == index.end()); 27685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 27695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTANTIATE_TEST_CASE_P(DirectoryBackingStore, MigrationTest, 27715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testing::Range(67, kCurrentDBVersion)); 27725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, ModelTypeIds) { 27745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = FIRST_REAL_MODEL_TYPE; i < MODEL_TYPE_COUNT; ++i) { 27755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string model_id = 27765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDirectoryBackingStore::ModelTypeEnumToModelId(ModelTypeFromInt(i)); 27775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(i, 27785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDirectoryBackingStore::ModelIdToModelTypeEnum(model_id.data(), 27795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_id.size())); 27805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 27815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 27825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 27845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OnDiskDirectoryBackingStoreForTest : public OnDiskDirectoryBackingStore { 27865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 27875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDiskDirectoryBackingStoreForTest(const std::string& dir_name, 27885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const FilePath& backing_filepath); 27895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~OnDiskDirectoryBackingStoreForTest(); 27905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool DidFailFirstOpenAttempt(); 27915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 27935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ReportFirstTryOpenFailure() OVERRIDE; 27945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 27965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool first_open_failed_; 27975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 27985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OnDiskDirectoryBackingStoreForTest::OnDiskDirectoryBackingStoreForTest( 28005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& dir_name, 28015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const FilePath& backing_filepath) : 28025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDiskDirectoryBackingStore(dir_name, backing_filepath), 28035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_open_failed_(false) { } 28045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OnDiskDirectoryBackingStoreForTest::~OnDiskDirectoryBackingStoreForTest() { } 28065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OnDiskDirectoryBackingStoreForTest::ReportFirstTryOpenFailure() { 28085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do nothing, just like we would in release-mode. In debug mode, we DCHECK. 28095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_open_failed_ = true; 28105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 28115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool OnDiskDirectoryBackingStoreForTest::DidFailFirstOpenAttempt() { 28135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return first_open_failed_; 28145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 28155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 28175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is a whitebox test intended to exercise the code path where the on-disk 28195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// directory load code decides to delete the current directory and start fresh. 28205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 28215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is considered "minor" corruption because the database recreation is 28225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// expected to succeed. The alternative, where recreation does not succeed (ie. 28235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// due to read-only file system), is not tested here. 28245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MinorCorruption) { 28255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 28265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<OnDiskDirectoryBackingStore> dbs( 28275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath())); 28285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 28295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 28305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Corrupt the root node. 28325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 28335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 28345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.Open(GetDatabasePath())); 28355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.Execute( 28365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "UPDATE metas SET parent_id='bogus' WHERE id = 'r';")); 28375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 28385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 28405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<OnDiskDirectoryBackingStoreForTest> dbs( 28415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new OnDiskDirectoryBackingStoreForTest(GetUsername(), 28425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDatabasePath())); 28435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 28455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(dbs->DidFailFirstOpenAttempt()); 28465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 28475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 28485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, DeleteEntries) { 28505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 28515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 28525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpCurrentDatabaseAndCheckVersion(&connection); 28545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 28555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 28565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetahandlesIndex index; 28575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo kernel_load_info; 28585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) STLElementDeleter<MetahandlesIndex> index_deleter(&index); 28595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbs->Load(&index, &kernel_load_info); 28615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t initial_size = index.size(); 28625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_LT(0U, initial_size) << "Test requires entries to delete."; 28635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 first_to_die = (*index.begin())->ref(META_HANDLE); 28645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetahandleSet to_delete; 28655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to_delete.insert(first_to_die); 28665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(dbs->DeleteEntries(to_delete)); 28675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) STLDeleteElements(&index); 28695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbs->LoadEntries(&index); 28705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(initial_size - 1, index.size()); 28725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool delete_failed = false; 28735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (MetahandlesIndex::iterator it = index.begin(); it != index.end(); 28745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++it) { 28755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((*it)->ref(META_HANDLE) == first_to_die) { 28765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete_failed = true; 28775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 28785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 28795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 28805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(delete_failed); 28815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to_delete.clear(); 28835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (MetahandlesIndex::iterator it = index.begin(); it != index.end(); 28845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++it) { 28855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to_delete.insert((*it)->ref(META_HANDLE)); 28865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 28875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(dbs->DeleteEntries(to_delete)); 28895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) STLDeleteElements(&index); 28915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbs->LoadEntries(&index); 28925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0U, index.size()); 28935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 28945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, GenerateCacheGUID) { 28965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& guid1 = TestDirectoryBackingStore::GenerateCacheGUID(); 28975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& guid2 = TestDirectoryBackingStore::GenerateCacheGUID(); 28985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(24U, guid1.size()); 28995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(24U, guid2.size()); 29005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // In theory this test can fail, but it won't before the universe 29015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // dies of heat death. 29025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(guid1, guid2); 29035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncable 29065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncer 2907