From 31bf663b03d43d0e6311c846ac4a444dddef0d12 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Sat, 4 Jul 2009 09:00:44 +0000 Subject: [PATCH] Fix a serious but hopefully rare upgrade bug since Sync Preview 1 that could cause a handful of creators to be turned into either empty strings or other creators (the latter being much less likely) For libraries that have already been upgraded, this renames orphaned item creators to "[Missing Name]" --- chrome/content/zotero/xpcom/schema.js | 58 +++++++++++---------------- userdata.sql | 2 +- 2 files changed, 24 insertions(+), 36 deletions(-) diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js index 221e706ab8..310df851cf 100644 --- a/chrome/content/zotero/xpcom/schema.js +++ b/chrome/content/zotero/xpcom/schema.js @@ -1631,61 +1631,35 @@ Zotero.Schema = new function(){ // Creator data Zotero.DB.query("CREATE TABLE creatorData (\n creatorDataID INTEGER PRIMARY KEY,\n firstName TEXT,\n lastName TEXT,\n shortName TEXT,\n fieldMode INT,\n birthYear INT\n)"); - Zotero.DB.query("INSERT INTO creatorData SELECT NULL, firstName, lastName, NULL, fieldMode, NULL FROM creators WHERE creatorID IN (SELECT creatorID FROM itemCreators)"); - var creatorsOld = Zotero.DB.query("SELECT * FROM creators"); + Zotero.DB.query("INSERT INTO creatorData SELECT DISTINCT NULL, firstName, lastName, NULL, fieldMode, NULL FROM creators WHERE creatorID IN (SELECT creatorID FROM itemCreators)"); + Zotero.DB.query("CREATE TEMPORARY TABLE itemCreatorsTemp AS SELECT * FROM itemCreators NATURAL JOIN creators"); Zotero.DB.query("DROP TABLE creators"); Zotero.DB.query("CREATE TABLE creators (\n creatorID INTEGER PRIMARY KEY,\n creatorDataID INT,\n dateModified DEFAULT CURRENT_TIMESTAMP NOT NULL,\n key TEXT NOT NULL,\n FOREIGN KEY (creatorDataID) REFERENCES creatorData(creatorDataID)\n);"); var data = Zotero.DB.query("SELECT * FROM creatorData"); if (data) { - var oldCreatorIDHash = {}; - for (var j=0, len=creatorsOld.length; j