import psycopg2
import time
from daklib.dak_exceptions import DBUpdateError
+from daklib.config import Config
+import string
################################################################################
-def suites():
+def _suites():
"""
return a list of suites to operate on
"""
- if Config().has_key( "%s::%s" %(options_prefix,"Suite")):
- suites = utils.split_args(Config()[ "%s::%s" %(options_prefix,"Suite")])
- else:
- suites = Config().SubTree("Suite").List()
-
+ suites = Config().SubTree("Suite").List()
return suites
def arches(cursor, suite):
cursor.execute("""SELECT s.architecture, a.arch_string
FROM suite_architectures s
JOIN architecture a ON (s.architecture=a.id)
- WHERE suite = :suite""", {'suite' : suite })
+ WHERE suite = '%s'""" % suite)
while True:
r = cursor.fetchone()
c.execute("""CREATE INDEX ind_deb_contents_binary ON deb_contents(binary_id);""" )
-
- suites = self.suites()
+ suites = _suites()
for suite in [i.lower() for i in suites]:
- suite_id = DBConn().get_suite_id(suite)
+
+ c.execute("SELECT id FROM suite WHERE suite_name ='%s'" % suite )
+ suiterow = c.fetchone()
+ suite_id = suiterow[0]
arch_list = arches(c, suite_id)
arch_list = arches(c, suite_id)
+ suitestr=string.replace(suite,'-','_');
for (arch_id,arch_str) in arch_list:
- c.execute( "CREATE INDEX ind_deb_contents_%s_%s ON deb_contents (arch,suite) WHERE (arch=2 OR arch=%d) AND suite=$d"%(arch_str,suite,arch_id,suite_id) )
+ arch_str = string.replace(arch_str,"-", "_")
+ c.execute( "CREATE INDEX ind_deb_contents_%s_%s ON deb_contents (arch,suite) WHERE (arch=2 OR arch=%s) AND suite='%s'"%(arch_str,suitestr,arch_id,suite_id) )
for section, sname in [("debian-installer","main"),
("non-free/debian-installer", "nonfree")]:
- c.execute( "CREATE INDEX ind_udeb_contents_%s_%s ON udeb_contents (section,suite) WHERE section=%s AND suite=$d"%(sname,suite,section,suite_id) )
+ c.execute( "CREATE INDEX ind_udeb_contents_%s_%s ON udeb_contents (section,suite) WHERE section='%s' AND suite='%s'"%(sname,suitestr,section,suite_id) )
c.execute( """CREATE OR REPLACE FUNCTION update_contents_for_bin_a() RETURNS trigger AS $$
if event == "INSERT" or event == "UPDATE":
content_data = plpy.execute(plpy.prepare(
- """SELECT s.section, b.package, b.architecture, ot.type
+ \"\"\"SELECT s.section, b.package, b.architecture, ot.type
FROM override o
JOIN override_type ot on o.type=ot.id
JOIN binaries b on b.package=o.package
JOIN section s on s.id=o.section
WHERE b.id=$1
AND o.suite=$2
- """,
+ \"\"\",
["int", "int"]),
[TD["new"]["bin"], TD["new"]["suite"]])[0]
tablename="%s_contents" % content_data['type']
- plpy.execute(plpy.prepare("""DELETE FROM %s
- WHERE package=$1 and arch=$2 and suite=$3""" % tablename,
+ plpy.execute(plpy.prepare(\"\"\"DELETE FROM %s
+ WHERE package=$1 and arch=$2 and suite=$3\"\"\" % tablename,
['text','int','int']),
[content_data['package'],
content_data['architecture'],
for filename in filenames:
plpy.execute(plpy.prepare(
- """INSERT INTO %s
+ \"\"\"INSERT INTO %s
(filename,section,package,binary_id,arch,suite)
- VALUES($1,$2,$3,$4,$5,$6)""" % tablename,
+ VALUES($1,$2,$3,$4,$5,$6)\"\"\" % tablename,
["text","text","text","int","int","int"]),
[filename["file"],
content_data["section"],
event = TD["event"]
if event == "UPDATE" or event == "INSERT":
row = TD["new"]
- r = plpy.execute(plpy.prepare( """SELECT 1 from suite_architectures sa
+ r = plpy.execute(plpy.prepare( \"\"\"SELECT 1 from suite_architectures sa
JOIN binaries b ON b.architecture = sa.architecture
- WHERE b.id = $1 and sa.suite = $2""",
+ WHERE b.id = $1 and sa.suite = $2\"\"\",
["int", "int"]),
[row["bin"], row["suite"]])
if not len(r):
self.db.commit()
- except psycopg2.ProgrammingError, msg:
+ except psycopg2.ProgrammingError as msg:
self.db.rollback()
- raise DBUpdateError, "Unable to apply process-new update 28, rollback issued. Error message : %s" % (str(msg))
+ raise DBUpdateError("Unable to apply process-new update 28, rollback issued. Error message : %s" % (str(msg)))