]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/contents.py
Go back to temporary tables.
[dak.git] / daklib / contents.py
index e808da6234b97194b6611a7e798dd185921e6425..81ce2226774c4766096d0e8ef1ff51f69816be30 100755 (executable)
@@ -65,15 +65,23 @@ class BinaryContentsWriter(object):
             'type':          self.overridetype.overridetype,
         }
 
-        sql = '''
-with
+        sql_create_temp = '''
+create temp table newest_binaries (
+    id integer primary key,
+    package text);
+
+create index newest_binaries_by_package on newest_binaries (package);
 
-newest_binaries as
-    (select distinct on (package) id, package from binaries
+insert into newest_binaries (id, package)
+    select distinct on (package) id, package from binaries
         where type = :type and
             (architecture = :arch_all or architecture = :arch) and
             id in (select bin from bin_associations where suite = :suite)
-        order by package, version desc),
+        order by package, version desc;'''
+        self.session.execute(sql_create_temp, params=params)
+
+        sql = '''
+with
 
 unique_override as
     (select o.package, s.section
@@ -165,16 +173,23 @@ class SourceContentsWriter(object):
             'component_id': self.component.component_id,
         }
 
-        sql = '''
-with
-  newest_sources as
-    (select distinct on (source) s.id, s.source from source s
+        sql_create_temp = '''
+create temp table newest_sources (
+    id integer primary key,
+    source text);
+
+create index sources_binaries_by_source on newest_sources (source);
+
+insert into newest_sources (id, source)
+    select distinct on (source) s.id, s.source from source s
         join files f on f.id = s.file
         join location l on l.id = f.location
         where s.id in (select source from src_associations where suite = :suite_id)
             and l.component = :component_id
-        order by source, version desc)
+        order by source, version desc;'''
+        self.session.execute(sql_create_temp, params=params)
 
+        sql = '''
 select sc.file, string_agg(s.source, ',' order by s.source) as pkglist
     from newest_sources s, src_contents sc
     where s.id = sc.source_id group by sc.file'''