# coding=utf8
"""
-Add missing checksums to source_metadata
+Make lastused in queuefiles/policyqueuefiles default now()
@contact: Debian FTP Master <ftpmaster@debian.org>
-@copyright: 2011 Ansgar Burchardt <ansgar@debian.org>
+@copyright: 2011 Joerg Jaspert <joerg@debian.org>
@license: GNU General Public License version 2 or later
"""
################################################################################
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()