fix consistency checks for fulltext

This commit is contained in:
zadam 2019-03-29 22:08:04 +01:00
parent 905eb303bc
commit 8fb6edad67
3 changed files with 21 additions and 3 deletions

View File

@ -1,4 +1,4 @@
FROM node:10.15.0-alpine
FROM node:10.15.3-alpine
# Create app directory
WORKDIR /usr/src/app

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash
PKG_DIR=dist/trilium-linux-x64-server
NODE_VERSION=10.15.0
NODE_VERSION=10.15.3
rm -r $PKG_DIR
mkdir $PKG_DIR

View File

@ -359,21 +359,39 @@ async function findLogicIssues() {
logFix(`Removed link ${linkId} because target note ${targetNoteId} is also deleted.`);
});
// this doesn't try to find notes for which the fulltext doesn't exist at all - reason is the "archived" label
// which is inheritable and not easy to filter out such rows in consistency check which would mean that it would
// find some false positives.
await findAndFixIssues(`
SELECT
noteId
FROM
notes
JOIN note_contents USING(noteId)
LEFT JOIN note_fulltext USING(noteId)
JOIN note_fulltext USING(noteId)
WHERE
notes.isDeleted = 0
AND notes.isProtected = 0
AND (note_fulltext.noteId IS NULL
OR note_fulltext.titleHash != notes.hash
OR note_fulltext.contentHash != note_contents.hash)`,
async ({noteId}) => {
noteFulltextService.triggerNoteFulltextUpdate(noteId);
logFix(`Triggered fulltext update of note ${noteId} since it was out of sync.`);
});
await findAndFixIssues(`
SELECT
noteId
FROM
notes
JOIN note_fulltext USING(noteId)
WHERE
(notes.isDeleted = 1 OR notes.isProtected = 1)`,
async ({noteId}) => {
noteFulltextService.triggerNoteFulltextUpdate(noteId);
logFix(`Triggered fulltext update of note ${noteId} since it was out of sync.`);
});
}