directory_backing_store_unittest.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/file_util.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/stl_util.h" 14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string_number_conversions.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sql/connection.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sql/statement.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "sync/base/sync_export.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/internal_api/public/base/node_ordinal.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/protocol/bookmark_specifics.pb.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/protocol/sync.pb.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/syncable/directory_backing_store.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/syncable/on_disk_directory_backing_store.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/syncable/syncable-inl.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/test/test_directory_backing_store.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/util/time.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest-param-test.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncer { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncable { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SYNC_EXPORT_PRIVATE extern const int32 kCurrentDBVersion; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MigrationTest : public testing::TestWithParam<int> { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp() { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string GetUsername() { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return "nick@chromium.org"; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath GetDatabasePath() { 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return temp_dir_.path().Append(Directory::kSyncDatabaseFilename); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool LoadAndIgnoreReturnedData(DirectoryBackingStore *dbs) { 49868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap tmp_handles_map; 50868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) JournalIndex delete_journals; 51868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> deleter(&tmp_handles_map); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo kernel_load_info; 53868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return dbs->Load(&tmp_handles_map, &delete_journals, &kernel_load_info) == 54868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) OPENED; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion67Database(sql::Connection* connection); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion68Database(sql::Connection* connection); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion69Database(sql::Connection* connection); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion70Database(sql::Connection* connection); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion71Database(sql::Connection* connection); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion72Database(sql::Connection* connection); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion73Database(sql::Connection* connection); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion74Database(sql::Connection* connection); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion75Database(sql::Connection* connection); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion76Database(sql::Connection* connection); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion77Database(sql::Connection* connection); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion78Database(sql::Connection* connection); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion79Database(sql::Connection* connection); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion80Database(sql::Connection* connection); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion81Database(sql::Connection* connection); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpVersion82Database(sql::Connection* connection); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetUpVersion83Database(sql::Connection* connection); 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetUpVersion84Database(sql::Connection* connection); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetUpVersion85Database(sql::Connection* connection); 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetUpVersion86Database(sql::Connection* connection); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUpCurrentDatabaseAndCheckVersion(sql::Connection* connection) { 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion86Database(connection); // Prepopulates data. 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), connection)); 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ScopedTempDir temp_dir_; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DirectoryBackingStoreTest : public MigrationTest {}; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// On Windows, we used to store timestamps in FILETIME format. 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_1 129079956640320000LL 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_2 128976886618480000LL 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_4 129002163642690000LL 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_5 129001555500000000LL 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_6 129053976170000000LL 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_7 128976864758480000LL 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_8 128976864758480000LL 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_9 128976864758480000LL 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_10 128976864758480000LL 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_11 129079956948440000LL 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_12 129079957513650000LL 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_13 129079957985300000LL 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_14 129079958383000000LL 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_1 "129079956640320000" 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_2 "128976886618480000" 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_4 "129002163642690000" 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_5 "129001555500000000" 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_6 "129053976170000000" 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_7 "128976864758480000" 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_8 "128976864758480000" 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_9 "128976864758480000" 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_10 "128976864758480000" 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_11 "129079956948440000" 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_12 "129079957513650000" 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_13 "129079957985300000" 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_14 "129079958383000000" 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Generated via: 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ruby -ane '$F[1].sub!("LEGACY_", ""); $F[2] = Integer($F[2].sub!("LL", "")) / 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 10000 - 11644473600000; print "#{$F[0]} #{$F[1]} #{$F[2]}LL"' 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Magic numbers taken from 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://stackoverflow.com/questions/5398557/ 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// java-library-for-dealing-with-win32-filetime . 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Now we store them in Java format (ms since the Unix epoch). 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_1 1263522064032LL 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_2 1253215061848LL 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_4 1255742764269LL 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_5 1255681950000LL 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_6 1260924017000LL 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_7 1253212875848LL 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_8 1253212875848LL 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_9 1253212875848LL 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_10 1253212875848LL 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_11 1263522094844LL 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_12 1263522151365LL 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_13 1263522198530LL 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_14 1263522238300LL 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_1 "1263522064032" 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_2 "1253215061848" 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_4 "1255742764269" 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_5 "1255681950000" 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_6 "1260924017000" 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_7 "1253212875848" 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_8 "1253212875848" 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_9 "1253212875848" 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_10 "1253212875848" 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_11 "1263522094844" 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_12 "1263522151365" 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_13 "1263522198530" 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_14 "1263522238300" 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// On other platforms, we used to store timestamps in time_t format (s 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// since the Unix epoch). 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_1 1263522064LL 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_2 1253215061LL 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_4 1255742764LL 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_5 1255681950LL 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_6 1260924017LL 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_7 1253212875LL 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_8 1253212875LL 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_9 1253212875LL 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_10 1253212875LL 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_11 1263522094LL 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_12 1263522151LL 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_13 1263522198LL 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_14 1263522238LL 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_1 "1263522064" 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_2 "1253215061" 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_4 "1255742764" 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_5 "1255681950" 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_6 "1260924017" 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_7 "1253212875" 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_8 "1253212875" 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_9 "1253212875" 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_10 "1253212875" 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_11 "1263522094" 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_12 "1263522151" 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_13 "1263522198" 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR_14 "1263522238" 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Now we store them in Java format (ms since the Unix epoch). 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_1 1263522064000LL 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_2 1253215061000LL 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_4 1255742764000LL 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_5 1255681950000LL 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_6 1260924017000LL 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_7 1253212875000LL 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_8 1253212875000LL 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_9 1253212875000LL 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_10 1253212875000LL 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_11 1263522094000LL 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_12 1263522151000LL 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_13 1263522198000LL 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_14 1263522238000LL 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_1 "1263522064000" 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_2 "1253215061000" 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_4 "1255742764000" 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_5 "1255681950000" 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_6 "1260924017000" 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_7 "1253212875000" 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_8 "1253212875000" 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_9 "1253212875000" 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_10 "1253212875000" 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_11 "1263522094000" 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_12 "1263522151000" 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_13 "1263522198000" 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR_14 "1263522238000" 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper macros for the database dumps in the SetUpVersion*Database 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// functions. 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES(x) LEGACY_META_PROTO_TIMES_##x 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_META_PROTO_TIMES_STR(x) LEGACY_META_PROTO_TIMES_STR_##x 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LEGACY_PROTO_TIME_VALS(x) \ 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) "," \ 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LEGACY_META_PROTO_TIMES_STR(x) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES(x) META_PROTO_TIMES_##x 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_STR(x) META_PROTO_TIMES_STR_##x 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define META_PROTO_TIMES_VALS(x) \ 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) "," \ 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_STR(x) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper functions for testing. 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum ShouldIncludeDeletedItems { 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) INCLUDE_DELETED_ITEMS, 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DONT_INCLUDE_DELETED_ITEMS 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected legacy time (in proto 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// format). 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetExpectedLegacyMetaProtoTimes( 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ShouldIncludeDeletedItems include_deleted) { 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> expected_legacy_meta_proto_times; 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[1] = LEGACY_META_PROTO_TIMES(1); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (include_deleted == INCLUDE_DELETED_ITEMS) { 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[2] = LEGACY_META_PROTO_TIMES(2); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[4] = LEGACY_META_PROTO_TIMES(4); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[5] = LEGACY_META_PROTO_TIMES(5); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[6] = LEGACY_META_PROTO_TIMES(6); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[7] = LEGACY_META_PROTO_TIMES(7); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[8] = LEGACY_META_PROTO_TIMES(8); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[9] = LEGACY_META_PROTO_TIMES(9); 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[10] = LEGACY_META_PROTO_TIMES(10); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[11] = LEGACY_META_PROTO_TIMES(11); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[12] = LEGACY_META_PROTO_TIMES(12); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[13] = LEGACY_META_PROTO_TIMES(13); 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_legacy_meta_proto_times[14] = LEGACY_META_PROTO_TIMES(14); 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_legacy_meta_proto_times; 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected time (in proto format). 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetExpectedMetaProtoTimes( 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ShouldIncludeDeletedItems include_deleted) { 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> expected_meta_proto_times; 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[1] = META_PROTO_TIMES(1); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (include_deleted == INCLUDE_DELETED_ITEMS) { 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[2] = META_PROTO_TIMES(2); 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[4] = META_PROTO_TIMES(4); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[5] = META_PROTO_TIMES(5); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[6] = META_PROTO_TIMES(6); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[7] = META_PROTO_TIMES(7); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[8] = META_PROTO_TIMES(8); 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[9] = META_PROTO_TIMES(9); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[10] = META_PROTO_TIMES(10); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[11] = META_PROTO_TIMES(11); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[12] = META_PROTO_TIMES(12); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[13] = META_PROTO_TIMES(13); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times[14] = META_PROTO_TIMES(14); 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_meta_proto_times; 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns a map from metahandle -> expected time (as a Time object). 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, base::Time> GetExpectedMetaTimes() { 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, base::Time> expected_meta_times; 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::map<int64, int64>& expected_meta_proto_times = 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS); 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (std::map<int64, int64>::const_iterator it = 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_proto_times.begin(); 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) it != expected_meta_proto_times.end(); ++it) { 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_meta_times[it->first] = ProtoTimeToTime(it->second); 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return expected_meta_times; 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Extracts a map from metahandle -> time (in proto format) from the 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// given database. 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::map<int64, int64> GetMetaProtoTimes(sql::Connection *db) { 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(db->GetCachedStatement( 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SQL_FROM_HERE, 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, mtime, server_mtime, ctime, server_ctime " 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas")); 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(5, s.ColumnCount()); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, int64> meta_times; 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (s.Step()) { 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 metahandle = s.ColumnInt64(0); 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 mtime = s.ColumnInt64(1); 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 server_mtime = s.ColumnInt64(2); 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 ctime = s.ColumnInt64(3); 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 server_ctime = s.ColumnInt64(4); 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, server_mtime); 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, ctime); 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(mtime, server_ctime); 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) meta_times[metahandle] = mtime; 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(s.Succeeded()); 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return meta_times; 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)::testing::AssertionResult AssertTimesMatch(const char* t1_expr, 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* t2_expr, 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& t1, 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& t2) { 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (t1 == t2) 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ::testing::AssertionSuccess(); 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ::testing::AssertionFailure() 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << t1_expr << " and " << t2_expr 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " (internal values: " << t1.ToInternalValue() 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " and " << t2.ToInternalValue() 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << ") (proto time: " << TimeToProtoTime(t1) 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " and " << TimeToProtoTime(t2) 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << ") do not match"; 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Expect that all time fields of the given entry kernel will be the 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// given time. 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ExpectTime(const EntryKernel& entry_kernel, 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& expected_time) { 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(CTIME)); 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(SERVER_CTIME)); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(MTIME)); 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_PRED_FORMAT2(AssertTimesMatch, 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_time, entry_kernel.ref(SERVER_MTIME)); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 364868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Expect that all the entries in |entries| have times matching those in 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the given map (from metahandle to expect time). 366868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void ExpectTimes(const Directory::MetahandlesMap& handles_map, 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::map<int64, base::Time>& expected_times) { 368868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) for (Directory::MetahandlesMap::const_iterator it = handles_map.begin(); 369868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it != handles_map.end(); ++it) { 370868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int64 meta_handle = it->first; 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SCOPED_TRACE(meta_handle); 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int64, base::Time>::const_iterator it2 = 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_times.find(meta_handle); 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it2 == expected_times.end()) { 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ADD_FAILURE() << "Could not find expected time for " << meta_handle; 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 378868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ExpectTime(*it->second, it2->second); 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion67Database(sql::Connection* connection) { 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is a version 67 database dump whose contents were backformed from 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the contents of the version 68 database dump (the v68 migration was 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // actually written first). 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,server_is_bookmark_object bit default 0," 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "name varchar(255), " /* COLLATE PATHNAME, */ 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unsanitized_name varchar(255)," /* COLLATE PATHNAME, */ 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar," 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_name varchar(255)," /* COLLATE PATHNAME */ 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_non_unique_name varchar," 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob);" 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);" 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item',NULL,'Deleted Item','Deleted Item','Deleted Item'," 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/','http://www.google.com/2',NULL,'AASGASGA'," 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ASADGADGADG');" 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium',NULL,'Welcome to Chromium'," 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,'Google','Google','Google','http://www.google.com/'," 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,'The Internet','The Internet'," 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,NULL,NULL,NULL);" 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,'Google Chrome','Google Chrome'," 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL);" 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,'Bookmarks','Bookmarks','Bookmarks',NULL,NULL," 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'google_chrome_bookmarks',NULL,NULL);" 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Bookmark Bar',NULL,'Bookmark Bar','Bookmark Bar','Bookmark Bar'," 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,'bookmark_bar',NULL,NULL);" 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152," 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks',NULL,'Other Bookmarks','Other Bookmarks'," 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks',NULL,NULL,'other_bookmarks'," 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL);" 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)',NULL,'Home (The Chromium Projects)'," 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF');" 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks',NULL,'Extra Bookmarks','Extra Bookmarks'," 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN Internet Corporation for Assigned Names and Numbers'," 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL," 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'PNGAXF0AAFF','DAAFASF');" 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project',NULL," 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','http://webkit.org/'," 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/x',NULL,'PNGX','PNG2Y');" 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',68);")); 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion68Database(sql::Connection* connection) { 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This sets up an actual version 68 database dump. The IDs were 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // canonicalized to be less huge, and the favicons were overwritten 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // with random junk so that they didn't contain any unprintable 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // characters. A few server URLs were tweaked so that they'd be 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // different from the local URLs. Lastly, the custom collation on 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the server_non_unique_name column was removed. 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0," 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object bit default 0," 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob);" 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL,NULL,NULL,NULL);" 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item','http://www.google.com/'," 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG');" 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google','Google','http://www.google.com/'," 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet','The Internet',NULL,NULL,NULL,NULL,NULL);" 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome','Google Chrome',NULL,NULL,'google_chrome',NULL," 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL);" 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL," 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL);" 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152," 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL);" 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF');" 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL," 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'PNGAXF0AAFF','DAAFASF');" 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y');" 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',68);")); 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion69Database(sql::Connection* connection) { 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_bookmark_object bit default 0,server_is_dir bit default 0," 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0," 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object bit default 0," 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmark_url varchar,server_bookmark_url varchar," 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "singleton_tag varchar,bookmark_favicon blob," 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_bookmark_favicon blob, specifics blob, " 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL,NULL,NULL,NULL,NULL," 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152," 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item','http://www.google.com/'," 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG'," 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841415" 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "34741534741',X'C28810260A17687474703A2F2F7777772E676F6F676C652E636F" 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6D2F32120B4153414447414447414447');" 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium'," 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html'," 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL,NULL," 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A3168" 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F6" 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "56E2F77656C636F6D652E68746D6C1200');" 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google','Google','http://www.google.com/'," 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG',X'C28810220A166" 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "87474703A2F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'" 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464" 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "447415347');" 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6" 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1,'The Internet'," 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,NULL,NULL,NULL,X'C2881000',X'C2881000');" 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1,'Google Chrome'," 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL,NULL,NULL);" 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL," 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0,1," 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL,NULL," 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C2881000',X'C2881000');" 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'AGATWA','AFAGVASF',X'C28810220A18687474703A2F2F6465762E6368726F6D6" 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9756D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F646576" 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2E6368726F6D69756D2E6F72672F6F7468657212084146414756415346');" 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL," 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (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," 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://www.icann.com/','http://www.icann.com/',NULL,'PNGAXF0AAFF'," 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'DAAFASF',X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F1" 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "20B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963" 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "616E6E2E636F6D2F120744414146415346');" 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y'," 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C2" 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "88101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259');" 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',69);" 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion70Database(sql::Connection* connection) { 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_info (id VARCHAR(128) primary key, " 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_sync_timestamp INT, name VARCHAR(128), " 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "db_create_version VARCHAR(128), db_create_time int, " 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id bigint default -2, cache_guid VARCHAR(32));" 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_info VALUES('nick@chromium.org',694," 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Unknown',1263522064,-65542," 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');" 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO share_version VALUES('nick@chromium.org',70);" 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0," 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ctime bigint default 0,server_ctime bigint default 0," 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_position_in_parent bigint default 0," 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0,id varchar(255) default 'r'," 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "parent_id varchar(255) default 'r'," 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_parent_id varchar(255) default 'r'," 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0," 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del bit default 0,is_dir bit default 0," 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_dir bit default 0,server_is_del bit default 0," 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar," 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "specifics blob,server_specifics blob);" 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');" 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) "," 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-2097152,4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0," 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A" 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X'C2881026" 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B415341444741" 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4447414447');" 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728," 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A" 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E74" 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F" 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765" 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C636F6D652E68746D6C1200');" 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C6" 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "52E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F77777" 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72E676F6F676C652E636F6D2F12084147464447415347');" 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304," 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome'," 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google Chrome','google_chrome',NULL,NULL,NULL);" 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000'," 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0," 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881000'," 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "," 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2097152,2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576," 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F" 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636872" 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6D69756D2E6F72672F6F7468657212084146414756415346');" 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504," 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F" 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E69" 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "63616E6E2E636F6D2F120744414146415346');" 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576," 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F78120550" 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E473259');" 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion71Database(sql::Connection* connection) { 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',71);" 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT);" 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');")); 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion72Database(sql::Connection* connection) { 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',72);" 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT);" 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x');")); 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion73Database(sql::Connection* connection) { 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',73);" 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "base_version bigint default -1,server_version bigint default 0," 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_ctime bigint default 0,server_position_in_parent " 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bigint default 0,local_external_id bigint default 0,id varchar(255) " 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 'r',parent_id varchar(255) default 'r',server_parent_id " 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "varchar(255) default 'r',is_unsynced bit default 0," 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0,server_is_dir bit default 0,server_is_del bit default 0," 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "non_unique_name varchar,server_non_unique_name varchar(255)," 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_specifics blob);" 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,X'',X'');" 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4," 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47');" 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3," 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "652E68746D6C1200');" 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7," 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F12084147464447415347');" 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6," 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome',NULL,NULL,NULL);" 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0," 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1," 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2," 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000',X'C2881000');" 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8," 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9," 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C2881000');" 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10," 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers'," 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E636F6D2F120744414146415346');" 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11," 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'The WebKit Open Source Project','The WebKit Open Source Project'," 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "473259');" 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, " 11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "next_id INT default -2, cache_guid TEXT, " 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "notification_state BLOB);" 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'9010788312004066376x-6609234393368420856x',X'C2881000');")); 11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion74Database(sql::Connection* connection) { 11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',74);" 11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, last_download_timestamp" 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " INT, initial_sync_ended BOOLEAN default 0);" 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd" 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra" 11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion_state INT default 0, bookmarks_added_during_autofill_migration" 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " INT default 0, autofill_migration_time INT default 0, autofill_ent" 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ries_added_during_migration INT default 0, autofill_profiles_added_" 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "during_migration INT default 0);" 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'" 11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542" 11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);" 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,bas" 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_version bigint default -1,server_version bigint default 0,mtime b" 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "igint default 0,server_mtime bigint default 0,ctime bigint default " 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,server_ctime bigint default 0,server_position_in_parent bigint de" 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault 0,local_external_id bigint default 0,id varchar(255) default " 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'r',parent_id varchar(255) default 'r',server_parent_id varchar(255" 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ") default 'r',prev_id varchar(255) default 'r',next_id varchar(255)" 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " default 'r',is_unsynced bit default 0,is_unapplied_update bit defa" 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 0,is_del bit default 0,is_dir bit default 0,server_is_dir bit d" 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_is_del bit default 0,non_unique_name varchar,server" 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_non_unique_name varchar(255),unique_server_tag varchar,unique_clie" 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "nt_tag varchar,specifics blob,server_specifics blob);" 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'" 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "');" 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_2','s_ID" 11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted " 11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" 11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "36F6D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E67" 11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6F676C652E636F6D2F32120B4153414447414447414447');" 11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_4','s_ID" 11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','W" 11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "elcome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E6" 11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E" 12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "68746D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636" 12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');" 12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5','s_ID_" 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NU" 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841" 12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "47415347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" 12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "36F6D2F12084147464447415347');" 12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_6','s_ID" 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL" 12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,X'C2881000',X'C2881000');" 12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7','r','r" 12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrom" 12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e',NULL,NULL,NULL);" 12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8','s_ID_" 12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chr" 12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ome_bookmarks',NULL,X'C2881000',X'C2881000');" 12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9','s_ID_" 12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'" 12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'bookmark_bar',NULL,X'C2881000',X'C2881000');" 12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_10','s_I" 12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Boo" 12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "kmarks','other_bookmarks',NULL,X'C2881000',X'C2881000');" 12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID_11','s_" 12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projec" 12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ts)','Home (The Chromium Projects)',NULL,NULL,X'C28810220A186874747" 12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810" 12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120" 12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "84146414756415346');" 12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s_ID_6','" 12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bo" 12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "okmarks',NULL,NULL,X'C2881000',X'C2881000');" 12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID_13','s_" 12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Co" 12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "rporation for Assigned Names and Numbers','ICANN | Internet Corpora" 12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474" 12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C" 12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F12074441414641" 12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5346');" 12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID_14','s_" 12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Pr" 12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "oject','The WebKit Open Source Project',NULL,NULL,X'C288101A0A12687" 12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474" 12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "703A2F2F7765626B69742E6F72672F781205504E473259');" 12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion75Database(sql::Connection* connection) { 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',75);" 12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd" 12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra" 12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "tion_state INT default 0,bookmarks_added_during_autofill_migration " 12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INT default 0, autofill_migration_time INT default 0, autofill_entr" 12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ies_added_during_migration INT default 0, autofill_profiles_added_d" 12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "uring_migration INT default 0);" 12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org" 12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-655" 12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "42,'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);" 12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, " 12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended BOOLEAN default 0);" 12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,ba" 12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "se_version bigint default -1,server_version bigint default 0,mtime" 12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " bigint default 0,server_mtime bigint default 0,ctime bigint defau" 12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "lt 0,server_ctime bigint default 0,server_position_in_parent bigin" 12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t default 0,local_external_id bigint default 0,id varchar(255) def" 12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ault 'r',parent_id varchar(255) default 'r',server_parent_id varch" 12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ar(255) default 'r',prev_id varchar(255) default 'r',next_id varch" 12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ar(255) default 'r',is_unsynced bit default 0,is_unapplied_update " 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bit default 0,is_del bit default 0,is_dir bit default 0,server_is_" 12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "dir bit default 0,server_is_del bit default 0,non_unique_name varc" 12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,server_non_unique_name varchar(255),unique_server_tag varchar," 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "unique_client_tag varchar,specifics blob,server_specifics blob);" 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NUL" 12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "L,X'',X'');" 12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_" 12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Ite" 12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "m','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772" 12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A176874" 12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "74703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474" 12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447');" 12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_" 13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to " 13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A316874747" 13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F65" 13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7" 13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765" 13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6C636F6D652E68746D6C1200');" 13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5" 13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Goo" 13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "gle',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C65" 13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F777" 13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "7772E676F6F676C652E636F6D2F12084147464447415347');" 13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_" 13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The In" 13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ternet',NULL,NULL,X'C2881000',X'C2881000');" 13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7" 13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','" 13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "google_chrome',NULL,NULL,NULL);" 13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8" 13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks'" 13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9" 13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','B" 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_" 13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks" 13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','Other Bookmarks','other_bookmarks',NULL,X'C2881000',X'C28810" 13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00');" 13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID" 13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chr" 13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "omium Projects)','Home (The Chromium Projects)',NULL,NULL,X'C28" 13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F120641" 13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F6F7468657212084146414756415346');" 13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s" 13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmark" 13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "s','Extra Bookmarks',NULL,NULL,X'C2881000',X'C2881000');" 13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID" 13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN |" 13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " Internet Corporation for Assigned Names and Numbers','ICANN | " 13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Internet Corporation for Assigned Names and Numbers',NULL,NULL," 13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E474158463041414646',X'C28810200A15687474703A2F2F7777772E696361" 13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6E6E2E636F6D2F120744414146415346');" 13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID" 13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Op" 13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "en Source Project','The WebKit Open Source Project',NULL,NULL,X" 13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758'," 13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473" 13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "259');" 13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion76Database(sql::Connection* connection) { 13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',76);" 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,mtime big" 13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "int default 0,server_mtime bigint default 0,ctime bigint default 0,s" 13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "erver_ctime bigint default 0,server_position_in_parent bigint defaul" 13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 0,local_external_id bigint default 0,id varchar(255) default 'r',p" 13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob);" 13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1) 13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'')" 13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ";" 13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) 13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-2097152,4,'s_ID_2','s_ID_9" 13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted Ite" 13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "m',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6" 13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E676F6F6" 13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "76C652E636F6D2F32120B4153414447414447414447');" 13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4) 13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-3145728,3,'s_ID_4','s_ID_9" 13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','Welc" 13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E676F6" 13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746" 13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6" 13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');" 14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5) 14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,7,'s_ID_5','s_ID_9'" 14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NULL," 14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F1208414741" 14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D" 14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2F12084147464447415347');" 14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6) 14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-4194304,6,'s_ID_6','s_ID_9" 14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL,NU" 14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000');" 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7) 14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_7','r','r'," 14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrome'," 14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "NULL,NULL,NULL);" 14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8) 14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,0,'s_ID_8','s_ID_7'" 14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chrome" 14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_bookmarks',NULL,X'C2881000',X'C2881000');" 14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9) 14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,1,'s_ID_9','s_ID_8'" 14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar','b" 14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ookmark_bar',NULL,X'C2881000',X'C2881000');" 14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10) 14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",2097152,2,'s_ID_10','s_ID_" 14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Bookma" 14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "rks','other_bookmarks',NULL,X'C2881000',X'C2881000');" 14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11) 14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-1048576,8,'s_ID_11','s_ID" 14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projects)" 14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "','Home (The Chromium Projects)',NULL,NULL,X'C28810220A18687474703A2" 14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1" 14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120841464" 14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14756415346');" 14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12) 14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,9,'s_ID_12','s_ID_6','s_" 14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm" 14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arks',NULL,NULL,X'C2881000',X'C2881000');" 14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13) 14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",-917504,10,'s_ID_13','s_ID" 14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Corpo" 14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ration for Assigned Names and Numbers','ICANN | Internet Corporation" 14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474703A2" 14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C288102" 14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00A15687474703A2F2F7777772E6963616E6E2E636F6D2F120744414146415346');" 14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14) 14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1048576,11,'s_ID_14','s_ID" 14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Proje" 14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ct','The WebKit Open Source Project',NULL,NULL,X'C288101A0A126874747" 14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "03A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2" 14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7765626B69742E6F72672F781205504E473259');" 14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion77Database(sql::Connection* connection) { 14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',77);" 14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob);" 14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) 14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');" 14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447');" 14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200');" 14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," META_PROTO_TIMES_VALS(5) 14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','" 14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E" 14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E67" 15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6F6F676C652E636F6D2F12084147464447415347');" 15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," META_PROTO_TIMES_VALS(7) 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Goo" 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "gle Chrome','google_chrome',NULL,NULL,NULL);" 15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," META_PROTO_TIMES_VALS(8) 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmar" 15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," META_PROTO_TIMES_VALS(9) 15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'" 15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000');" 15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346');" 15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," META_PROTO_TIMES_VALS(12) 15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",'s_ID_12','s_ID_6','s_" 15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm" 15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arks',NULL,NULL,X'C2881000',X'C2881000');" 15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346');" 15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259');" 15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion78Database(sql::Connection* connection) { 15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',78);" 15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 15645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 16155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 16275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 16315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 16325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'" 16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "9010788312004066376x-6609234393368420856x',NULL);" 16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 16445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion79Database(sql::Connection* connection) { 16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',79);" 16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 16605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 16625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 16705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 16725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 16805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 16815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 16845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 16855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 17035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 17045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 17205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 17305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB);" 17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL);" 17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion80Database(sql::Connection* connection) { 17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 17435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 17465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',80);" 17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 17495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 17515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0,server_po" 17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sition_in_parent bigint default 0,local_external_id bigint default 0" 17535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ");" 17635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);" 17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4," 17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL);" 17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3," 17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 17745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 17755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 17765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 17775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL);" 17785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," 17795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 17805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 17815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL);" 17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6," 17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL);" 17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," 17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 17905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);" 17915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," 17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL);" 17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," 17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 17975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 17985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL);" 17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2097152,2," 18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL);" 18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8," 18045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 18055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 18075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);" 18095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,0,9," 18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 18115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL);" 18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,-917504,10," 18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 18165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 18185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 18195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL);" 18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,1048576,11," 18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL);" 18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 18285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 18315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 18325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);" 18335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )); 18345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 18355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper definitions to create the version 81 DB tables. 18395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 18405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int V80_ROW_COUNT = 13; 18425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int64 V80_POSITIONS[V80_ROW_COUNT] = { 18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 18445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -2097152, 18455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -3145728, 18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -4194304, 18485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576, 18515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2097152, 18525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1048576, 18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 18545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -917504, 18555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048576 18565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 18575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string V81_Ordinal(int n) { 18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return Int64ToNodeOrdinal(V80_POSITIONS[n]).ToInternalValue(); 18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} //namespace 18635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Unlike the earlier versions, the rows for version 81 are generated 18655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// programmatically to accurately handle unprintable characters for the 18665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// server_ordinal_in_parent field. 18675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion81Database(sql::Connection* connection) { 18685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 18695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 18705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 18715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 18725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',81);" 18735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 18745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0);" 18755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 18765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 18775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 18785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0" 18795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 18805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 18815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 18825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 18845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 18855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 18865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 18875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 18885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ", server_ordinal_in_parent blob);" 18895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 18905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 18915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 18925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 18935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 18945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 18955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 18965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 18985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 18995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);", 19005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 19015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 19025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 19035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 19045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 19055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL,?);", 19065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 19075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 19085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 19095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 19105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 19115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 19125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?);", 19135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 19145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 19155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 19165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 19175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 19185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL,?);", 19195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 19205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 19215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 19225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,?);", 19235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 19245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 19255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);", 19265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 19275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 19285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 19295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL,?);", 19305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 19315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 19325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 19335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL,?);", 19345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 19355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 19365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 19375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?);", 19385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 19395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 19405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 19415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 19425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 19435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);", 19445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 19455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 19465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 19475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL,?);", 19485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 19495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 19505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 19515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 19525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 19535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 19545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?);", 19555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 19565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 19575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 19585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 19595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 19605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL,?);" }; 19615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 19645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ord = V81_Ordinal(i); 19655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 19665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Run()); 19675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Reset(true); 19685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 19695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 19705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 19715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MigrationTest::SetUpVersion82Database(sql::Connection* connection) { 19735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->is_open()); 19745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 19755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->Execute( 19765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 19772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',82);" 19785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 19795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 19805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "default 0);" 19815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 19825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 19835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 19845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "local_external_id bigint default 0" 19855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 19865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 19875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 19885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 19895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 19905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 19915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 19925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 19935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 19945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ", server_ordinal_in_parent blob);" 19955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 19965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 19975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 19985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "blob);" 19995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 20005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 20015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 20025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 20045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 20055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);", 20065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 20075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 20085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 20095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 20105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 20115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "14447414447414447',NULL,?);", 20125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 20135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 20145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 20155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 20165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 20175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 20185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?);", 20195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 20205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 20215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 20225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 20235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 20245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ULL,?);", 20255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 20265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 20275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 20285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",NULL,?);", 20295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 20305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 20315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);", 20325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 20335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 20345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 20355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "00',X'C2881000',NULL,?);", 20365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 20375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 20385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 20395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "000',X'C2881000',NULL,?);", 20405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 20415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 20425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 20435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?);", 20445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 20455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 20465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 20475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 20485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 20495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);", 20505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 20515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 20525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 20535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "2881000',X'C2881000',NULL,?);", 20545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 20555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 20565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 20575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 20585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 20595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 20605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?);", 20615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 20625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 20635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 20645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 20655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 20665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "81205504E473259',NULL,?);" }; 20675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 20695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 20705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ord = V81_Ordinal(i); 20715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 20725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Run()); 20735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Reset(true); 20745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 20755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 20765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 20775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MigrationTest::SetUpVersion83Database(sql::Connection* connection) { 20792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 20802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 20812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 20822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 20832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',83);" 20842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 20852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 20862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "default 0);" 20872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 20882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 20892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 20902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 20912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 20922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 20932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 20942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 20952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 20962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 20972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 20982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 20992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 21002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 21012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 21022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 21032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 21042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 21052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "blob);" 21062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 21072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 21082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 21092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 21102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 21112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 21122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", 21132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 21142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 21152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 21162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 21172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 21182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "14447414447414447',NULL,?,0);", 21192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 21202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 21212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 21222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 21232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 21242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 21252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", 21262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 21272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 21282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 21292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 21302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 21312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ULL,?,0);", 21322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 21332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 21342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 21352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",NULL,?,0);", 21362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 21372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 21382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" 21392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "", 21402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 21412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 21422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 21432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "00',X'C2881000',NULL,?,0);", 21442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 21452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 21462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 21472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "000',X'C2881000',NULL,?,0);", 21482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 21492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 21502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 21512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?,0);", 21522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 21532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 21542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 21552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 21562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 21572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", 21582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 21592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 21602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 21612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2881000',X'C2881000',NULL,?,0);", 21622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 21632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 21642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 21652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 21662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 21672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 21682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", 21692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 21702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 21712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 21722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 21732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 21742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "81205504E473259',NULL,?,0);" }; 21752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 21762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 21772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 21782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string ord = V81_Ordinal(i); 21792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 21802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(s.Run()); 21812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.Reset(true); 21822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 21832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 21842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 21852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 21862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MigrationTest::SetUpVersion84Database(sql::Connection* connection) { 21872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 21882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 21892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 21902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 21912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',84);" 21922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 21932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 21942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "default 0);" 21952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 21962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 21972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 21982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 21992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 22002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 22012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 22022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 22032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 22042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 22052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 22062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 22072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 22082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 22092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 22102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'deleted_metas'" 22112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "(metahandle bigint primary key ON CONFLICT FAIL,base" 22122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 22132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 22142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 22152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 22162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 22172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 22182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 22192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 22202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 22212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 22222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 22232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 22242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 22252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 22262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 22272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 22282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "blob);" 22292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 22302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 22312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 22322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 22332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 22342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 22352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", 22362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 22372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 22382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 22392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 22402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 22412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "14447414447414447',NULL,?,0);", 22422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 22432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 22442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 22452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 22462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 22472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 22482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", 22492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 22502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 22512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 22522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 22532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 22542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ULL,?,0);", 22552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 22562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 22572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 22582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",NULL,?,0);", 22592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 22602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 22612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" 22622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "", 22632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 22642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 22652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 22662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "00',X'C2881000',NULL,?,0);", 22672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 22682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 22692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 22702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "000',X'C2881000',NULL,?,0);", 22712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 22722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 22732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 22742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?,0);", 22752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 22762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 22772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 22782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 22792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 22802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", 22812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 22822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 22832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 22842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2881000',X'C2881000',NULL,?,0);", 22852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 22862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 22872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 22882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 22892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 22902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 22912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", 22922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 22932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 22942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 22952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 22962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 22972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "81205504E473259',NULL,?,0);" }; 22982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 22992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 23002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 23012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string ord = V81_Ordinal(i); 23022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 23032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(s.Run()); 23042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.Reset(true); 23052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 23062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 23072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 23082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 23092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MigrationTest::SetUpVersion85Database(sql::Connection* connection) { 23102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 23112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 23122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 23132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 23142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',85);" 23152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, " 23162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "transaction_version BIGINT default 0);" 23172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605', 1);" 23182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 23192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 23202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 23212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 23222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 23232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 23242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 23252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 23262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 23272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 23282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 23292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 23302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 23312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 23322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'deleted_metas'" 23332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "(metahandle bigint primary key ON CONFLICT FAIL,base" 23342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_version bigint default -1,server_version bigint default 0, " 23352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "local_external_id bigint default 0" 23362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 23372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 23382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 23392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 23402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 23412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 23422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 23432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 23442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 23452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ", server_ordinal_in_parent blob, transaction_version bigint default " 23462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0);" 23472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 23482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 23492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 23502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "blob);" 23512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 23522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 23532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 23542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 23552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* insert_stmts[V80_ROW_COUNT] = { 23562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 23572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", 23582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(2,669,669,4," 23592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_" 23602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1" 23612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X" 23622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534" 23632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "14447414447414447',NULL,?,0);", 23642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(4,681,681,3," 23652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_" 23662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL" 23672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 23682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687" 23692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656" 23702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E2F77656C636F6D652E68746D6C1200',NULL,?,0);", 23712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(5,677,677,7," 23722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_" 23732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2" 23742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1" 23752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N" 23762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ULL,?,0);", 23772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6," 23782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1" 23792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'" 23802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",NULL,?,0);", 23812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0," 23822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog" 23832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);" 23842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "", 23852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0," 23862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1" 23872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810" 23882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "00',X'C2881000',NULL,?,0);", 23892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1," 23902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0" 23912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881" 23922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "000',X'C2881000',NULL,?,0);", 23932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2," 23942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r'," 23952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU" 23962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "LL,X'C2881000',X'C2881000',NULL,?,0);", 23972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8," 23982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'" 23992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj" 24002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756" 24012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636" 24022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);", 24032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9," 24042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_" 24052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C" 24062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "2881000',X'C2881000',NULL,?,0);", 24072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10," 24082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_" 24092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names " 24102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu" 24112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636" 24122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772" 24132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);", 24142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11," 24152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'" 24162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc" 24172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726" 24182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7" 24192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "81205504E473259',NULL,?,0);" }; 24202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 24212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = 0; i < V80_ROW_COUNT; i++) { 24222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Statement s(connection->GetUniqueStatement(insert_stmts[i])); 24232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string ord = V81_Ordinal(i); 24242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.BindBlob(0, ord.data(), ord.length()); 24252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(s.Run()); 24262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) s.Reset(true); 24272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 24282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 24292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 24302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2431c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void MigrationTest::SetUpVersion86Database(sql::Connection* connection) { 2432c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->is_open()); 2433c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->BeginTransaction()); 2434c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->Execute( 2435c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 2436c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'share_version' VALUES('nick@chromium.org',86);" 2437c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB," 2438c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " transaction_version BIGINT default 0);" 2439c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);" 2440c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,b" 2441c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "ase_version bigint default -1,server_version bigint default 0,local_e" 2442c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "xternal_id bigint default 0,transaction_version bigint default 0,mtim" 2443c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "e bigint default 0,server_mtime bigint default 0,ctime bigint default" 2444c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " 0,server_ctime bigint default 0,id varchar(255) default 'r',parent_i" 2445c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "d varchar(255) default 'r',server_parent_id varchar(255) default 'r'," 2446c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "is_unsynced bit default 0,is_unapplied_update bit default 0,is_del bi" 2447c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "t default 0,is_dir bit default 0,server_is_dir bit default 0,server_i" 2448c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "s_del bit default 0,non_unique_name varchar,server_non_unique_name va" 2449a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "rchar(255),unique_server_tag varchar,unique_client_tag varchar,unique" 2450a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "_bookmark_tag varchar,specifics blob,server_specifics blob,base_serve" 2451a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "r_specifics blob,server_unique_position blob,unique_position blob);" 2452c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(1,-1,0,0,0," 2453c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) META_PROTO_TIMES_VALS(1) 2454c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL," 2455a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "X'',X'',X'',NULL,X'2200',X'2200');" 2456c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(6,694,694,6,0," 2457a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The" 2458a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) " Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D653" 2459a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "273625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFF" 2460a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "FFFC000006754307476346749735A5734654D653273625336557753582F77673D',X'" 2461a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "22247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582" 2462a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "F77673D');" 2463c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(7,663,663,0,0," 2464a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome" 2465a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "','Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'2" 2466a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "200');" 2467c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(8,664,664,0,0," 2468a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Boo" 2469a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "kmarks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'" 2470a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "C2881000',NULL,X'2200',X'2200');" 2471c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(9,665,665,1,0," 2472a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Boo" 2473a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "kmark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C2881" 2474a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "000',NULL,X'2200',X'2200');" 2475c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(10,666,666,2,0," 2476a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'O" 2477a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ther Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C28810" 2478a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "00',X'C2881000',NULL,X'2200',X'2200');" 2479c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(11,683,683,8,0," 2480a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'H" 2481a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ome (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL" 2482a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ",X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C28810" 2483a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F120641474154574" 2484a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "1',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74" 2485a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "68657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D" 2486a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "623579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF00000505" 2487a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "14C784A456D623579366267644237646A7A2B62314130346E493D');" 2488c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(12,685,685,9,0," 2489a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'E" 2490a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "xtra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6" 2491a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "F616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'222" 2492a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "480000000000000007867626A704A646134635A6F616C376A49513338734B46324837" 2493a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "773D',X'222480000000000000007867626A704A646134635A6F616C376A495133387" 2494a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "34B46324837773D');" 2495c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(13,687,687,10,0," 2496a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I" 2497a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | " 2498a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142" 2499a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156" 2500a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646'," 2501a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464" 2502a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304" 2503a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650" 2504a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "4179672B304A614A514B3452384A413D');" 2505c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'metas' VALUES(14,692,692,11,0," 2506a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T" 2507a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "he WebKit Open Source Project','The WebKit Open Source Project',NULL," 2508a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2" 2509a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101" 2510a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222" 2511a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C" 2512a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315" 2513a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "9552F6E644C553D');" 2514a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA" 2515a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "IL,base_version bigint default -1,server_version bigint default 0,loc" 2516a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "al_external_id bigint default 0,transaction_version bigint default 0," 2517a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def" 2518a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare" 2519a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "nt_id varchar(255) default 'r',server_parent_id varchar(255) default " 2520a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de" 2521a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv" 2522a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam" 2523a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un" 2524a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s" 2525a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "erver_specifics blob,server_unique_position blob,unique_position blob" 2526c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ");" 2527c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birt" 2528c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "hday TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 2529c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "fault -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB" 2530c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ");" 2531c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.or" 2532c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "g','c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-13107" 2533c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "8,'9010788312004066376x-6609234393368420856x',NULL,NULL);")); 2534c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection->CommitTransaction()); 2535c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 2536c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 25375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion67To68) { 25385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 25395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 25405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion67Database(&connection); 25425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns existing before version 67. 25445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "name")); 25455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unsanitized_name")); 25465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_name")); 25475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 25495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 25505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 25525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion67To68()); 25535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(68, dbs->GetVersion()); 25545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 25555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 25565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion68To69) { 25585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 25595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 25605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion68Database(&connection); 25615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 25635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 25645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 25655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 25675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion68To69()); 25685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(69, dbs->GetVersion()); 25695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 25705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 25715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); 25735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); 25745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT non_unique_name," 25755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "is_del, is_dir, id, specifics, server_specifics FROM metas " 25765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "WHERE metahandle = 2")); 25775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 25785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("Deleted Item", s.ColumnString(0)); 25795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.ColumnBool(1)); 25805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.ColumnBool(2)); 25815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("s_ID_2", s.ColumnString(3)); 25825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_pb::EntitySpecifics specifics; 25835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics.ParseFromArray(s.ColumnBlob(4), s.ColumnByteLength(4)); 25845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(specifics.has_bookmark()); 25855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("http://www.google.com/", specifics.bookmark().url()); 25865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("AASGASGA", specifics.bookmark().favicon()); 25875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specifics.ParseFromArray(s.ColumnBlob(5), s.ColumnByteLength(5)); 25885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(specifics.has_bookmark()); 25895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("http://www.google.com/2", specifics.bookmark().url()); 25905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ("ASADGADGADG", specifics.bookmark().favicon()); 25915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.Step()); 25925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 25935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion69To70) { 25955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 25965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 25975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion69Database(&connection); 25985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "singleton_tag")); 26005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_server_tag")); 26015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_client_tag")); 26025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 26045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 26055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 26065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 26085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion69To70()); 26095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(70, dbs->GetVersion()); 26105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 26115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 26125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); 26145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); 26155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT id" 26165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " FROM metas WHERE unique_server_tag = 'google_chrome'")); 26175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 26185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("s_ID_7", s.ColumnString(0)); 26195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 26205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion70To71) { 26225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 26235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 26245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion70Database(&connection); 26255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); 26275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "initial_sync_ended")); 26285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("models")); 26295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 26315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 26325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 26335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 26355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion70To71()); 26365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(71, dbs->GetVersion()); 26375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 26385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 26395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); 26415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "initial_sync_ended")); 26425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("models")); 26435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); 26445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); 26455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "model_id")); 26465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement("SELECT model_id, " 26485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "initial_sync_ended, last_download_timestamp FROM models")); 26495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 26505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string model_id = s.ColumnString(0); 26515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("C2881000", base::HexEncode(model_id.data(), model_id.size())) 26525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Model ID is expected to be the empty BookmarkSpecifics proto."; 26535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(s.ColumnBool(1)); 26545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(694, s.ColumnInt64(2)); 26555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(s.Step()); 26565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 26575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion71To72) { 26605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 26615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 26625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion71Database(&connection); 26635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("extended_attributes")); 26655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 26675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 26685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 26695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 26715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion71To72()); 26725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(72, dbs->GetVersion()); 26735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 26745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 26755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); 26775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 26785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion72To73) { 26805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 26815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 26825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion72Database(&connection); 26835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); 26855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 26875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 26885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 26895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 26915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion72To73()); 26925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(73, dbs->GetVersion()); 26935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 26945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 26955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); 26975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 26985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion73To74) { 27005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 27015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 27025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion73Database(&connection); 27035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 27055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 27065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 27075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 27085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 27095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 27105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 27115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 27125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 27135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 27145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 27165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 27175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 27185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 27205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 27215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 27225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 27245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion73To74()); 27255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(74, dbs->GetVersion()); 27265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 27275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 27285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 27305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 27315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 27325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 27335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 27345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 27355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 27365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 27375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 27385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 27395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 27415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", 27425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 27435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 27445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion74To75) { 27465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 27475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 27485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion74Database(&connection); 27495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "progress_marker")); 27515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); 27525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 27545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 27555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 27565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 27585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion74To75()); 27595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(75, dbs->GetVersion()); 27605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 27615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 27625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); 27645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); 27655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 27665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion75To76) { 27685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 27695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 27705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion75Database(&connection); 27715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 27735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 27745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 27755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 27765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 27775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 27785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 27795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 27805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", 27815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 27825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 27845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 27855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 27865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion75To76()); 27875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(76, dbs->GetVersion()); 27885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 27895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cannot actual refresh columns due to version 76 not containing all 27905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // necessary columns. 27915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 27925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion76To77) { 27945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 27955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 27965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion76Database(&connection); 27975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 27995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 28005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedLegacyMetaProtoTimes(INCLUDE_DELETED_ITEMS), 28035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(dbs->db_.get())); 28045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Since the proto times are expected to be in a legacy format, they may not 28055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // be compatible with ProtoTimeToTime, so we don't call ExpectTimes(). 28065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion76To77()); 28085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(77, dbs->GetVersion()); 28095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS), 28115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(dbs->db_.get())); 28125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cannot actually load entries due to version 77 not having all required 28135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // columns. 28145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 28165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion77To78) { 28185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 28195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 28205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion77Database(&connection); 28215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "BASE_SERVER_SPECIFICS")); 28235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 28255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 28265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 28275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion77To78()); 28295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(78, dbs->GetVersion()); 28305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 28335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); 28355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 28365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion78To79) { 28385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kInitialNextId = -65542; 28395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 28415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 28425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion78Database(&connection); 28435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Double-check the original next_id is what we think it is. 28455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 28465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT next_id FROM share_info")); 28475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Step(); 28485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(kInitialNextId, s.ColumnInt(0)); 28495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 28515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 28525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion78To79()); 28545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(79, dbs->GetVersion()); 28555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure the next_id has been incremented. 2858868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 28592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals;; 2860868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map); 28615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo load_info; 28625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s.Clear(); 2864868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &load_info)); 28655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_LE(load_info.kernel_info.next_id, kInitialNextId - 65536); 28665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 28675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion79To80) { 28695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 28705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 28715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion79Database(&connection); 28725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 28745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 28755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion79To80()); 28775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(80, dbs->GetVersion()); 28785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 28795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure the bag_of_chips has been set. 2881868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 28822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals;; 2883868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map); 28845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo load_info; 28855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2886868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &load_info)); 28875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check that the initial value is the serialization of an empty ChipBag. 28885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_pb::ChipBag chip_bag; 28895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string serialized_chip_bag; 28905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(chip_bag.SerializeToString(&serialized_chip_bag)); 28915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(serialized_chip_bag, load_info.kernel_info.bag_of_chips); 28925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 28935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion80To81) { 28955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 28965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 28975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion80Database(&connection); 28985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 29005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, server_position_in_parent " 29015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas WHERE unique_server_tag = 'google_chrome'")); 29025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(s.Step()); 29035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(sql::COLUMN_TYPE_INTEGER, s.ColumnType(1)); 29045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion80To81()); 29085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(81, dbs->GetVersion()); 29095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test that ordinal values are preserved correctly. 29115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement new_s(connection.GetUniqueStatement( 29125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT metahandle, server_ordinal_in_parent " 29135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FROM metas WHERE unique_server_tag = 'google_chrome'")); 29145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_s.Step()); 29155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(sql::COLUMN_TYPE_BLOB, new_s.ColumnType(1)); 29165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string expected_ordinal = Int64ToNodeOrdinal(1048576).ToInternalValue(); 29185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string actual_ordinal; 29195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_s.ColumnBlobAsString(1, &actual_ordinal); 29205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(expected_ordinal, actual_ordinal); 29215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion81To82) { 29245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 29255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 29265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion81Database(&connection); 29275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "transaction_version")); 29285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion81To82()); 29335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(82, dbs->GetVersion()); 29345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 29355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); 29375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion82To83) { 29405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 29415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 29425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion82Database(&connection); 29435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "transaction_version")); 29445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion82To83()); 29485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(83, dbs->GetVersion()); 29495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); 29515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion83To84) { 29542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Connection connection; 29552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 29562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion83Database(&connection); 29572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("deleted_metas")); 29582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 29592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion83To84()); 29622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(84, dbs->GetVersion()); 29632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 29642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("deleted_metas")); 29652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 29662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 29672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion84To85) { 29682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sql::Connection connection; 29692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 29702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion84Database(&connection); 29712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); 29722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 29732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 29742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 29752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion84To85()); 29762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(85, dbs->GetVersion()); 29772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); 29782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 29792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2980c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateVersion85To86) { 2981c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sql::Connection connection; 2982c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 2983c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion85Database(&connection); 2984c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "next_id")); 2985c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "prev_id")); 2986c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); 2987c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_position")); 2988c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(connection.DoesColumnExist("metas", "server_unique_position")); 2989c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_bookmark_tag")); 2990c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2991c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 2992c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 2993c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion85To86()); 2994c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(86, dbs->GetVersion()); 2995c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_position")); 2996c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "server_unique_position")); 2997c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_bookmark_tag")); 2998c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(dbs->needs_column_refresh_); 2999a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 3000c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3001a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// The purpose of this test case is to make it easier to get a dump of the 3002a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// database so you can implement a SetUpVersionYDatabase method. Here's what 3003a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// you should do: 3004a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 3005a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 1. Say you're going from version X to version Y. Write the migration 3006a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// method MigrateVersionXToY. 3007a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 2. Update the test below to call SetUpVersionXDatabase and then 3008a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// MigrateVersionXToY. You now have a database at version Y. Let's dump it. 3009a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 3. Set a breakpoint to stop execution just after the connection is 3010a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// destroyed. Examine temp_dir_ to find the version Y database that was 3011a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// created on disk. E.g. (gdb) p temp_dir_.path().value().c_str() 3012a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 4. Dump the database using the sqlite3 command line tool: 3013a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// > .output foo_dump.sql 3014a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// > .dump 3015a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// 5. Replace the timestamp columns with META_PROTO_TIMES(x) (or 3016a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// LEGACY_META_PROTO_TIMES(x) if before Version 77). Use this dump to write 3017a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// a SetupVersionYDatabase method. 3018a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MigrateToLatestAndDump) { 3019c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 3020a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) sql::Connection connection; 3021a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(connection.Open(GetDatabasePath())); 3022a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SetUpVersion85Database(&connection); // Update this. 3023a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3024a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 3025a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3026a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(dbs->MigrateVersion85To86()); // Update this. 3027a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 3028a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(86, dbs->GetVersion()); // Update this. 3029a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 3030c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 3031a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Set breakpoint here. 3032c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 3033c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3034c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(DirectoryBackingStoreTest, DetectInvalidPosition) { 3035c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sql::Connection connection; 3036c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 3037c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion86Database(&connection); 3038c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3039c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 3040c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3041c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(86, dbs->GetVersion()); 3042c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3043c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Insert row with bad position. 3044c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sql::Statement s(connection.GetUniqueStatement( 3045c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "INSERT INTO metas " 3046c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "( id, metahandle, is_dir, ctime, mtime," 3047c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " unique_position, server_unique_position) " 3048c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "VALUES('c-invalid', 9999, 1, 0, 0, 'BAD_POS', 'BAD_POS')")); 3049c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(s.Run()); 3050c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3051c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Trying to unpack this entry should signal that the DB is corrupted. 3052868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 3053c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) JournalIndex delete_journals;; 3054868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map); 3055c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Directory::KernelLoadInfo kernel_load_info; 3056c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(FAILED_DATABASE_CORRUPT, 3057868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->Load(&handles_map, &delete_journals, &kernel_load_info)); 3058c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 3059c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 30605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_P(MigrationTest, ToCurrentVersion) { 30615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 30625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 30635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (GetParam()) { 30645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 67: 30655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion67Database(&connection); 30665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 30675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 68: 30685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion68Database(&connection); 30695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 30705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 69: 30715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion69Database(&connection); 30725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 30735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 70: 30745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion70Database(&connection); 30755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 30765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 71: 30775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion71Database(&connection); 30785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 30795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 72: 30805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion72Database(&connection); 30815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 30825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 73: 30835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion73Database(&connection); 30845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 30855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 74: 30865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion74Database(&connection); 30875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 30885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 75: 30895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion75Database(&connection); 30905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 30915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 76: 30925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion76Database(&connection); 30935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 30945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 77: 30955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion77Database(&connection); 30965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 30975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 78: 30985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion78Database(&connection); 30995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 31005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 79: 31015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion79Database(&connection); 31025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 31035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 80: 31045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion80Database(&connection); 31055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 31065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 81: 31075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion81Database(&connection); 31085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 31095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case 82: 31105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpVersion82Database(&connection); 31115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 31122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case 83: 31132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion83Database(&connection); 31142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 31152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case 84: 31162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpVersion84Database(&connection); 31172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 3118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case 85: 3119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion85Database(&connection); 3120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) break; 3121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case 86: 3122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpVersion86Database(&connection); 3123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) break; 31245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 31255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If you see this error, it may mean that you've increased the 31265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // database version number but you haven't finished adding unit tests 31275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for the database migration code. You need to need to supply a 3128a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // SetUpVersionYDatabase function with a dump of the test database 3129a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // at the new schema. See the MigrateToLatestAndDump test case. 31305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FAIL() << "Need to supply database dump for version " << GetParam(); 31315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 31325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) syncable::Directory::KernelLoadInfo dir_info; 3134868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 31352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals;; 3136868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map); 31375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 31395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 31405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3141868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(OPENED, dbs->Load(&handles_map, &delete_journals, &dir_info)); 31425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(dbs->needs_column_refresh_); 31435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); 31445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 31455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns deleted in Version 67. 31475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "name")); 31485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "unsanitized_name")); 31495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "server_name")); 31505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns added in Version 68. 31525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); 31535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); 31545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns deleted in Version 68. 31565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "is_bookmark_object")); 31575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", 31585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "server_is_bookmark_object")); 31595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_favicon")); 31605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_url")); 31615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "server_bookmark_url")); 31625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Renamed a column in Version 70 31645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "singleton_tag")); 31655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); 31665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); 31675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removed extended attributes in Version 72. 31695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); 31705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns added in Version 73. 31725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); 31735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column replaced in version 75. 31755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); 31765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); 31775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Columns removed in version 76. 31795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 31805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_state")); 31815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 31825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "bookmarks_added_during_autofill_migration")); 31835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 31845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connection.DoesColumnExist("share_info", "autofill_migration_time")); 31855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 31865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_entries_added_during_migration")); 31875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("share_info", 31885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autofill_profiles_added_during_migration")); 31895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 78. 31915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); 31925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 82. 31945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); 31955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column added in version 83. 31975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); 31985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Table added in version 84. 32002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(connection.DoesTableExist("deleted_metas")); 32012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 32022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Column removed in version 85. 32032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); 32042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3205a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Columns removed in version 86. 3206a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "next_id")); 3207a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "prev_id")); 3208a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); 3209a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 32105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check download_progress state (v75 migration) 32115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(694, 32125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 32135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .timestamp_token_for_migration()); 32145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 32155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 32165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_token()); 32175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(32904, 32185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[BOOKMARKS] 32195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .data_type_id()); 32205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE( 32215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 32225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_timestamp_token_for_migration()); 32235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 32245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 32255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .has_token()); 32265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 32275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 32285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .token().empty()); 32295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(41210, 32305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir_info.kernel_info.download_progress[THEMES] 32315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .data_type_id()); 32325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check metas 32345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetExpectedMetaProtoTimes(DONT_INCLUDE_DELETED_ITEMS), 32355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMetaProtoTimes(&connection)); 3236868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ExpectTimes(handles_map, GetExpectedMetaTimes()); 32375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3238868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap::iterator it = handles_map.find(1); 3239868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_TRUE(it != handles_map.end()); 3240868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(1, it->second->ref(META_HANDLE)); 3241868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(ID).IsRoot()); 3242a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3243a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3244a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3245a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3246a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Items 2, 4, and 5 were deleted. 3247a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it = handles_map.find(2); 3248a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(it == handles_map.end()); 3249a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it = handles_map.find(4); 3250a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(it == handles_map.end()); 3251a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it = handles_map.find(5); 3252a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(it == handles_map.end()); 32535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3254868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(6); 3255868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(6, it->second->ref(META_HANDLE)); 3256868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(IS_DIR)); 3257868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_IS_DIR)); 3258a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); 3259a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); 3260a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); 3261868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 3262a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3263a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3264a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3265a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3266868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3267868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(7); 3268868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(7, it->second->ref(META_HANDLE)); 3269868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("google_chrome", it->second->ref(UNIQUE_SERVER_TAG)); 3270868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).has_bookmark()); 3271868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3272a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't assign positions to google_chrome. 3273a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3274a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3275a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3276868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3277868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(8); 3278868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(8, it->second->ref(META_HANDLE)); 3279868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("google_chrome_bookmarks", it->second->ref(UNIQUE_SERVER_TAG)); 3280868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3281868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3282a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ(it->second->ref(ID).value(), "s_ID_8"); 3283a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't mistake the bookmark root node for a real bookmark. 3284a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3285a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3286a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3287868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3288868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(9); 3289868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(9, it->second->ref(META_HANDLE)); 3290868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("bookmark_bar", it->second->ref(UNIQUE_SERVER_TAG)); 3291868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3292868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3293a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't assign positions to bookmark_bar. 3294a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3295a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3296a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3297868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3298868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(10); 3299868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(10, it->second->ref(META_HANDLE)); 3300868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DEL)); 3301868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3302868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3303868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); 3304a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); 3305a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); 3306868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 3307868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("other_bookmarks", it->second->ref(UNIQUE_SERVER_TAG)); 3308868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Other Bookmarks", it->second->ref(NON_UNIQUE_NAME)); 3309868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Other Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME)); 3310a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ(it->second->ref(ID).value(), "s_ID_10"); 3311a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure we didn't assign positions to server-created folders, either. 3312a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3313a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3314a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3315868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3316868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(11); 3317868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(11, it->second->ref(META_HANDLE)); 3318868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DEL)); 3319868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DIR)); 3320868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3321868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 33225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("http://dev.chromium.org/", 3323a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(SPECIFICS).bookmark().url()); 3324a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("AGATWA", it->second->ref(SPECIFICS).bookmark().favicon()); 33255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("http://dev.chromium.org/other", 3326a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(SERVER_SPECIFICS).bookmark().url()); 3327a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("AFAGVASF", it->second->ref(SERVER_SPECIFICS).bookmark().favicon()); 3328868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("", it->second->ref(UNIQUE_SERVER_TAG)); 3329868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Home (The Chromium Projects)", it->second->ref(NON_UNIQUE_NAME)); 3330868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Home (The Chromium Projects)", 3331868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it->second->ref(SERVER_NON_UNIQUE_NAME)); 3332a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3333a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3334a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3335a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 3336868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3337868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(12); 3338868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(12, it->second->ref(META_HANDLE)); 3339868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(IS_DEL)); 3340868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(IS_DIR)); 3341868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Extra Bookmarks", it->second->ref(NON_UNIQUE_NAME)); 3342868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ("Extra Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME)); 3343868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); 3344868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); 3345a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); 3346a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url()); 3347a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon()); 3348868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon()); 3349a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3350a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3351a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3352a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 33535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3354868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(13); 3355868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(13, it->second->ref(META_HANDLE)); 3356a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3357a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3358a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3359a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 33605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3361868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it = handles_map.find(14); 3362868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(14, it->second->ref(META_HANDLE)); 3363a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3364a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3365a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(UniquePosition::kSuffixLength, 3366a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it->second->ref(UNIQUE_BOOKMARK_TAG).length()); 33675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3368868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(static_cast<size_t>(10), handles_map.size()); 3369a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3370a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Make sure that the syncable::Directory and the migration code agree on 3371a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // which items should or should not have unique position values. This test 3372a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // may become obsolete if the directory's definition of that function 3373a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // changes, but, until then, this is a useful test. 3374a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) for (it = handles_map.begin(); it != handles_map.end(); it++) { 3375a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SCOPED_TRACE(it->second->ref(ID)); 3376a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (it->second->ShouldMaintainPosition()) { 3377a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); 3378a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3379a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3380a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } else { 3381a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); 3382a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); 3383a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); 3384a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 3385a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 33865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 33875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTANTIATE_TEST_CASE_P(DirectoryBackingStore, MigrationTest, 3389c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) testing::Range(67, kCurrentDBVersion + 1)); 33905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, ModelTypeIds) { 33922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ModelTypeSet protocol_types = ProtocolTypes(); 33932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (ModelTypeSet::Iterator iter = protocol_types.First(); iter.Good(); 33942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) iter.Inc()) { 33955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string model_id = 33962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestDirectoryBackingStore::ModelTypeEnumToModelId(iter.Get()); 33972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(iter.Get(), 33985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDirectoryBackingStore::ModelIdToModelTypeEnum(model_id.data(), 33995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_id.size())); 34005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 34025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 34045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OnDiskDirectoryBackingStoreForTest : public OnDiskDirectoryBackingStore { 34065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 34075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDiskDirectoryBackingStoreForTest(const std::string& dir_name, 34082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& backing_filepath); 34095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~OnDiskDirectoryBackingStoreForTest(); 34105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool DidFailFirstOpenAttempt(); 34115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 34135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ReportFirstTryOpenFailure() OVERRIDE; 34145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 34165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool first_open_failed_; 34175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 34185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OnDiskDirectoryBackingStoreForTest::OnDiskDirectoryBackingStoreForTest( 34205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& dir_name, 34212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& backing_filepath) : 34225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDiskDirectoryBackingStore(dir_name, backing_filepath), 34235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_open_failed_(false) { } 34245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OnDiskDirectoryBackingStoreForTest::~OnDiskDirectoryBackingStoreForTest() { } 34265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OnDiskDirectoryBackingStoreForTest::ReportFirstTryOpenFailure() { 34285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do nothing, just like we would in release-mode. In debug mode, we DCHECK. 34295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_open_failed_ = true; 34305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 34315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool OnDiskDirectoryBackingStoreForTest::DidFailFirstOpenAttempt() { 34335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return first_open_failed_; 34345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 34355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 34375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is a whitebox test intended to exercise the code path where the on-disk 34395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// directory load code decides to delete the current directory and start fresh. 34405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 34415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is considered "minor" corruption because the database recreation is 34425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// expected to succeed. The alternative, where recreation does not succeed (ie. 34435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// due to read-only file system), is not tested here. 34445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, MinorCorruption) { 34455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<OnDiskDirectoryBackingStore> dbs( 34475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath())); 34485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 34495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Corrupt the root node. 34525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 34545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.Open(GetDatabasePath())); 34555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.Execute( 34565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "UPDATE metas SET parent_id='bogus' WHERE id = 'r';")); 34575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<OnDiskDirectoryBackingStoreForTest> dbs( 34615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new OnDiskDirectoryBackingStoreForTest(GetUsername(), 34625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDatabasePath())); 34635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 34655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(dbs->DidFailFirstOpenAttempt()); 34665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 34685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, DeleteEntries) { 34705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Connection connection; 34715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(connection.OpenInMemory()); 34725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpCurrentDatabaseAndCheckVersion(&connection); 34745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestDirectoryBackingStore> dbs( 34755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new TestDirectoryBackingStore(GetUsername(), &connection)); 3476868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap handles_map; 34772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex delete_journals; 34785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo kernel_load_info; 3479868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map); 34805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3481868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->Load(&handles_map, &delete_journals, &kernel_load_info); 3482868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) size_t initial_size = handles_map.size(); 3483868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_LT(0U, initial_size) << "Test requires handles_map to delete."; 3484868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int64 first_to_die = handles_map.begin()->second->ref(META_HANDLE); 34855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MetahandleSet to_delete; 34865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to_delete.insert(first_to_die); 34872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(dbs->DeleteEntries(TestDirectoryBackingStore::METAS_TABLE, 34882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) to_delete)); 34895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3490868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLDeleteValues(&handles_map); 3491868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->LoadEntries(&handles_map); 34925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3493868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(initial_size - 1, handles_map.size()); 34945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool delete_failed = false; 3495868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) for (Directory::MetahandlesMap::iterator it = handles_map.begin(); 3496868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it != handles_map.end(); ++it) { 3497868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (it->first == first_to_die) { 34985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete_failed = true; 34995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 35005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(delete_failed); 35035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to_delete.clear(); 3505868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) for (Directory::MetahandlesMap::iterator it = handles_map.begin(); 3506868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) it != handles_map.end(); ++it) { 3507868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) to_delete.insert(it->first); 35085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(dbs->DeleteEntries(TestDirectoryBackingStore::METAS_TABLE, 35112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) to_delete)); 35125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3513868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) STLDeleteValues(&handles_map); 3514868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dbs->LoadEntries(&handles_map); 3515868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(0U, handles_map.size()); 35165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 35175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DirectoryBackingStoreTest, GenerateCacheGUID) { 35195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& guid1 = TestDirectoryBackingStore::GenerateCacheGUID(); 35205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& guid2 = TestDirectoryBackingStore::GenerateCacheGUID(); 35215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(24U, guid1.size()); 35225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(24U, guid2.size()); 35235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // In theory this test can fail, but it won't before the universe 35245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // dies of heat death. 35255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(guid1, guid2); 35265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 35275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncable 35295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncer 3530