]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/dbconn.py
fix things I broke yesterday with the contents merge
[dak.git] / daklib / dbconn.py
index 308f5548778810f2ccf8d6877c2dc4127b2f31d6..2c4d1a0e470747d07371b60e2484584567067f72 100755 (executable)
@@ -113,6 +113,14 @@ class DBConn(Singleton):
                        'suite_version': Cache(lambda x: '%s_%s' % (x['source'], x['suite'])),
                       }
 
+        self.prepared_statements = {}
+
+    def prepare(self,name,statement):
+        if not self.prepared_statements.has_key(name):
+            c = self.cursor()
+            c.execute(statement)
+            self.prepared_statements[name] = statement
+
     def clear_caches(self):
         self.__init_caches()
 
@@ -160,7 +168,7 @@ class DBConn(Singleton):
         @return: the database id for the given suite
 
         """
-        return self.__get_id('id', 'suite', 'suite_name', suite)
+        return int(self.__get_id('id', 'suite', 'suite_name', suite))
 
     def get_section_id(self, section):
         """
@@ -202,7 +210,7 @@ class DBConn(Singleton):
         @return: the database id for the given override type
 
         """
-        return self.__get_id('id', 'override_type', 'override_type', override_type)
+        return self.__get_id('id', 'override_type', 'type', override_type)
 
     def get_architecture_id(self, architecture):
         """
@@ -538,23 +546,28 @@ class DBConn(Singleton):
 
         c.execute("BEGIN WORK")
         try:
+            arch_id = self.get_architecture_id(package[Architecture])
 
                 # Remove any already existing recorded files for this package
             c.execute("""DELETE FROM pending_content_associations
                          WHERE package=%(Package)s
-                         AND version=%(Version)s""", package )
+                         AND version=%(Version)s
+                         AND arch_id=%d""" % arch_id, package )
 
             for fullpath in fullpaths:
                 (path, file) = os.path.split(fullpath)
 
+                if path.startswith( "./" ):
+                    path = path[2:]
                 # Get the necessary IDs ...
                 file_id = self.get_or_set_contents_file_id(file)
                 path_id = self.get_or_set_contents_path_id(path)
 
                 c.execute("""INSERT INTO pending_content_associations
-                               (package, version, filepath, filename)
-                           VALUES (%%(Package)s, %%(Version)s, '%d', '%d')""" % (path_id, file_id),
-                          package )
+                               (package, version, architecture, filepath, filename)
+                            VALUES (%%(Package)s, %%(Version)s, '%d', '%d', '%d')"""
+                    % (arch_id, path_id, file_id), package )
+
             c.execute("COMMIT")
             return True
         except: