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:
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