| Key | Value |
| DropTrackArtist | DROP TABLE IF EXISTS track_artist; |
| CreateTrackArtist | CREATE TABLE track_artist (pid INTEGER NOT NULL, name TEXT, name_order INTEGER, sort_name TEXT, has_songs INTEGER DEFAULT 0, has_music_videos INTEGER DEFAULT 0, has_non_compilation_tracks INTEGER DEFAULT 0, PRIMARY KEY (pid)); |
| PopulateTrackArtist | INSERT INTO track_artist ( name, sort_name, name_order ) SELECT DISTINCT artist, sort_artist, artist_order FROM item GROUP BY artist_order; |
| AddItemTrackArtist | ALTER TABLE item ADD COLUMN track_artist_pid INTEGER DEFAULT 0; |
| LinkItemTrackArtist | UPDATE item SET track_artist_pid = (SELECT pid FROM track_artist WHERE item.artist_order = track_artist.name_order AND item.artist IS NOT NULL); |
| CreateIndexForItemTrackArtistPid | CREATE INDEX idx_item_track_artist_pid ON item (track_artist_pid); |
| CreateTempIndexForItemArtistPid | CREATE INDEX idx_temp_item_artist_pid ON item (artist_pid); |
| AddTrackArtistIsUnknown | ALTER TABLE track_artist ADD COLUMN is_unknown INTEGER DEFAULT 0; |
| CreateUnknownTrackArtist | INSERT INTO track_artist (name, name_order, sort_name, is_unknown) VALUES ('Unknown Artist', 4294967295, 'Unknown Artist', 1); |
| FixUnknownTrackArtists | UPDATE item SET track_artist_pid = (SELECT pid FROM track_artist WHERE track_artist.pid == item.track_artist_pid AND track_artist.name IS NOT NULL); |
| LinkUnknownTrackArtist | UPDATE item SET track_artist_pid = (SELECT pid FROM track_artist WHERE is_unknown == 1) WHERE track_artist_pid IS NULL; |
| UpdateArtistHasNonCompilationTracks | UPDATE track_artist SET has_non_compilation_tracks = (SELECT item.is_compilation FROM item WHERE item.track_artist_pid == track_artist.pid AND item.is_compilation = 0 LIMIT 1) IS NOT NULL; |
| AddArtistIsUnknown | ALTER TABLE artist ADD COLUMN is_unknown INTEGER DEFAULT 0; |
| CreateUnknownArtist | INSERT INTO artist (kind, artwork_status, artwork_album_pid, name, name_order, sort_name, is_unknown) VALUES (2, 0, 0, 'Unknown Artist', 4294967295, 'Unknown Artist', 1); |
| FixUnknownArtists | UPDATE item SET artist_pid = (SELECT artist_pid FROM artist WHERE artist.pid == item.artist_pid AND artist.name IS NOT NULL); |
| LinkUnknownArtist | UPDATE item SET artist_pid = (SELECT pid FROM artist WHERE is_unknown == 1) WHERE artist_pid IS NULL; |
| AddAlbumIsUnknown | ALTER TABLE album ADD COLUMN is_unknown INTEGER DEFAULT 0; |
| CreateUnknownAlbum | INSERT INTO album (name, name_order, kind, artist_pid, artwork_status, artwork_item_pid, user_rating, all_compilations, season_number, is_unknown) VALUES ('Unknown Album', 4294967295, 2, (SELECT pid FROM artist WHERE is_unknown==1), 0, 0, 0, 0, 0, 1); |
| FixUnknownAlbums | UPDATE item SET album_pid = (SELECT album_pid FROM album WHERE album.pid == item.album_pid AND album.name IS NOT NULL); |
| LinkUnknownAlbum | UPDATE item SET album_pid = (SELECT pid FROM album WHERE is_unknown == 1) WHERE album_pid IS NULL; |
| CreateIndexForItemAlbumPid | CREATE INDEX idx_item_album_pid ON item (album_pid); |
| AddGenreIsUnknown | ALTER TABLE genre_map ADD COLUMN is_unknown INTEGER DEFAULT 0; |
| CreateUnknownGenre | INSERT INTO genre_map (genre, genre_order, is_unknown) VALUES ('Unknown Genre', 4294967295, 1); |
| LinkUnknownGenre | UPDATE item SET genre_id = (SELECT id FROM genre_map WHERE is_unknown == 1) WHERE genre_id == 0; |
| AddComposerIsUnknown | ALTER TABLE composer ADD COLUMN is_unknown INTEGER DEFAULT 0; |
| CreateUnknownComposer | INSERT INTO composer (name, name_order, sort_name, is_unknown) VALUES ('Unknown Composer', 4294967295, 'Unknown Composer', 1); |
| LinkUnknownComposer | UPDATE item SET composer_pid = (SELECT pid FROM composer WHERE is_unknown == 1) WHERE composer_pid == 0 ; |
| AddAlbumArtistHasSongs | ALTER TABLE artist ADD COLUMN has_songs INTEGER DEFAULT 0; |
| UpdateAlbumArtistHasSongs | UPDATE artist SET has_songs = (SELECT item.is_song FROM item WHERE item.artist_pid == artist.pid AND item.is_song = 1 LIMIT 1) IS NOT NULL; |
| UpdateArtistHasSongs | UPDATE track_artist SET has_songs = (SELECT item.is_song FROM item WHERE item.track_artist_pid == track_artist.pid AND item.is_song = 1 LIMIT 1) IS NOT NULL; |
| AddAlbumArtistHasMusicVideos | ALTER TABLE artist ADD COLUMN has_music_videos INTEGER DEFAULT 0; |
| UpdateAlbumArtistHasMusicVideos | UPDATE artist SET has_music_videos = (SELECT item.is_music_video FROM item WHERE item.artist_pid == artist.pid AND item.is_music_video = 1 LIMIT 1) IS NOT NULL; |
| UpdateArtistHasMusicVideos | UPDATE track_artist SET has_music_videos = (SELECT item.is_music_video FROM item WHERE item.track_artist_pid == track_artist.pid AND item.is_music_video = 1 LIMIT 1) IS NOT NULL; |
| AddAlbumHasSongs | ALTER TABLE album ADD COLUMN has_songs INTEGER DEFAULT 0; |
| InsertAlbumHasSongs | UPDATE album SET has_songs = (SELECT item.is_song FROM item WHERE item.album_pid == album.pid AND item.is_song == 1 LIMIT 1) IS NOT NULL; |
| AddAlbumHasMusicVideos | ALTER TABLE album ADD COLUMN has_music_videos INTEGER DEFAULT 0; |
| InsertAlbumHasMusicVideos | UPDATE album SET has_music_videos = (SELECT item.is_music_video FROM item WHERE item.album_pid == album.pid AND item.is_music_video == 1 LIMIT 1) IS NOT NULL; |
| AddAlbumSortAlbum | ALTER TABLE album ADD COLUMN sort_order INTEGER DEFAULT 0; |
| InsertAlbumSortAlbum | UPDATE album SET sort_order = (SELECT item.album_order FROM item WHERE item.album_pid == album.pid LIMIT 1); |
| AddAlbumArtistOrder | ALTER TABLE album ADD COLUMN artist_order INTEGER DEFAULT 0; |
| InsertAlbumArtistOrder | UPDATE album SET artist_order = (SELECT name_order FROM artist WHERE album.artist_pid = artist.pid LIMIT 1); |
| AddAlbumAnyCompilation | ALTER TABLE album ADD COLUMN has_any_compilations INTEGER DEFAULT 0; |
| UpdateAlbumAnyCompilation | UPDATE album SET has_any_compilations = (SELECT item.is_compilation FROM item WHERE item.album_pid == album.pid AND item.is_compilation == 1 LIMIT 1) IS NOT NULL; |
| AddGenreHasMusic | ALTER TABLE genre_map ADD COLUMN has_music INTEGER DEFAULT 0; |
| InsertGenreHasMusic | UPDATE genre_map SET has_music = (SELECT is_song FROM item WHERE item.genre_id = genre_map.id AND item.media_kind & 33 LIMIT 1) IS NOT NULL; |
| CreateItemToContainerTempIndex | CREATE INDEX item_to_container_temp_idx ON item_to_container (item_pid, container_pid); |
| AddFallbackSortOrderForItem | ALTER TABLE item ADD COLUMN physical_order INTEGER; |
| PopulateFallbackSortOrderForItem | UPDATE item SET physical_order = (SELECT physical_order FROM item_to_container WHERE container_pid == (SELECT primary_container_pid FROM db_info LIMIT 1) AND item_pid = item.pid); |
| DropItemToContainerTempIndex | DROP INDEX item_to_container_temp_idx; |
| AddTrackArtistAlbumCount | ALTER TABLE track_artist ADD COLUMN album_count INTEGER DEFAULT 0; |
| PopulateTrackArtistAlbumCount | UPDATE track_artist SET album_count = (select COUNT(DISTINCT(album_pid)) FROM item WHERE item.track_artist_pid == track_artist.pid); |
| CreateRentalExpiredColumn | ALTER TABLE item_stats ADD COLUMN rental_expired INTEGER DEFAULT 0; |
| DropTempIndexForItemArtistPid | DROP INDEX idx_temp_item_artist_pid; |
| CreateArtistSortOrderIndex | CREATE INDEX item_artist_sort_order_idx ON item (artist_order,album_order,disc_number,track_number,sort_title,physical_order); |
| CreateItemToContainerPhysicalOrderIndex | CREATE INDEX item_to_container_physical_order_idx ON item_to_container (physical_order); |
| CreateItemToContainerContainerPIDIndex | CREATE INDEX item_to_container_container_pid_idx ON item_to_container (container_pid); |
| CreateItemTitleOrderIndex | CREATE INDEX item_title_order_idx ON item (title_order); |
| CreateItemAlbumOrderIndex | CREATE INDEX item_album_order_idx ON item (album_order,disc_number,track_number,artist_order,sort_title,physical_order); |
| CreateItemGenreIdIndex | CREATE INDEX item_genre_id_idx ON item (genre_id); |
| AddComposerHasMusic | ALTER TABLE composer ADD COLUMN has_music INTEGER DEFAULT 0; |
| InsertComposerHasMusic | UPDATE composer SET has_music = (SELECT is_song FROM item WHERE item.composer_pid = composer.pid AND item.media_kind & 33 LIMIT 1) IS NOT NULL; |
| CreateAlbumSortName | ALTER TABLE album ADD COLUMN sort_name TEXT; |
| UpdateAlbumSortName | UPDATE album SET sort_name = (SELECT DISTINCT sort_album from item WHERE album.pid = item.album_pid LIMIT 1); |
| AddItemHasLyrics | ALTER TABLE item ADD COLUMN has_lyrics INTEGER DEFAULT 0; |
| UpdateItemHasLyrics | UPDATE item SET has_lyrics = (SELECT item_pid FROM lyrics WHERE item.pid = lyrics.item_pid) IS NOT NULL; |
| AddItemDateReleased | ALTER TABLE item ADD COLUMN date_released INTEGER DEFAULT 0; |
| UpdateItemDateReleased | UPDATE item SET date_released = (SELECT COALESCE(store_info.date_released, podcast_info.date_released, 0) FROM item AS item2 LEFT OUTER JOIN store_info ON item.pid = store_info.item_pid LEFT OUTER JOIN podcast_info ON item.pid = podcast_info.item_pid WHERE item2.pid = item.pid); |
| FixUnknownTVSeries | UPDATE video_info SET series_name = (SELECT item.title FROM item WHERE video_info.item_pid = item.pid) WHERE video_info.series_name IS NULL; |
| CreateArtistsForTVSeries | INSERT INTO track_artist(name, sort_name) SELECT DISTINCT video_info.series_name, video_info.sort_series_name FROM video_info, item WHERE item.pid == video_info.item_pid AND item.is_tv_show; |
| UpdateArtistForTVSeries | UPDATE item SET artist = (SELECT series_name FROM video_info WHERE item.pid = video_info.item_pid) WHERE item.is_tv_show = 1; |
| UpdateSortArtistForTVSeries | UPDATE item SET sort_artist = (SELECT sort_series_name FROM video_info WHERE item.pid = video_info.item_pid) WHERE item.is_tv_show = 1; |
| UpdateTrackArtistPidForTVSeries | UPDATE item SET track_artist_pid = (SELECT pid FROM track_artist WHERE item.artist = track_artist.name AND track_artist.name_order IS NULL) WHERE item.is_tv_show = 1; |
| CreatePlayCountUserOriginal | ALTER TABLE item_stats ADD COLUMN play_count_user_original INTEGER DEFAULT 0; |
| CreateSkipCountUserOriginal | ALTER TABLE item_stats ADD COLUMN skip_count_user_original INTEGER DEFAULT 0; |
| UpdatePlayCountUserOriginal | UPDATE item_stats SET play_count_user_original = play_count_user; |
| UpdateSkipCountUserOriginal | UPDATE item_stats SET skip_count_user_original = skip_count_user; |
| DropTrackSize | DROP TABLE IF EXISTS track_size_calc; |
| CreateTrackSize | CREATE TABLE track_size_calc (pid INTEGER NOT NULL, kind TEXT NOT NULL, size INTEGER NOT NULL, PRIMARY KEY (pid), UNIQUE (kind)); |
| PopulateTrackSizeAudio | INSERT INTO track_size_calc ( kind, size ) SELECT 'audio' AS kind, COALESCE(SUM(location.file_size), 0) FROM location, item WHERE item.pid = location.item_pid AND item.media_kind & 3146029; |
| PopulateTrackSizeVideo | INSERT INTO track_size_calc ( kind, size ) SELECT 'video' AS kind, COALESCE(SUM(location.file_size), 0) FROM location, item WHERE item.pid = location.item_pid AND item.media_kind & 3682; |
| PopulateTrackSizeMusicVideo | INSERT INTO track_size_calc ( kind, size ) SELECT 'music_video' AS kind, COALESCE(SUM(location.file_size), 0) FROM location, item WHERE item.pid = location.item_pid AND item.media_kind & 32; |
| AddAlbumArtistCount | ALTER TABLE album ADD COLUMN artist_count_calc INTEGER DEFAULT 0 NOT NULL; |
| UpdateAlbumArtistCount | UPDATE album SET artist_count_calc = COALESCE ((SELECT COUNT(DISTINCT item.artist_pid) FROM item WHERE item.album_pid = album.pid GROUP BY item.album_pid), 0); |
| AddGenreMapArtistCount | ALTER TABLE genre_map ADD COLUMN artist_count_calc INTEGER DEFAULT 0 NOT NULL; |
| AddGenreMapAlbumCount | ALTER TABLE genre_map ADD COLUMN album_count_calc INTEGER DEFAULT 0 NOT NULL; |
| UpdateGenreMapArtistCount | UPDATE genre_map SET artist_count_calc = COALESCE((SELECT COUNT(DISTINCT item.track_artist_pid) FROM item WHERE item.media_kind & 33 AND item.genre_id = genre_map.id GROUP BY item.genre_id), 0); |
| UpdateGenreMapAlbumCount | UPDATE genre_map SET album_count_calc = COALESCE((SELECT COUNT(DISTINCT item.album_pid) FROM item WHERE item.media_kind & 33 AND item.genre_id = genre_map.id GROUP BY item.genre_id), 0); |
| UpdateDeviceUpdateLevelTo1100 | UPDATE version_info SET device_update_level = 1100; |