simplifying schema evolution
authorMarcus Eggenberger <egs@quassel-irc.org>
Wed, 11 Feb 2009 11:52:03 +0000 (12:52 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Wed, 11 Feb 2009 11:52:03 +0000 (12:52 +0100)
17 files changed:
src/core/SQL/SQLite/10/upgrade_999_version.sql [deleted file]
src/core/SQL/SQLite/11/upgrade_999_version.sql [deleted file]
src/core/SQL/SQLite/12/upgrade_999_version.sql [deleted file]
src/core/SQL/SQLite/13/setup_999_version.sql [deleted file]
src/core/SQL/SQLite/13/upgrade_999_version.sql [deleted file]
src/core/SQL/SQLite/4/upgrade_999_update_schemaversion.sql [deleted file]
src/core/SQL/SQLite/5/upgrade_999_update_schemaversion.sql [deleted file]
src/core/SQL/SQLite/6/upgrade_999_version.sql [deleted file]
src/core/SQL/SQLite/7/upgrade_999_version.sql [deleted file]
src/core/SQL/SQLite/8/upgrade_999_version.sql [deleted file]
src/core/SQL/SQLite/9/upgrade_999_version.sql [deleted file]
src/core/SQL/upgradeSchema.sh
src/core/abstractsqlstorage.cpp
src/core/abstractsqlstorage.h
src/core/sql.qrc
src/core/sqlitestorage.cpp
src/core/sqlitestorage.h

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 (file)
index 0b13283..0000000
+++ /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 (file)
index 68ec4b8..0000000
+++ /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 (file)
index ac97fef..0000000
+++ /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 (file)
index 69256d1..0000000
+++ /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 (file)
index edb5aef..0000000
+++ /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 (file)
index 39ffe0a..0000000
+++ /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 (file)
index 1606e17..0000000
+++ /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 (file)
index 8206626..0000000
+++ /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 (file)
index 4b95927..0000000
+++ /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 (file)
index 06d8b37..0000000
+++ /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 (file)
index bdeb8fe..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-UPDATE coreinfo
-SET value = '9'
-WHERE key = 'schemaversion'
index e67331d..d475307 100755 (executable)
@@ -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
index d99e32c..c2d5e98 100644 (file)
@@ -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());
 }
 
 
index 9d99ab0..e3a6481 100644 (file)
@@ -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(); }
index 89295dd..4b1ef6f 100644 (file)
@@ -8,16 +8,13 @@
     <file>./SQL/SQLite/10/upgrade_020_create_buffer_table.sql</file>
     <file>./SQL/SQLite/10/upgrade_030_copy_buffer_table.sql</file>
     <file>./SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql</file>
-    <file>./SQL/SQLite/10/upgrade_999_version.sql</file>
     <file>./SQL/SQLite/11/upgrade_000_create_user_setting.sql</file>
-    <file>./SQL/SQLite/11/upgrade_999_version.sql</file>
     <file>./SQL/SQLite/12/upgrade_000_create_identity.sql</file>
     <file>./SQL/SQLite/12/upgrade_010_create_identity_nick.sql</file>
     <file>./SQL/SQLite/12/upgrade_020_rename_servertable.sql</file>
     <file>./SQL/SQLite/12/upgrade_030_create_ircserver.sql</file>
     <file>./SQL/SQLite/12/upgrade_040_copy_ircserver.sql</file>
     <file>./SQL/SQLite/12/upgrade_050_drop_ircserverold.sql</file>
-    <file>./SQL/SQLite/12/upgrade_999_version.sql</file>
     <file>./SQL/SQLite/13/delete_backlog_by_uid.sql</file>
     <file>./SQL/SQLite/13/delete_backlog_for_buffer.sql</file>
     <file>./SQL/SQLite/13/delete_backlog_for_network.sql</file>
@@ -77,7 +74,6 @@
     <file>./SQL/SQLite/13/setup_120_user_setting.sql</file>
     <file>./SQL/SQLite/13/setup_130_identity.sql</file>
     <file>./SQL/SQLite/13/setup_140_identity_nick.sql</file>
-    <file>./SQL/SQLite/13/setup_999_version.sql</file>
     <file>./SQL/SQLite/13/update_backlog_bufferid.sql</file>
     <file>./SQL/SQLite/13/update_buffer_lastseen.sql</file>
     <file>./SQL/SQLite/13/update_buffer_name.sql</file>
@@ -92,7 +88,6 @@
     <file>./SQL/SQLite/13/upgrade_000_create_buffer_user_idx.sql</file>
     <file>./SQL/SQLite/13/upgrade_010_create_buffer_cname_idx.sql</file>
     <file>./SQL/SQLite/13/upgrade_020_create_buffer_cname_idx.sql</file>
-    <file>./SQL/SQLite/13/upgrade_999_version.sql</file>
     <file>./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql</file>
     <file>./SQL/SQLite/2/upgrade_010_update_schemaversion.sql</file>
     <file>./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql</file>
     <file>./SQL/SQLite/4/upgrade_030_drop_oldbuffertable.sql</file>
     <file>./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql</file>
     <file>./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql</file>
-    <file>./SQL/SQLite/4/upgrade_999_update_schemaversion.sql</file>
     <file>./SQL/SQLite/5/upgrade_000_rename_networktable.sql</file>
     <file>./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql</file>
     <file>./SQL/SQLite/5/upgrade_020_copy_networktable.sql</file>
     <file>./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql</file>
     <file>./SQL/SQLite/5/upgrade_180_create_ircservers.sql</file>
-    <file>./SQL/SQLite/5/upgrade_999_update_schemaversion.sql</file>
     <file>./SQL/SQLite/6/upgrade_000_alter_buffertable.sql</file>
     <file>./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql</file>
     <file>./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql</file>
     <file>./SQL/SQLite/6/upgrade_140_update_msgtype.sql</file>
     <file>./SQL/SQLite/6/upgrade_150_update_msgtype.sql</file>
     <file>./SQL/SQLite/6/upgrade_160_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_999_version.sql</file>
     <file>./SQL/SQLite/7/upgrade_000_rename_networktable.sql</file>
     <file>./SQL/SQLite/7/upgrade_010_create_newnetworktable.sql</file>
     <file>./SQL/SQLite/7/upgrade_020_copy_networktable.sql</file>
     <file>./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql</file>
     <file>./SQL/SQLite/7/upgrade_040_alter_buffer_add_lastseen.sql</file>
-    <file>./SQL/SQLite/7/upgrade_999_version.sql</file>
     <file>./SQL/SQLite/8/upgrade_000_alter_network_add_connected.sql</file>
     <file>./SQL/SQLite/8/upgrade_010_alter_buffer_add_key.sql</file>
     <file>./SQL/SQLite/8/upgrade_020_alter_buffer_add_joined.sql</file>
     <file>./SQL/SQLite/8/upgrade_030_update_buffer_set_joined_for_channels.sql</file>
-    <file>./SQL/SQLite/8/upgrade_999_version.sql</file>
     <file>./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql</file>
     <file>./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql</file>
     <file>./SQL/SQLite/9/upgrade_020_create_buffer_idx.sql</file>
-    <file>./SQL/SQLite/9/upgrade_999_version.sql</file>
 </qresource>
 </RCC>
index e199409..17a16d9 100644 (file)
@@ -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"));
index c1f55d8..6df95b1 100644 (file)
@@ -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: