From eee0e22bf66408fd42aa9cc8de3ef4a8d81e2b34 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Tue, 19 May 2015 01:25:31 -0400 Subject: [PATCH] Add 'version' to sync cache primary key The sync cache will have pristine copies of the existing versions of local objects for better conflict resolution, but downloads will get saved to the sync cache first before processing, so the cache needs to be able to hold more than one version. --- chrome/content/zotero/xpcom/schema.js | 2 +- resource/schema/userdata.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js index aaf735387..be1746cc9 100644 --- a/chrome/content/zotero/xpcom/schema.js +++ b/chrome/content/zotero/xpcom/schema.js @@ -1945,7 +1945,7 @@ Zotero.Schema = new function(){ yield Zotero.DB.queryAsync("ALTER TABLE libraries ADD COLUMN version INT NOT NULL DEFAULT 0"); yield Zotero.DB.queryAsync("ALTER TABLE libraries ADD COLUMN lastsync INT NOT NULL DEFAULT 0"); - yield Zotero.DB.queryAsync("CREATE TABLE syncCache (\n libraryID INT NOT NULL,\n key TEXT NOT NULL,\n syncObjectTypeID INT NOT NULL,\n version INT NOT NULL,\n data TEXT,\n PRIMARY KEY (libraryID, key, syncObjectTypeID),\n FOREIGN KEY (libraryID) REFERENCES libraries(libraryID) ON DELETE CASCADE,\n FOREIGN KEY (syncObjectTypeID) REFERENCES syncObjectTypes(syncObjectTypeID)\n)"); + yield Zotero.DB.queryAsync("CREATE TABLE syncCache (\n libraryID INT NOT NULL,\n key TEXT NOT NULL,\n syncObjectTypeID INT NOT NULL,\n version INT NOT NULL,\n data TEXT,\n PRIMARY KEY (libraryID, key, syncObjectTypeID, version),\n FOREIGN KEY (libraryID) REFERENCES libraries(libraryID) ON DELETE CASCADE,\n FOREIGN KEY (syncObjectTypeID) REFERENCES syncObjectTypes(syncObjectTypeID)\n)"); yield Zotero.DB.queryAsync("DROP TABLE translatorCache"); yield Zotero.DB.queryAsync("CREATE TABLE translatorCache (\n fileName TEXT PRIMARY KEY,\n metadataJSON TEXT,\n lastModifiedTime INT\n);"); diff --git a/resource/schema/userdata.sql b/resource/schema/userdata.sql index 1cd70833a..651abaf18 100644 --- a/resource/schema/userdata.sql +++ b/resource/schema/userdata.sql @@ -297,7 +297,7 @@ CREATE TABLE syncCache ( syncObjectTypeID INT NOT NULL, version INT NOT NULL, data TEXT, - PRIMARY KEY (libraryID, key, syncObjectTypeID), + PRIMARY KEY (libraryID, key, syncObjectTypeID, version), FOREIGN KEY (libraryID) REFERENCES libraries(libraryID) ON DELETE CASCADE, FOREIGN KEY (syncObjectTypeID) REFERENCES syncObjectTypes(syncObjectTypeID) );