From: Marcus Eggenberger Date: Wed, 11 Feb 2009 11:52:03 +0000 (+0100) Subject: simplifying schema evolution X-Git-Tag: 0.4.0~99 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=75aed292bb10fdba0c6f447a1c899510638a9c5d simplifying schema evolution --- diff --git a/src/core/SQL/SQLite/10/upgrade_999_version.sql b/src/core/SQL/SQLite/10/upgrade_999_version.sql deleted file mode 100644 index 0b132837..00000000 --- a/src/core/SQL/SQLite/10/upgrade_999_version.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE coreinfo -SET value = 10 -WHERE key = 'schemaversion' diff --git a/src/core/SQL/SQLite/11/upgrade_999_version.sql b/src/core/SQL/SQLite/11/upgrade_999_version.sql deleted file mode 100644 index 68ec4b8a..00000000 --- a/src/core/SQL/SQLite/11/upgrade_999_version.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE coreinfo -SET value = 11 -WHERE key = 'schemaversion' diff --git a/src/core/SQL/SQLite/12/upgrade_999_version.sql b/src/core/SQL/SQLite/12/upgrade_999_version.sql deleted file mode 100644 index ac97fef4..00000000 --- a/src/core/SQL/SQLite/12/upgrade_999_version.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE coreinfo -SET value = 12 -WHERE key = 'schemaversion' diff --git a/src/core/SQL/SQLite/13/setup_999_version.sql b/src/core/SQL/SQLite/13/setup_999_version.sql deleted file mode 100644 index 69256d12..00000000 --- a/src/core/SQL/SQLite/13/setup_999_version.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO coreinfo (key, value) VALUES ('schemaversion', 13) diff --git a/src/core/SQL/SQLite/13/upgrade_999_version.sql b/src/core/SQL/SQLite/13/upgrade_999_version.sql deleted file mode 100644 index edb5aef0..00000000 --- a/src/core/SQL/SQLite/13/upgrade_999_version.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE coreinfo -SET value = 13 -WHERE key = 'schemaversion' diff --git a/src/core/SQL/SQLite/4/upgrade_999_update_schemaversion.sql b/src/core/SQL/SQLite/4/upgrade_999_update_schemaversion.sql deleted file mode 100644 index 39ffe0a9..00000000 --- a/src/core/SQL/SQLite/4/upgrade_999_update_schemaversion.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE coreinfo -SET value='4' -WHERE key = 'schemaversion' diff --git a/src/core/SQL/SQLite/5/upgrade_999_update_schemaversion.sql b/src/core/SQL/SQLite/5/upgrade_999_update_schemaversion.sql deleted file mode 100644 index 1606e175..00000000 --- a/src/core/SQL/SQLite/5/upgrade_999_update_schemaversion.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE coreinfo -SET value='5' -WHERE key = 'schemaversion' diff --git a/src/core/SQL/SQLite/6/upgrade_999_version.sql b/src/core/SQL/SQLite/6/upgrade_999_version.sql deleted file mode 100644 index 8206626a..00000000 --- a/src/core/SQL/SQLite/6/upgrade_999_version.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE coreinfo -SET value='6' -WHERE key = 'schemaversion' diff --git a/src/core/SQL/SQLite/7/upgrade_999_version.sql b/src/core/SQL/SQLite/7/upgrade_999_version.sql deleted file mode 100644 index 4b959277..00000000 --- a/src/core/SQL/SQLite/7/upgrade_999_version.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE coreinfo -SET value = '7' -WHERE key = 'schemaversion' diff --git a/src/core/SQL/SQLite/8/upgrade_999_version.sql b/src/core/SQL/SQLite/8/upgrade_999_version.sql deleted file mode 100644 index 06d8b377..00000000 --- a/src/core/SQL/SQLite/8/upgrade_999_version.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE coreinfo -SET value = '8' -WHERE key = 'schemaversion' diff --git a/src/core/SQL/SQLite/9/upgrade_999_version.sql b/src/core/SQL/SQLite/9/upgrade_999_version.sql deleted file mode 100644 index bdeb8fed..00000000 --- a/src/core/SQL/SQLite/9/upgrade_999_version.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE coreinfo -SET value = '9' -WHERE key = 'schemaversion' diff --git a/src/core/SQL/upgradeSchema.sh b/src/core/SQL/upgradeSchema.sh index e67331d9..d4753074 100755 --- a/src/core/SQL/upgradeSchema.sh +++ b/src/core/SQL/upgradeSchema.sh @@ -24,5 +24,3 @@ fi mkdir $NEW_VERSION git add $NEW_VERSION find $CURRENT_VERSION -depth 1 \! -name "upgrade_*" \! -name ".*" -exec git mv {} $NEW_VERSION \; -cp ${CURRENT_VERSION}/upgrade_999_version.sql $NEW_VERSION -git add ${NEW_VERSION}/upgrade_999_version.sql diff --git a/src/core/abstractsqlstorage.cpp b/src/core/abstractsqlstorage.cpp index d99e32ce..c2d5e980 100644 --- a/src/core/abstractsqlstorage.cpp +++ b/src/core/abstractsqlstorage.cpp @@ -152,7 +152,7 @@ bool AbstractSqlStorage::setup(const QVariantMap &settings) { return false; } } - return true; + return setupSchemaVersion(schemaVersion()); } QStringList AbstractSqlStorage::upgradeQueries(int version) { @@ -179,7 +179,7 @@ bool AbstractSqlStorage::upgradeDb() { } } } - return true; + return updateSchemaVersion(schemaVersion()); } diff --git a/src/core/abstractsqlstorage.h b/src/core/abstractsqlstorage.h index 9d99ab0f..e3a64816 100644 --- a/src/core/abstractsqlstorage.h +++ b/src/core/abstractsqlstorage.h @@ -53,6 +53,8 @@ protected: int schemaVersion(); virtual int installedSchemaVersion() { return -1; }; + virtual bool updateSchemaVersion(int newVersion) = 0; + virtual bool setupSchemaVersion(int version) = 0; virtual QString driverName() = 0; inline virtual QString hostName() { return QString(); } diff --git a/src/core/sql.qrc b/src/core/sql.qrc index 89295dd2..4b1ef6f8 100644 --- a/src/core/sql.qrc +++ b/src/core/sql.qrc @@ -8,16 +8,13 @@ ./SQL/SQLite/10/upgrade_020_create_buffer_table.sql ./SQL/SQLite/10/upgrade_030_copy_buffer_table.sql ./SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql - ./SQL/SQLite/10/upgrade_999_version.sql ./SQL/SQLite/11/upgrade_000_create_user_setting.sql - ./SQL/SQLite/11/upgrade_999_version.sql ./SQL/SQLite/12/upgrade_000_create_identity.sql ./SQL/SQLite/12/upgrade_010_create_identity_nick.sql ./SQL/SQLite/12/upgrade_020_rename_servertable.sql ./SQL/SQLite/12/upgrade_030_create_ircserver.sql ./SQL/SQLite/12/upgrade_040_copy_ircserver.sql ./SQL/SQLite/12/upgrade_050_drop_ircserverold.sql - ./SQL/SQLite/12/upgrade_999_version.sql ./SQL/SQLite/13/delete_backlog_by_uid.sql ./SQL/SQLite/13/delete_backlog_for_buffer.sql ./SQL/SQLite/13/delete_backlog_for_network.sql @@ -77,7 +74,6 @@ ./SQL/SQLite/13/setup_120_user_setting.sql ./SQL/SQLite/13/setup_130_identity.sql ./SQL/SQLite/13/setup_140_identity_nick.sql - ./SQL/SQLite/13/setup_999_version.sql ./SQL/SQLite/13/update_backlog_bufferid.sql ./SQL/SQLite/13/update_buffer_lastseen.sql ./SQL/SQLite/13/update_buffer_name.sql @@ -92,7 +88,6 @@ ./SQL/SQLite/13/upgrade_000_create_buffer_user_idx.sql ./SQL/SQLite/13/upgrade_010_create_buffer_cname_idx.sql ./SQL/SQLite/13/upgrade_020_create_buffer_cname_idx.sql - ./SQL/SQLite/13/upgrade_999_version.sql ./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql ./SQL/SQLite/2/upgrade_010_update_schemaversion.sql ./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql @@ -103,13 +98,11 @@ ./SQL/SQLite/4/upgrade_030_drop_oldbuffertable.sql ./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql ./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql - ./SQL/SQLite/4/upgrade_999_update_schemaversion.sql ./SQL/SQLite/5/upgrade_000_rename_networktable.sql ./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql ./SQL/SQLite/5/upgrade_020_copy_networktable.sql ./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql ./SQL/SQLite/5/upgrade_180_create_ircservers.sql - ./SQL/SQLite/5/upgrade_999_update_schemaversion.sql ./SQL/SQLite/6/upgrade_000_alter_buffertable.sql ./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql ./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql @@ -127,21 +120,17 @@ ./SQL/SQLite/6/upgrade_140_update_msgtype.sql ./SQL/SQLite/6/upgrade_150_update_msgtype.sql ./SQL/SQLite/6/upgrade_160_update_msgtype.sql - ./SQL/SQLite/6/upgrade_999_version.sql ./SQL/SQLite/7/upgrade_000_rename_networktable.sql ./SQL/SQLite/7/upgrade_010_create_newnetworktable.sql ./SQL/SQLite/7/upgrade_020_copy_networktable.sql ./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql ./SQL/SQLite/7/upgrade_040_alter_buffer_add_lastseen.sql - ./SQL/SQLite/7/upgrade_999_version.sql ./SQL/SQLite/8/upgrade_000_alter_network_add_connected.sql ./SQL/SQLite/8/upgrade_010_alter_buffer_add_key.sql ./SQL/SQLite/8/upgrade_020_alter_buffer_add_joined.sql ./SQL/SQLite/8/upgrade_030_update_buffer_set_joined_for_channels.sql - ./SQL/SQLite/8/upgrade_999_version.sql ./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql ./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql ./SQL/SQLite/9/upgrade_020_create_buffer_idx.sql - ./SQL/SQLite/9/upgrade_999_version.sql diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index e1994093..17a16d90 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -64,6 +64,34 @@ int SqliteStorage::installedSchemaVersion() { return AbstractSqlStorage::installedSchemaVersion(); } +bool SqliteStorage::updateSchemaVersion(int newVersion) { + QSqlQuery query(logDb()); + query.prepare("UPDATE coreinfo SET value = :version WHERE key = 'schemaversion'"); + query.bindValue(":version", newVersion); + query.exec(); + + bool success = true; + if(query.lastError().isValid()) { + qCritical() << "SqliteStorage::updateSchemaVersion(int): Updating schema version failed!"; + success = false; + } + return success; +} + +bool SqliteStorage::setupSchemaVersion(int version) { + QSqlQuery query(logDb()); + query.prepare("INSERT INTO coreinfo (key, value) VALUES ('schemaversion', :version)"); + query.bindValue(":version", version); + query.exec(); + + bool success = true; + if(query.lastError().isValid()) { + qCritical() << "SqliteStorage::setupSchemaVersion(int): Updating schema version failed!"; + success = false; + } + return success; +} + UserId SqliteStorage::addUser(const QString &user, const QString &password) { QSqlQuery query(logDb()); query.prepare(queryString("insert_quasseluser")); diff --git a/src/core/sqlitestorage.h b/src/core/sqlitestorage.h index c1f55d8e..6df95b1b 100644 --- a/src/core/sqlitestorage.h +++ b/src/core/sqlitestorage.h @@ -94,6 +94,8 @@ protected: inline virtual QString driverName() { return "QSQLITE"; } inline virtual QString databaseName() { return backlogFile(); } virtual int installedSchemaVersion(); + virtual bool updateSchemaVersion(int newVersion); + virtual bool setupSchemaVersion(int version); bool safeExec(QSqlQuery &query, int retryCount = 0); private: