diff options
author | Tarvi Pillessaar | 2013-01-25 12:22:05 +0000 |
---|---|---|
committer | Tarvi Pillessaar | 2013-01-25 12:22:05 +0000 |
commit | c428ba5d978de65c78c87423db4ceafa0bc2f893 (patch) | |
tree | cbca3f133a4d50144fd089936fc766c57018f53f /scripts/skytools_upgrade.py | |
parent | 67f8a078ebfb09154a8ba3603f85048675f87fa4 (diff) |
skytools_upgrae: make force option work properly
Diffstat (limited to 'scripts/skytools_upgrade.py')
-rwxr-xr-x | scripts/skytools_upgrade.py | 17 |
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 |