commit 04a730da7fd32381535180c0ad105770ab919b43
parent 7d3311679edfa2cc8c710dc90f256668323ecab6
Author: Dan Stillman <dstillman@zotero.org>
Date: Fri, 17 Nov 2017 02:55:58 -0500
More complete fix for invalid creator row error at startup
Follow-up to 7d3311679e
Diffstat:
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js
@@ -1338,7 +1338,23 @@ Zotero.Schema = new function(){
// Creators with first name can't be fieldMode 1
[
"SELECT COUNT(*) > 0 FROM creators WHERE fieldMode = 1 AND firstName != ''",
- "UPDATE creators SET fieldMode = 0 WHERE fieldMode = 1 AND firstName != ''"
+ function () {
+ return Zotero.DB.executeTransaction(function* () {
+ var rows = yield Zotero.DB.queryAsync("SELECT * FROM creators WHERE fieldMode = 1 AND firstName != ''");
+ for (let row of rows) {
+ // Find existing fieldMode 0 row and use that if available
+ let newID = yield Zotero.DB.valueQueryAsync("SELECT creatorID FROM creators WHERE firstName=? AND lastName=? AND fieldMode=0", [row.firstName, row.lastName]);
+ if (newID) {
+ yield Zotero.DB.queryAsync("UPDATE itemCreators SET creatorID=? WHERE creatorID=?", [newID, row.creatorID]);
+ yield Zotero.DB.queryAsync("DELETE FROM creators WHERE creatorID=?", row.creatorID);
+ }
+ // Otherwise convert this one to fieldMode 0
+ else {
+ yield Zotero.DB.queryAsync("UPDATE creators SET fieldMode=0 WHERE creatorID=?", row.creatorID);
+ }
+ }
+ });
+ }
]
];