www

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

commit 9596cece44b46a0ac0fbe4910f6283fd29a2723e
parent 566a338c985eef37b31fcae25afb19b2ca60e220
Author: Dan Stillman <dstillman@zotero.org>
Date:   Mon,  7 Jul 2008 14:00:34 +0000

Add UNIQUE index on itemDataValues values



Diffstat:
Mchrome/content/zotero/xpcom/schema.js | 12++++++++++++
Muserdata.sql | 2+-
2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js @@ -1415,6 +1415,18 @@ Zotero.Schema = new function(){ statement.reset(); Zotero.DB.query("CREATE UNIQUE INDEX items_key ON items(key)"); + var rows = Zotero.DB.columnQuery("SELECT GROUP_CONCAT(valueID) FROM itemDataValues GROUP BY value HAVING COUNT(*) > 1"); + for each(var row in rows) { + var ids = row.split(','); + var deleteIDs = []; + for (var j=1; j<ids.length; j++) { + deleteIDs.push(parseInt(ids[j])); + } + Zotero.DB.query("UPDATE itemData SET valueID=? WHERE valueID IN (" + deleteIDs.map(function () '?').join() + ")", [parseInt(ids[0])].concat(deleteIDs)); + Zotero.DB.query("DELETE FROM itemDataValues WHERE valueID IN (" + deleteIDs.map(function () '?').join() + ")", deleteIDs); + } + Zotero.DB.query("CREATE UNIQUE INDEX itemDataValues_value ON itemDataValues(value)"); + // Collections var collections = Zotero.DB.query("SELECT * FROM collections"); Zotero.DB.query("DROP TABLE collections"); diff --git a/userdata.sql b/userdata.sql @@ -28,7 +28,7 @@ CREATE TABLE items ( CREATE TABLE itemDataValues ( valueID INTEGER PRIMARY KEY, - value + value UNIQUE ); -- Type-specific data for individual items