Remove old schemas

This commit is contained in:
Jonas Kvinge
2022-07-10 18:57:00 +02:00
parent 71263863ad
commit 6afbc71b4a
12 changed files with 4 additions and 1273 deletions

View File

@@ -55,6 +55,7 @@
const char *Database::kDatabaseFilename = "strawberry.db";
const int Database::kSchemaVersion = 15;
const int Database::kMinSupportedSchemaVersion = 10;
const char *Database::kMagicAllSongsTables = "%allsongstables";
int Database::sNextConnectionId = 1;
@@ -153,35 +154,8 @@ QSqlDatabase Database::Connect() {
UpdateDatabaseSchema(0, db);
}
if (SchemaVersion(&db) < 10) {
// Register unicode from unicode61 tokenizer to drop old FTS3 tables.
// We need it also to drop old devices later when loading devices.
// And that's done in a different thread after schemas are upgraded, so register it anyway.
#ifdef SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER
QVariant v = db.driver()->handle();
if (v.isValid() && qstrcmp(v.typeName(), "sqlite3*") == 0) {
sqlite3 *handle = *static_cast<sqlite3**>(v.data());
if (handle) {
(void)sqlite3_db_config(handle, SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER, 1, nullptr);
}
else qLog(Fatal) << "Unable to enable FTS3 tokenizer";
}
#endif
SqlQuery get_fts_tokenizer(db);
get_fts_tokenizer.prepare("SELECT fts3_tokenizer(:name)");
get_fts_tokenizer.BindValue(":name", "unicode61");
if (get_fts_tokenizer.exec() && get_fts_tokenizer.next()) {
SqlQuery set_fts_tokenizer(db);
set_fts_tokenizer.prepare("SELECT fts3_tokenizer(:name, :pointer)");
set_fts_tokenizer.BindValue(":name", "unicode");
set_fts_tokenizer.BindValue(":pointer", get_fts_tokenizer.value(0));
if (!set_fts_tokenizer.exec()) {
qLog(Warning) << "Couldn't register FTS3 tokenizer : " << set_fts_tokenizer.lastError();
}
}
else {
qLog(Warning) << "Couldn't get FTS3 tokenizer : " << get_fts_tokenizer.lastError();
}
if (SchemaVersion(&db) < kMinSupportedSchemaVersion) {
qFatal("Database schema too old.");
}
// Attach external databases