commit 560eb37d0b1d6a354f842c2d6bf90e9d8ab889ed
parent d0a110072b8d4e0a606c70d60b3bca1449e39439
Author: Dan Stillman <dstillman@zotero.org>
Date: Mon, 11 Apr 2016 16:29:48 -0400
Schema update step to fix invalid item relations
As corrected in d0a110072
Diffstat:
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js
@@ -2245,6 +2245,17 @@ Zotero.Schema = new function(){
else if (i == 85) {
yield Zotero.DB.queryAsync("DELETE FROM version WHERE schema IN ('sync', 'syncdeletelog')");
}
+
+ else if (i == 86) {
+ let rows = yield Zotero.DB.queryAsync("SELECT ROWID AS id, * FROM itemRelations WHERE SUBSTR(object, 1, 18)='http://zotero.org/' AND NOT INSTR(object, 'item')");
+ for (let i = 0; i < rows.length; i++) {
+ // http://zotero.org/users/local/aFeGasdGSdH/8QZ36WQ3 -> http://zotero.org/users/local/aFeGasdGSdH/items/8QZ36WQ3
+ // http://zotero.org/users/12341/8QZ36WQ3 -> http://zotero.org/users/12341/items/8QZ36WQ3
+ // http://zotero.org/groups/12341/8QZ36WQ3 -> http://zotero.org/groups/12341/items/8QZ36WQ3
+ let newObject = rows[i].object.replace(/^(http:\/\/zotero.org\/(?:(?:users|groups)\/\d+|users\/local\/[^\/]+))\/([A-Z0-9]{8})$/, '$1/items/$2');
+ yield Zotero.DB.queryAsync("UPDATE itemRelations SET object=? WHERE ROWID=?", [newObject, rows[i].id]);
+ }
+ }
}
yield _updateDBVersion('userdata', toVersion);
diff --git a/resource/schema/userdata.sql b/resource/schema/userdata.sql
@@ -1,4 +1,4 @@
--- 85
+-- 86
-- Copyright (c) 2009 Center for History and New Media
-- George Mason University, Fairfax, Virginia, USA