X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fdakdb%2Fupdate71.py;h=d6bbf4aaa5006fdc5fb6c37dc753f4ba5b93a715;hb=5a61a05250b1bf5d54661103e8999eb7c7fc9207;hp=079c195c254e4f88957557e90126c6ff75dfd84a;hpb=6cfc82886d71c7436a97ddfe7a5a1dde297886d2;p=dak.git diff --git a/dak/dakdb/update71.py b/dak/dakdb/update71.py old mode 100755 new mode 100644 index 079c195c..d6bbf4aa --- a/dak/dakdb/update71.py +++ b/dak/dakdb/update71.py @@ -2,10 +2,10 @@ # coding=utf8 """ -Add missing checksums to source_metadata +Make lastused in queuefiles/policyqueuefiles default now() @contact: Debian FTP Master -@copyright: 2011 Ansgar Burchardt +@copyright: 2011 Joerg Jaspert @license: GNU General Public License version 2 or later """ @@ -32,80 +32,18 @@ from daklib.config import Config ################################################################################ def do_update(self): """ - Add missing checksums to source_metadata + Make lastused in queuefiles/policyqueuefiles default now() """ print __doc__ try: - c = self.db.cursor() - c.execute(R"""CREATE OR REPLACE FUNCTION metadata_keys_get(key_ text) - RETURNS integer - LANGUAGE plpgsql - STRICT -AS $function$ -DECLARE - v_key_id metadata_keys.key_id%TYPE; -BEGIN - SELECT key_id INTO v_key_id FROM metadata_keys WHERE key = key_; - IF NOT FOUND THEN - INSERT INTO metadata_keys (key) VALUES (key_) RETURNING key_id INTO v_key_id; - END IF; - RETURN v_key_id; -END; -$function$ -""") - - c.execute("""COMMENT ON FUNCTION metadata_keys_get(text) -IS 'return key_id for the given key. If key is not present, create a new entry.' -""") - - c.execute(R"""CREATE OR REPLACE FUNCTION source_metadata_add_missing_checksum(type text) - RETURNS INTEGER - LANGUAGE plpgsql - STRICT -AS $function$ -DECLARE - v_checksum_key metadata_keys.key_id%TYPE; - rows INTEGER; -BEGIN - IF type NOT IN ('Files', 'Checksums-Sha1', 'Checksums-Sha256') THEN - RAISE EXCEPTION 'Unknown checksum field %', type; - END IF; - v_checksum_key := metadata_keys_get(type); + cnf = Config() - INSERT INTO source_metadata - (src_id, key_id, value) - SELECT - s.id, - v_checksum_key, - E'\n' || - (SELECT STRING_AGG(' ' || tmp.checksum || ' ' || tmp.size || ' ' || tmp.basename, E'\n' ORDER BY tmp.basename) - FROM - (SELECT - CASE type - WHEN 'Files' THEN f.md5sum - WHEN 'Checksums-Sha1' THEN f.sha1sum - WHEN 'Checksums-Sha256' THEN f.sha256sum - END AS checksum, - f.size, - SUBSTRING(f.filename FROM E'/([^/]*)\\Z') AS basename - FROM files f JOIN dsc_files ON f.id = dsc_files.file - WHERE dsc_files.source = s.id AND f.id != s.file - ) AS tmp - ) - - FROM - source s - WHERE NOT EXISTS (SELECT 1 FROM source_metadata md WHERE md.src_id=s.id AND md.key_id = v_checksum_key); - - GET DIAGNOSTICS rows = ROW_COUNT; - RETURN rows; -END; -$function$ -""") + c = self.db.cursor() - c.execute("""COMMENT ON FUNCTION source_metadata_add_missing_checksum(TEXT) -IS 'add missing checksum fields to source_metadata. type can be Files (md5sum), Checksums-Sha1, Checksums-Sha256' -""") + c.execute("ALTER TABLE build_queue_files ALTER COLUMN lastused SET DEFAULT now()") + c.execute("ALTER TABLE build_queue_files ALTER COLUMN lastused SET NOT NULL") + c.execute("ALTER TABLE build_queue_policy_files ALTER COLUMN lastused SET DEFAULT now()") + c.execute("ALTER TABLE build_queue_policy_files ALTER COLUMN lastused SET NOT NULL") c.execute("UPDATE config SET value = '71' WHERE name = 'db_revision'") self.db.commit()