mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
don't check for null content in consistency checks because it's too slow for large databases #2887
This commit is contained in:
parent
93dd9274e7
commit
339a6d7817
@ -426,6 +426,15 @@ function BackendScriptApi(currentNote, apiParams) {
|
|||||||
* @return {{syncVersion, appVersion, buildRevision, dbVersion, dataDirectory, buildDate}|*} - object representing basic info about running Trilium version
|
* @return {{syncVersion, appVersion, buildRevision, dbVersion, dataDirectory, buildDate}|*} - object representing basic info about running Trilium version
|
||||||
*/
|
*/
|
||||||
this.getAppInfo = () => appInfo
|
this.getAppInfo = () => appInfo
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This object contains "at your risk" and "no BC guarantees" objects for advanced use cases.
|
||||||
|
*
|
||||||
|
* @type {{becca: Becca}}
|
||||||
|
*/
|
||||||
|
this.__private = {
|
||||||
|
becca
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = BackendScriptApi;
|
module.exports = BackendScriptApi;
|
||||||
|
@ -367,26 +367,30 @@ class ConsistencyChecks {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.findAndFixIssues(`
|
if (sqlInit.getDbSize() < 500000) {
|
||||||
SELECT notes.noteId, notes.type, notes.mime
|
// querying for "content IS NULL" is expensive since content is not indexed. See e.g. https://github.com/zadam/trilium/issues/2887
|
||||||
FROM notes
|
|
||||||
JOIN note_contents USING (noteId)
|
|
||||||
WHERE isDeleted = 0
|
|
||||||
AND isProtected = 0
|
|
||||||
AND content IS NULL`,
|
|
||||||
({noteId, type, mime}) => {
|
|
||||||
if (this.autoFix) {
|
|
||||||
const note = becca.getNote(noteId);
|
|
||||||
const blankContent = getBlankContent(false, type, mime);
|
|
||||||
note.setContent(blankContent);
|
|
||||||
|
|
||||||
this.reloadNeeded = true;
|
this.findAndFixIssues(`
|
||||||
|
SELECT notes.noteId, notes.type, notes.mime
|
||||||
|
FROM notes
|
||||||
|
JOIN note_contents USING (noteId)
|
||||||
|
WHERE isDeleted = 0
|
||||||
|
AND isProtected = 0
|
||||||
|
AND content IS NULL`,
|
||||||
|
({noteId, type, mime}) => {
|
||||||
|
if (this.autoFix) {
|
||||||
|
const note = becca.getNote(noteId);
|
||||||
|
const blankContent = getBlankContent(false, type, mime);
|
||||||
|
note.setContent(blankContent);
|
||||||
|
|
||||||
logFix(`Note ${noteId} content was set to "${blankContent}" since it was null even though it is not deleted`);
|
this.reloadNeeded = true;
|
||||||
} else {
|
|
||||||
logError(`Note ${noteId} content is null even though it is not deleted`);
|
logFix(`Note ${noteId} content was set to "${blankContent}" since it was null even though it is not deleted`);
|
||||||
}
|
} else {
|
||||||
});
|
logError(`Note ${noteId} content is null even though it is not deleted`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
this.findAndFixIssues(`
|
this.findAndFixIssues(`
|
||||||
SELECT note_revisions.noteRevisionId
|
SELECT note_revisions.noteRevisionId
|
||||||
|
@ -178,7 +178,11 @@ dbReady.then(() => {
|
|||||||
setInterval(() => optimize(), 10 * 60 * 60 * 1000);
|
setInterval(() => optimize(), 10 * 60 * 60 * 1000);
|
||||||
});
|
});
|
||||||
|
|
||||||
log.info("DB size: " + sql.getValue("SELECT page_count * page_size / 1000 as size FROM pragma_page_count(), pragma_page_size()") + " KB");
|
function getDbSize() {
|
||||||
|
return sql.getValue("SELECT page_count * page_size / 1000 as size FROM pragma_page_count(), pragma_page_size()");
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info(`DB size: ${getDbSize()} KB`);
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
dbReady,
|
dbReady,
|
||||||
@ -186,5 +190,6 @@ module.exports = {
|
|||||||
isDbInitialized,
|
isDbInitialized,
|
||||||
createInitialDatabase,
|
createInitialDatabase,
|
||||||
createDatabaseForSync,
|
createDatabaseForSync,
|
||||||
setDbAsInitialized
|
setDbAsInitialized,
|
||||||
|
getDbSize
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user