-
-
Notifications
You must be signed in to change notification settings - Fork 431
Labels
Priority: CriticalAn issue that requires immediate attentionAn issue that requires immediate attentionTagStudio: LibraryRelating to the TagStudio library systemRelating to the TagStudio library systemTagStudio: SearchThe TagStudio search engineThe TagStudio search engineType: BugSomething isn't working as intendedSomething isn't working as intended
Description
Checklist
- I am using an up-to-date version.
- I have read the documentation.
- I have searched existing issues.
TagStudio Version
Library 103 with commit 88d0b47
Operating System & Version
NixOS 25.05
Description
When loading my library with 146000+ entries it never appears to finish loading.
I can see that it tries to execute:
SELECT DISTINCT entries.id
FROM entries
WHERE NOT (EXISTS (SELECT 1
FROM tags, tag_entries
WHERE entries.id = tag_entries.entry_id AND tags.id = tag_entries.tag_id AND tags.is_hidden))
ORDER BY entries.id DESCBut the application becomes unresponsive and after leaving it for 20+ min nothing appears to have changed.
I executed the same SQL in sqlitebrowser and it also never finished.
I tried executing:
SELECT DISTINCT entries.id
FROM entries
WHERE NOT
(entries.id IN
(SELECT tag_entries.entry_id
FROM tags JOIN tag_entries
WHERE tags.is_hidden AND tags.id = tag_entries.tag_id))
ORDER BY entries.id DESCInstead, and the response was instant, but I'm not sure how to translate this to alchemy code
Expected Behavior
Loading the library should at most take a few minutes.
Steps to Reproduce
- Create large library
- Open large library
Logs
2025-12-02 00:35:17 [info ] [FFmpeg] Using FFprobe location: ffprobe (Found)
2025-12-02 00:35:17 [info ] [FFmpeg] Using FFmpeg location: ffmpeg (Found)
2025-12-02 00:35:17 [info ] [ResourceManager] Resources Registered: count=37
2025-12-02 00:35:17 [info ] [Settings] Global Settings File Path not specified, using default
2025-12-02 00:35:17 [info ] [Settings] Reading Global Settings File path=PosixPath('/home/racerand/.config/TagStudio/settings.toml')
2025-12-02 00:35:17 [info ] [Cache] Cache File not specified, using default one filename=/home/racerand/.config/TagStudio/TagStudio.ini
qt.multimedia.ffmpeg: Using Qt multimedia with FFmpeg version 8.0 GPL version 3 or later
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
2025-12-02 00:35:19 [error ] Path does not exist. open_path=None
2025-12-02 00:35:42 [info ] [Library] Opening SQLite Library connection_string=sqlite:////run/media/racerand/4bd980f1-0194-4683-9164-d1aaa53047a4/Fansly/.TagStudio/ts_library.sqlite library_dir=PosixPath('/run/media/racerand/4bd980f1-0194-4683-9164-d1aaa53047a4/Fansly')
2025-12-02 00:35:42 [info ] [Library] DB_VERSION: 103
2025-12-02 00:35:42 [info ] [Library] Creating DB tables...
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.TITLE: DefaultField(id=0, name='Title', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=True)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.AUTHOR: DefaultField(id=1, name='Author', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.ARTIST: DefaultField(id=2, name='Artist', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.URL: DefaultField(id=3, name='URL', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.DESCRIPTION: DefaultField(id=4, name='Description', type=<FieldTypeEnum.TEXT_BOX: 'Text Box'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.NOTES: DefaultField(id=5, name='Notes', type=<FieldTypeEnum.TEXT_BOX: 'Text Box'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.COLLATION: DefaultField(id=9, name='Collation', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.DATE: DefaultField(id=10, name='Date', type=<FieldTypeEnum.DATETIME: 'Datetime'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.DATE_CREATED: DefaultField(id=11, name='Date Created', type=<FieldTypeEnum.DATETIME: 'Datetime'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.DATE_MODIFIED: DefaultField(id=12, name='Date Modified', type=<FieldTypeEnum.DATETIME: 'Datetime'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.DATE_TAKEN: DefaultField(id=13, name='Date Taken', type=<FieldTypeEnum.DATETIME: 'Datetime'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.DATE_PUBLISHED: DefaultField(id=14, name='Date Published', type=<FieldTypeEnum.DATETIME: 'Datetime'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.BOOK: DefaultField(id=17, name='Book', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.COMIC: DefaultField(id=18, name='Comic', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.SERIES: DefaultField(id=19, name='Series', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.MANGA: DefaultField(id=20, name='Manga', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.SOURCE: DefaultField(id=21, name='Source', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.DATE_UPLOADED: DefaultField(id=22, name='Date Uploaded', type=<FieldTypeEnum.DATETIME: 'Datetime'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.DATE_RELEASED: DefaultField(id=23, name='Date Released', type=<FieldTypeEnum.DATETIME: 'Datetime'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.VOLUME: DefaultField(id=24, name='Volume', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.ANTHOLOGY: DefaultField(id=25, name='Anthology', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.MAGAZINE: DefaultField(id=26, name='Magazine', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.PUBLISHER: DefaultField(id=27, name='Publisher', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.GUEST_ARTIST: DefaultField(id=28, name='Guest Artist', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.COMPOSER: DefaultField(id=29, name='Composer', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:42 [debug ] ValueType already exists field=<FieldID.COMMENTS: DefaultField(id=30, name='Comments', type=<FieldTypeEnum.TEXT_LINE: 'Text Line'>, is_default=False)>
2025-12-02 00:35:43 [info ] [Config] Thumbnail Cache Size: 1.02 GB
2025-12-02 00:35:43 [info ] [Ignore] Processing the .ts_ignore file... last_mtime=None library=PosixPath('/run/media/racerand/4bd980f1-0194-4683-9164-d1aaa53047a4/Fansly') new_mtime=1763158157.844917
2025-12-02 00:35:43 [info ] [Ignore] glob_patterns=[<Censored>]
2025-12-02 00:35:43 [warning ] [PanelModal] add_callback not implemented for IgnoreModal
2025-12-02 00:35:43 [info ] [Ignore] No updates to the .ts_ignore detected last_mtime=1763158157.844917 library=PosixPath('<PATH_TO_LIBRARY') new_mtime=1763158157.844917
2025-12-02 00:35:43 [info ] searching library filter=BrowsingState(page_index=0, sorting_mode=<SortingModeEnum.DATE_ADDED: 'file.date_added'>, ascending=False, random_seed=0, show_hidden_entries=False, query=None) query_full='SELECT DISTINCT entries.id \nFROM entries \nWHERE NOT (EXISTS (SELECT 1 \nFROM tags, tag_entries \nWHERE entries.id = tag_entries.entry_id AND tags.id = tag_entries.tag_id AND tags.is_hidden)) ORDER BY entries.id DESC'
Metadata
Metadata
Assignees
Labels
Priority: CriticalAn issue that requires immediate attentionAn issue that requires immediate attentionTagStudio: LibraryRelating to the TagStudio library systemRelating to the TagStudio library systemTagStudio: SearchThe TagStudio search engineThe TagStudio search engineType: BugSomething isn't working as intendedSomething isn't working as intended