From 9ced265c41e1989f5df4317969c48b2f5a5d5101 Mon Sep 17 00:00:00 2001 From: Patrick Uiterwijk Date: Thu, 3 Sep 2015 21:36:20 +0200 Subject: [PATCH] Fix database upgrades from partially initialized schema 1 databases Signed-off-by: Patrick Uiterwijk Reviewed-by: Rob Crittenden --- ipsilon/util/data.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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) -- 2.20.1