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

Florian Weimer fw at costa.debian.org
Sun Sep 18 13:15:49 UTC 2005


Author: fw
Date: 2005-09-18 13:15:48 +0000 (Sun, 18 Sep 2005)
New Revision: 2040

Modified:
   lib/python/security_db.py
Log:
lib/python/security_db.py (DB._initFunctions):
  Introduce collation function for Debian versions.
(DB.getBinaryPackagesForSource, DB.getSourcePackages,
DB.getBinaryPackages):
  Use it.


Modified: lib/python/security_db.py
===================================================================
--- lib/python/security_db.py	2005-09-18 13:13:29 UTC (rev 2039)
+++ lib/python/security_db.py	2005-09-18 13:15:48 UTC (rev 2040)
@@ -322,6 +322,12 @@
                 return release
         self.db.createscalarfunction("release_name", release_name, 3)
 
+        # This is slower than the version_linear_order table, but
+        # often more convenient to use in queries.
+        def collate_version(a, b):
+            return debian_support.Version(a).__cmp__(debian_support.Version(b))
+        self.db.createcollation("version", collate_version)
+
     def filePrint(self, filename):
         """Returns a fingerprint string for filename."""
 
@@ -1207,7 +1213,8 @@
             ORDER BY release_to_number(release))
             GROUP BY package, version
             ORDER BY package)
-            GROUP BY releases, version""", (pkg,)):
+            GROUP BY releases, version
+            ORDER BY version COLLATE version""", (pkg,)):
             yield packages.split(', '), releases.split(', '), version
             
     def getSourcePackages(self, cursor, bug):
@@ -1225,7 +1232,7 @@
             WHERE n.bug_name = ? AND s.note = n.id AND p.rowid = s.package
             ORDER BY release_to_number(p.release), p.subrelease)
             GROUP BY package, version, vulnerable
-            ORDER BY package, version""",
+            ORDER BY package, version COLLATE version""",
             (bug,)):
             yield package, releases.split(', '), version, vulnerable
         
@@ -1250,9 +1257,9 @@
             p.version, vulnerable
             ORDER BY release_to_number(p.release), p.subrelease)
             GROUP BY package, version, vulnerable, archs
-            ORDER BY package, version)
+            ORDER BY package)
             GROUP BY releases, version, vulnerable, archs
-            ORDER BY packages, version""",
+            ORDER BY packages, version COLLATE version""",
             (bug,)):
             yield (packages.split(', '), releases.split(','), version,
                    archs.split(','), vulnerable)




More information about the Secure-testing-commits mailing list