Use COUNT(*) > 1 for DB integrity check queries
This commit is contained in:
parent
cf125435fb
commit
caf61bec2f
1 changed files with 12 additions and 12 deletions
|
@ -1193,55 +1193,55 @@ Zotero.Schema = new function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// For non-foreign key checks, there should be an equivalent entry for every statement
|
// Non-foreign key checks
|
||||||
// run by the DB Repair Tool. Repair entry (second position) can be either a string or
|
//
|
||||||
// an array with multiple statements.
|
// Repair entry (second position) can be either a string or an array with multiple statements.
|
||||||
var queries = [
|
var queries = [
|
||||||
// Can't be a FK with itemTypesCombined
|
// Can't be a FK with itemTypesCombined
|
||||||
[
|
[
|
||||||
"SELECT COUNT(*) FROM items WHERE itemTypeID IS NULL",
|
"SELECT COUNT(*) > 1 FROM items WHERE itemTypeID IS NULL",
|
||||||
"DELETE FROM items WHERE itemTypeID IS NULL",
|
"DELETE FROM items WHERE itemTypeID IS NULL",
|
||||||
],
|
],
|
||||||
// Attachments row with itemTypeID != 14
|
// Attachments row with itemTypeID != 14
|
||||||
[
|
[
|
||||||
"SELECT COUNT(*) FROM itemAttachments JOIN items USING (itemID) WHERE itemTypeID != 14",
|
"SELECT COUNT(*) > 1 FROM itemAttachments JOIN items USING (itemID) WHERE itemTypeID != 14",
|
||||||
"UPDATE items SET itemTypeID=14, clientDateModified=CURRENT_TIMESTAMP WHERE itemTypeID != 14 AND itemID IN (SELECT itemID FROM itemAttachments)",
|
"UPDATE items SET itemTypeID=14, clientDateModified=CURRENT_TIMESTAMP WHERE itemTypeID != 14 AND itemID IN (SELECT itemID FROM itemAttachments)",
|
||||||
],
|
],
|
||||||
// Fields not in type
|
// Fields not in type
|
||||||
[
|
[
|
||||||
"SELECT COUNT(*) FROM itemData WHERE fieldID NOT IN (SELECT fieldID FROM itemTypeFieldsCombined WHERE itemTypeID=(SELECT itemTypeID FROM items WHERE itemID=itemData.itemID))",
|
"SELECT COUNT(*) > 1 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))",
|
"DELETE FROM itemData WHERE fieldID NOT IN (SELECT fieldID FROM itemTypeFieldsCombined WHERE itemTypeID=(SELECT itemTypeID FROM items WHERE itemID=itemData.itemID))",
|
||||||
],
|
],
|
||||||
// Missing itemAttachments row
|
// Missing itemAttachments row
|
||||||
[
|
[
|
||||||
"SELECT COUNT(*) FROM items WHERE itemTypeID=14 AND itemID NOT IN (SELECT itemID FROM itemAttachments)",
|
"SELECT COUNT(*) > 1 FROM items WHERE itemTypeID=14 AND itemID NOT IN (SELECT itemID FROM itemAttachments)",
|
||||||
"INSERT INTO itemAttachments (itemID, linkMode) SELECT itemID, 0 FROM items WHERE itemTypeID=14 AND itemID NOT IN (SELECT itemID FROM itemAttachments)",
|
"INSERT INTO itemAttachments (itemID, linkMode) SELECT itemID, 0 FROM items WHERE itemTypeID=14 AND itemID NOT IN (SELECT itemID FROM itemAttachments)",
|
||||||
],
|
],
|
||||||
// Note/child parents
|
// Note/child parents
|
||||||
[
|
[
|
||||||
"SELECT COUNT(*) FROM itemAttachments WHERE parentItemID IN (SELECT itemID FROM items WHERE itemTypeID IN (1,14))",
|
"SELECT COUNT(*) > 1 FROM itemAttachments WHERE parentItemID IN (SELECT itemID FROM items WHERE itemTypeID IN (1,14))",
|
||||||
"UPDATE itemAttachments SET parentItemID=NULL WHERE parentItemID IN (SELECT itemID FROM items WHERE itemTypeID IN (1,14))",
|
"UPDATE itemAttachments SET parentItemID=NULL WHERE parentItemID IN (SELECT itemID FROM items WHERE itemTypeID IN (1,14))",
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"SELECT COUNT(*) FROM itemNotes WHERE parentItemID IN (SELECT itemID FROM items WHERE itemTypeID IN (1,14))",
|
"SELECT COUNT(*) > 1 FROM itemNotes WHERE parentItemID IN (SELECT itemID FROM items WHERE itemTypeID IN (1,14))",
|
||||||
"UPDATE itemNotes SET parentItemID=NULL WHERE parentItemID IN (SELECT itemID FROM items WHERE itemTypeID IN (1,14))",
|
"UPDATE itemNotes SET parentItemID=NULL WHERE parentItemID IN (SELECT itemID FROM items WHERE itemTypeID IN (1,14))",
|
||||||
],
|
],
|
||||||
|
|
||||||
// Delete empty creators
|
// Delete empty creators
|
||||||
// This may cause itemCreator gaps, but that's better than empty creators
|
// This may cause itemCreator gaps, but that's better than empty creators
|
||||||
[
|
[
|
||||||
"SELECT COUNT(*) FROM creators WHERE firstName='' AND lastName=''",
|
"SELECT COUNT(*) > 1 FROM creators WHERE firstName='' AND lastName=''",
|
||||||
"DELETE FROM creators WHERE firstName='' AND lastName=''"
|
"DELETE FROM creators WHERE firstName='' AND lastName=''"
|
||||||
],
|
],
|
||||||
|
|
||||||
// Non-attachment items in the full-text index
|
// Non-attachment items in the full-text index
|
||||||
[
|
[
|
||||||
"SELECT COUNT(*) FROM fulltextItemWords WHERE itemID NOT IN (SELECT itemID FROM items WHERE itemTypeID=14)",
|
"SELECT COUNT(*) > 1 FROM fulltextItemWords WHERE itemID NOT IN (SELECT itemID FROM items WHERE itemTypeID=14)",
|
||||||
"DELETE FROM fulltextItemWords WHERE itemID NOT IN (SELECT itemID FROM items WHERE itemTypeID=14)"
|
"DELETE FROM fulltextItemWords WHERE itemID NOT IN (SELECT itemID FROM items WHERE itemTypeID=14)"
|
||||||
],
|
],
|
||||||
// Full-text items must be attachments
|
// Full-text items must be attachments
|
||||||
[
|
[
|
||||||
"SELECT COUNT(*) FROM fulltextItems WHERE itemID NOT IN (SELECT itemID FROM items WHERE itemTypeID=14)",
|
"SELECT COUNT(*) > 1 FROM fulltextItems WHERE itemID NOT IN (SELECT itemID FROM items WHERE itemTypeID=14)",
|
||||||
"DELETE FROM fulltextItems WHERE itemID NOT IN (SELECT itemID FROM items WHERE itemTypeID=14)"
|
"DELETE FROM fulltextItems WHERE itemID NOT IN (SELECT itemID FROM items WHERE itemTypeID=14)"
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue