Recompute all songalbumids at startup

Due to the two Murmur64 implementations for 64 and 32bit machines, the
hash is not compatible when moving the SQLite DB between 32/64 bit hosts.

So we'll recompute all the songalbumids at startup, just in case.
This commit is contained in:
Julien BLACHE 2010-03-06 17:39:35 +01:00
parent 0e9a8674d9
commit 88dde32fc7
3 changed files with 27 additions and 0 deletions

View File

@ -1118,6 +1118,25 @@ db_files_get_count(void)
return db_get_count("SELECT COUNT(*) FROM files WHERE disabled = 0;");
}
void
db_files_update_songalbumid(void)
{
#define Q_SONGALBUMID "UPDATE files SET songalbumid = daap_songalbumid(album_artist, album);"
char *errmsg;
int ret;
DPRINTF(E_DBG, L_DB, "Running query '%s'\n", Q_SONGALBUMID);
errmsg = NULL;
ret = sqlite3_exec(hdl, Q_SONGALBUMID, NULL, NULL, &errmsg);
if (ret != SQLITE_OK)
DPRINTF(E_LOG, L_DB, "Error updating songalbumid: %s\n", errmsg);
sqlite3_free(errmsg);
#undef Q_SONGALBUMID
}
void
db_file_inc_playcount(int id)
{

View File

@ -289,6 +289,9 @@ db_query_fetch_string(struct query_params *qp, char **string);
int
db_files_get_count(void);
void
db_files_update_songalbumid(void);
void
db_file_inc_playcount(int id);

View File

@ -697,6 +697,11 @@ filescanner(void *arg)
pthread_exit(NULL);
}
/* Recompute all songalbumids, in case the SQLite DB got transferred
* to a different host; the hash is not portable.
*/
db_files_update_songalbumid();
bulk_scan();
if (!scan_exit)