Index: sync/syncable/directory_backing_store.cc |
diff --git a/sync/syncable/directory_backing_store.cc b/sync/syncable/directory_backing_store.cc |
index 4f9febf3c4de725cb27aa0268bfa26947916a7f9..e9ba0acc57c0bd945b1010f3f230a288f64999cb 100644 |
--- a/sync/syncable/directory_backing_store.cc |
+++ b/sync/syncable/directory_backing_store.cc |
@@ -40,7 +40,7 @@ static const string::size_type kUpdateStatementBufferSize = 2048; |
// Increment this version whenever updating DB tables. |
extern const int32 kCurrentDBVersion; // Global visibility for our unittest. |
-const int32 kCurrentDBVersion = 82; |
+const int32 kCurrentDBVersion = 83; |
// Iterate over the fields of |entry| and bind each to |statement| for |
// updating. Returns the number of args bound. |
@@ -358,6 +358,12 @@ bool DirectoryBackingStore::InitializeTables() { |
version_on_disk = 82; |
} |
+ // Version 83 migration added transaction_version column per sync entry. |
+ if (version_on_disk == 82) { |
+ if (MigrateVersion82To83()) |
+ version_on_disk = 83; |
+ } |
+ |
// If one of the migrations requested it, drop columns that aren't current. |
// It's only safe to do this after migrating all the way to the current |
// version. |
@@ -1072,6 +1078,19 @@ bool DirectoryBackingStore::MigrateVersion81To82() { |
return true; |
} |
+bool DirectoryBackingStore::MigrateVersion82To83() { |
+ // Version 83 added transaction_version on sync node. |
+ if (!db_->Execute( |
+ "ALTER TABLE metas ADD COLUMN transaction_version BIGINT default 0")) |
+ return false; |
+ sql::Statement update(db_->GetUniqueStatement( |
+ "UPDATE metas SET transaction_version = 0")); |
+ if (!update.Run()) |
+ return false; |
+ SetVersion(83); |
+ return true; |
+} |
+ |
bool DirectoryBackingStore::CreateTables() { |
DVLOG(1) << "First run, creating tables"; |
// Create two little tables share_version and share_info |