Tentative fix for bad query perf with recent sqlite versions: limit 1 seems to be culprit

This commit is contained in:
emeric
2025-07-13 00:06:10 +02:00
parent 59e85ee424
commit 6704762cc3
6 changed files with 116 additions and 15 deletions
@@ -142,9 +142,10 @@ namespace lms::scanner
params.setRelease(release->getId());
params.setImageType(db::ImageType::FrontCover);
params.setSortMethod(db::TrackEmbeddedImageSortMethod::DiscNumberThenTrackNumberThenSizeDesc);
params.setRange(db::Range{ .offset = 0, .size = 1 });
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) { artwork = db::Artwork::find(session, image->getId()); });
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) {
if (!artwork)
artwork = db::Artwork::find(session, image->getId());
});
}
if (artwork)
@@ -156,9 +157,10 @@ namespace lms::scanner
params.setRelease(release->getId());
params.setImageType(db::ImageType::Media);
params.setSortMethod(db::TrackEmbeddedImageSortMethod::DiscNumberThenTrackNumberThenSizeDesc);
params.setRange(db::Range{ .offset = 0, .size = 1 });
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) { artwork = db::Artwork::find(session, image->getId()); });
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) {
if (!artwork)
artwork = db::Artwork::find(session, image->getId());
});
}
return artwork;
@@ -65,8 +65,11 @@ namespace lms::scanner
params.setTrack(track->getId());
params.setImageType(db::ImageType::FrontCover);
params.setSortMethod(db::TrackEmbeddedImageSortMethod::SizeDesc);
params.setRange(db::Range{ .offset = 0, .size = 1 });
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) { res = db::Artwork::find(session, image->getId()); });
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) {
if (!res)
res = db::Artwork::find(session, image->getId());
});
}
if (res)
@@ -92,8 +95,11 @@ namespace lms::scanner
params.setTrack(track->getId());
params.setImageType(db::ImageType::Media);
params.setSortMethod(db::TrackEmbeddedImageSortMethod::SizeDesc);
params.setRange(db::Range{ .offset = 0, .size = 1 });
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) { res = db::Artwork::find(session, image->getId()); });
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) {
if (!res)
res = db::Artwork::find(session, image->getId());
});
}
if (res)
@@ -111,8 +117,11 @@ namespace lms::scanner
params.setDiscNumber(discNumber);
params.setImageType(db::ImageType::Media);
params.setSortMethod(db::TrackEmbeddedImageSortMethod::TrackNumberThenSizeDesc);
params.setRange(db::Range{ .offset = 0, .size = 1 });
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) { res = db::Artwork::find(session, image->getId()); });
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) {
if (!res)
res = db::Artwork::find(session, image->getId());
});
}
return res;