|
@@ -0,0 +1,55 @@
|
|
|
+#!@PYTHON@
|
|
|
+
|
|
|
+# Copyright (C) 2011 Internet Systems Consortium.
|
|
|
+#
|
|
|
+# Permission to use, copy, modify, and distribute this software for any
|
|
|
+# purpose with or without fee is hereby granted, provided that the above
|
|
|
+# copyright notice and this permission notice appear in all copies.
|
|
|
+#
|
|
|
+# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
|
|
|
+# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
|
|
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
|
|
+# INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
|
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
|
|
|
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
|
|
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
|
|
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
+
|
|
|
+import os, sqlite3, sys
|
|
|
+from optparse import OptionParser
|
|
|
+
|
|
|
+usage = 'usage: %prog [options] db_file'
|
|
|
+parser = OptionParser(usage=usage)
|
|
|
+parser.add_option("-u", "--upgrade", action="store_true",
|
|
|
+ dest="upgrade", default=False,
|
|
|
+ help="Upgrade the database file [default: %default]")
|
|
|
+(options, args) = parser.parse_args()
|
|
|
+if len(args) == 0:
|
|
|
+ parser.error('missing argument')
|
|
|
+
|
|
|
+db_file = args[0]
|
|
|
+conn = sqlite3.connect(db_file)
|
|
|
+cur = conn.cursor()
|
|
|
+try:
|
|
|
+ # This can be anything that works iff the "diffs" table exists
|
|
|
+ cur.execute('SELECT name FROM diffs DESC LIMIT 1')
|
|
|
+except sqlite3.OperationalError as ex:
|
|
|
+ # If it fails with 'no such table', create a new one or fail with
|
|
|
+ # warning depending on the --upgrade command line option.
|
|
|
+ if str(ex) == 'no such table: diffs':
|
|
|
+ if options.upgrade:
|
|
|
+ cur.execute('CREATE TABLE diffs (id INTEGER PRIMARY KEY, ' +
|
|
|
+ 'zone_id INTEGER NOT NULL, ' +
|
|
|
+ 'version INTEGER NOT NULL, ' +
|
|
|
+ 'operation INTEGER NOT NULL, ' +
|
|
|
+ 'name STRING NOT NULL COLLATE NOCASE, ' +
|
|
|
+ 'rrtype STRING NOT NULL COLLATE NOCASE, ' +
|
|
|
+ 'ttl INTEGER NOT NULL, rdata STRING NOT NULL)')
|
|
|
+ else:
|
|
|
+ sys.stdout.write('Found an older version of SQLite3 DB file: ' +
|
|
|
+ db_file + '\n' + "Peform '" + os.getcwd() +
|
|
|
+ "/sqlite3-difftbl-check.py --upgrade " +
|
|
|
+ db_file + "'\n" +
|
|
|
+ 'before continueing install.\n')
|
|
|
+ sys.exit(1)
|
|
|
+conn.close()
|