www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 1f3cd9a1ae0ee17dbd2e361ab41188438660d8b5
parent c1c2f6b9decca4c97c5005954f36026b12766b80
Author: Dan Stillman <dstillman@zotero.org>
Date:   Fri, 24 Jan 2014 19:05:59 -0500

Don't wipe out fields from fieldsCombined during DB integrity check

Diffstat:
Mchrome/content/zotero/xpcom/schema.js | 15+++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js @@ -1157,6 +1157,13 @@ Zotero.Schema = new function(){ this.integrityCheck = function (fix) { + // Just as a sanity check, make sure combined field tables are populated, + // so that we don't try to wipe out all data + if (!Zotero.DB.valueQuery("SELECT COUNT(*) FROM fieldsCombined") + || !Zotero.DB.valueQuery("SELECT COUNT(*) FROM itemTypeFieldsCombined")) { + return false; + } + // There should be an equivalent SELECT COUNT(*) statement for every // statement run by the DB Repair Tool var queries = [ @@ -1243,8 +1250,8 @@ Zotero.Schema = new function(){ "DELETE FROM itemCreators WHERE creatorID NOT IN (SELECT creatorID FROM creators)", ], [ - "SELECT COUNT(*) FROM itemData WHERE fieldID NOT IN (SELECT fieldID FROM fields)", - "DELETE FROM itemData WHERE fieldID NOT IN (SELECT fieldID FROM fields)", + "SELECT COUNT(*) FROM itemData WHERE fieldID NOT IN (SELECT fieldID FROM fieldsCombined)", + "DELETE FROM itemData WHERE fieldID NOT IN (SELECT fieldID FROM fieldsCombined)", ], [ "SELECT COUNT(*) FROM itemData WHERE valueID NOT IN (SELECT valueID FROM itemDataValues)", @@ -1259,8 +1266,8 @@ Zotero.Schema = new function(){ ], // Fields not in type [ - "SELECT COUNT(*) FROM itemData WHERE fieldID NOT IN (SELECT fieldID FROM itemTypeFields WHERE itemTypeID=(SELECT itemTypeID FROM items WHERE itemID=itemData.itemID))", - "DELETE FROM itemData WHERE fieldID NOT IN (SELECT fieldID FROM itemTypeFields WHERE itemTypeID=(SELECT itemTypeID FROM items WHERE itemID=itemData.itemID))", + "SELECT COUNT(*) FROM itemData WHERE fieldID NOT IN (SELECT fieldID FROM itemTypeFieldsCombined WHERE itemTypeID=(SELECT itemTypeID FROM items WHERE itemID=itemData.itemID))", + "DELETE FROM itemData WHERE fieldID NOT IN (SELECT fieldID FROM itemTypeFieldsCombined WHERE itemTypeID=(SELECT itemTypeID FROM items WHERE itemID=itemData.itemID))", ], // Missing itemAttachments row [