]> git.decadent.org.uk Git - dak.git/commitdiff
Add a missing primary key in DB upgrade #41.
authorTorsten Werner <twerner@debian.org>
Thu, 3 Feb 2011 09:41:36 +0000 (10:41 +0100)
committerTorsten Werner <twerner@debian.org>
Thu, 3 Feb 2011 09:41:36 +0000 (10:41 +0100)
Signed-off-by: Torsten Werner <twerner@debian.org>
dak/dakdb/update41.py

index 338648fa2f08df10bb2b0916ee44ea2c52a8d3c2..813a3b709e17a83488245ef748a70d7e44f6ce52 100755 (executable)
@@ -2,8 +2,8 @@
 # coding=utf8
 
 """
-Remove useless type casts from primary keys to support sqlalchemy's
-reflection mechanism for all tables. Rename 2 sequences.
+Remove useless type casts from primary keys to support sqlalchemy's reflection
+mechanism for all tables. Rename 2 sequences and add 1 primary key.
 
 @contact: Debian FTP Master <ftpmaster@debian.org>
 @copyright: 2011 Torsten Werner <twerner@debian.org>
@@ -33,11 +33,14 @@ from socket import gethostname;
 ################################################################################
 def do_update(self):
     """
-    Remove useless type casts from primary keys and fix 2 sequences.
+    Remove useless type casts from primary keys, fix 2 sequences, and add 1
+    primary key.
     """
     print __doc__
     try:
         c = self.db.cursor()
+
+        # remove useless type casts
         for table in ('architecture', 'archive', 'bin_associations', \
             'binaries', 'component', 'dsc_files', 'files', \
             'fingerprint', 'location', 'maintainer', 'override_type', \
@@ -46,9 +49,15 @@ def do_update(self):
             c.execute("ALTER TABLE %s ALTER id SET DEFAULT nextval('%s_id_seq'::regclass)" % \
                 (table, table))
 
+        # rename sequences
         c.execute("ALTER SEQUENCE known_changes_id_seq RENAME TO changes_id_seq")
         c.execute("ALTER SEQUENCE queue_files_id_seq RENAME TO build_queue_files_id_seq")
 
+        # replace unique contraint by primary key
+        c.execute( \
+            "ALTER TABLE bin_contents DROP CONSTRAINT bin_contents_file_key");
+        c.execute("ALTER TABLE bin_contents ADD PRIMARY KEY (file, binary_id)");
+
         c.execute("UPDATE config SET value = '41' WHERE name = 'db_revision'")
         self.db.commit()