From: Patrick Uiterwijk Date: Thu, 3 Sep 2015 19:36:20 +0000 (+0200) Subject: Fix database upgrades from partially initialized schema 1 databases X-Git-Tag: v1.1.0~27 X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=commitdiff_plain;h=9ced265c41e1989f5df4317969c48b2f5a5d5101 Fix database upgrades from partially initialized schema 1 databases Signed-off-by: Patrick Uiterwijk Reviewed-by: Rob Crittenden --- diff --git a/ipsilon/util/data.py b/ipsilon/util/data.py index 835924d..fcf058d 100644 --- a/ipsilon/util/data.py +++ b/ipsilon/util/data.py @@ -342,7 +342,8 @@ class Store(Log): fallback_version = self.load_options('dbinfo').get('scheme', {}) if 'version' in fallback_version: - return int(fallback_version['version']) + # Explanation for this is in def upgrade_database(self) + return -1 else: return None @@ -388,6 +389,14 @@ class Store(Log): # Just initialize a new schema self._initialize_schema() self._store_new_schema_version(self._code_schema_version()) + elif old_schema_version == -1: + # This is a special-case from 1.0: we only created tables at the + # first time they were actually used, but the upgrade code assumes + # that the tables exist. So let's fix this. + self._initialize_schema() + # The old version was schema version 1 + self._store_new_schema_version(1) + self.upgrade_database() elif old_schema_version != self._code_schema_version(): # Upgrade from old_schema_version to code_schema_version self.debug('Upgrading from schema version %i' % old_schema_version)