[Secure-testing-commits] r2004 - lib/python

Florian Weimer fw at costa.debian.org
Thu Sep 15 15:39:02 UTC 2005


Author: fw
Date: 2005-09-15 15:39:01 +0000 (Thu, 15 Sep 2005)
New Revision: 2004

Modified:
   lib/python/security_db.py
Log:
lib/python/security_db.py (DB.calculateVulnerabilities):
  Use INSERT OR REPLACE to simplify the code considerably.


Modified: lib/python/security_db.py
===================================================================
--- lib/python/security_db.py	2005-09-15 15:15:46 UTC (rev 2003)
+++ lib/python/security_db.py	2005-09-15 15:39:01 UTC (rev 2004)
@@ -775,25 +775,6 @@
                           % (b.source_file, b.source_line, b_package))
 
         if self.verbose:
-            print "  create temporary tables"
-        cursor.execute(
-            """CREATE TEMPORARY TABLE tmp_bug_releases
-            (bug_name TEXT NOT NULL,
-            release TEXT NOT NULL,
-            PRIMARY KEY (bug_name, release))""")
-        for (bug_name, release) in list(cursor.execute(
-            """SELECT DISTINCT bug_name, release FROM package_notes
-            WHERE release <> ''""")):
-            data = [(bug_name, release),
-                    (bug_name, release + '-security')]
-            try:
-                data.append((bug_name, self.nicknames[release]))
-            except KeyError:
-                pass
-            cursor.executemany("INSERT INTO tmp_bug_releases VALUES (?, ?)",
-                               data)
-
-        if self.verbose:
             print "  remove old status"
         cursor.execute("DELETE FROM source_package_status")
         cursor.execute("DELETE FROM binary_package_status")
@@ -801,32 +782,25 @@
             print "  calculate package status"
             print "    source packages (unqualified)"
 
-        # If there is a single package note qualified with a specific
-        # release, ignore all the unqualified annotations (even for
-        # other packages).  This is implemented by looking at the
-        # tmp_bug_releases table.
-        
         cursor.execute(
             """INSERT INTO source_package_status
             SELECT n.id, p.rowid,
             n.fixed_version IS NULL OR p.version_id < n.fixed_version_id
             FROM package_notes AS n, source_packages AS p
-            WHERE n.release = '' AND p.name = n.package
-            AND NOT EXISTS (SELECT * FROM tmp_bug_releases AS t
-                            WHERE t.bug_name = n.bug_name
-                            AND t.release = p.release)""")
+            WHERE n.release = '' AND p.name = n.package""")
+
+        # Release annotations always override previous results,
+        # therefore we use INSERT OR REPLACE.
+
         if self.verbose:
             print "    source packages (qualified)"
         cursor.execute(
-            """INSERT INTO source_package_status
+            """INSERT OR REPLACE INTO source_package_status
             SELECT n.id, p.rowid,
             n.fixed_version IS NULL OR p.version_id < n.fixed_version_id
             FROM package_notes AS n, source_packages AS p
             WHERE p.name = n.package
-            AND (p.release = n.release
-                 OR p.release = (n.release || '-security')
-                 OR p.release = (SELECT nickname FROM nicknames
-                                 WHERE realname = n.release))""")
+            AND p.release = n.release""")
 
         if self.verbose:
             print "    binary packages (from source packages)"
@@ -835,12 +809,10 @@
             SELECT n.id, p.rowid,
             n.fixed_version IS NULL OR p.source_version_id < n.fixed_version_id
             FROM package_notes AS n, binary_packages AS p
-            WHERE n.release = '' AND p.source = n.package
-            AND NOT EXISTS (SELECT * FROM tmp_bug_releases AS t
-                            WHERE t.bug_name = n.bug_name
-                            AND t.release = p.release)""")
+            WHERE n.release = '' AND p.source = n.package""")
+            
         cursor.execute(
-            """INSERT INTO binary_package_status
+            """INSERT OR REPLACE INTO binary_package_status
             SELECT n.id, p.rowid,
             n.fixed_version IS NULL OR p.source_version_id < n.fixed_version_id
             FROM package_notes AS n, binary_packages AS p
@@ -859,23 +831,16 @@
             n.fixed_version IS NULL OR p.version_id < n.fixed_version_id
             FROM package_notes AS n, binary_packages AS p
             WHERE n.release = '' AND p.name = n.package
-            AND (NOT EXISTS (SELECT * FROM tmp_bug_releases AS t
-                            WHERE t.bug_name = n.bug_name
-                            AND t.release = p.release))
             AND n.package_kind = 'binary'""")
             
         if self.verbose:
             print "    binary packages (qualified)"
         cursor.execute(
-            """INSERT INTO binary_package_status
+            """INSERT OR REPLACE INTO binary_package_status
             SELECT n.id, p.rowid,
             n.fixed_version IS NULL OR p.version_id < n.fixed_version_id
             FROM package_notes AS n, binary_packages AS p
-            WHERE p.name = n.package
-            AND (p.release = n.release
-                 OR p.release = n.release || '-security'
-                 OR p.release = (SELECT nickname FROM nicknames
-                                 WHERE realname = n.release))
+            WHERE p.name = n.package AND p.release = n.release
             AND  n.package_kind = 'binary'""")
 
         return result




More information about the Secure-testing-commits mailing list