summaryrefslogtreecommitdiff
path: root/scripts/skytools_upgrade.py
diff options
context:
space:
mode:
authorTarvi Pillessaar2013-01-25 12:22:05 +0000
committerTarvi Pillessaar2013-01-25 12:22:05 +0000
commitc428ba5d978de65c78c87423db4ceafa0bc2f893 (patch)
treecbca3f133a4d50144fd089936fc766c57018f53f /scripts/skytools_upgrade.py
parent67f8a078ebfb09154a8ba3603f85048675f87fa4 (diff)
skytools_upgrae: make force option work properly
Diffstat (limited to 'scripts/skytools_upgrade.py')
-rwxr-xr-xscripts/skytools_upgrade.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/scripts/skytools_upgrade.py b/scripts/skytools_upgrade.py
index 38a026c6..b4f6134d 100755
--- a/scripts/skytools_upgrade.py
+++ b/scripts/skytools_upgrade.py
@@ -38,8 +38,14 @@ def is_version_ge(a, b):
vb = natsort_key(b)
return va >= vb
+def is_version_gt(a, b):
+ """Return True if a is greater than b."""
+ va = natsort_key(a)
+ vb = natsort_key(b)
+ return va > vb
+
-def check_version(curs, schema, new_ver_str, recheck_func=None):
+def check_version(curs, schema, new_ver_str, recheck_func=None, force_gt=False):
funcname = "%s.version" % schema
if not skytools.exists_function(curs, funcname, 0):
if recheck_func is not None:
@@ -49,7 +55,10 @@ def check_version(curs, schema, new_ver_str, recheck_func=None):
q = "select %s()" % funcname
curs.execute(q)
old_ver_str = curs.fetchone()[0]
- ok = is_version_ge(old_ver_str, new_ver_str)
+ if force_gt:
+ ok = is_version_gt(old_ver_str, new_ver_str)
+ else:
+ ok = is_version_ge(old_ver_str, new_ver_str)
return ok, old_ver_str
@@ -70,8 +79,8 @@ class DbUpgrade(skytools.DBScript):
continue
# new enough?
- ok, oldver = check_version(curs, schema, ver, recheck_func)
- if ok and not self.options.force:
+ ok, oldver = check_version(curs, schema, ver, recheck_func, self.options.force)
+ if ok:
continue
# too old schema, no way to upgrade