From 9d25189ba6733306738a125dc77e7c78364bb2de Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: Feb 10 2020 15:29:13 +0000 Subject: PR#1962: improve sql speed in build_references Merges #1962 https://pagure.io/koji/pull-request/1962 Fixes: #1961 https://pagure.io/koji/issue/1961 SQL effectivity for build_references --- diff --git a/hub/kojihub.py b/hub/kojihub.py index 64776b1..f1982bb 100644 --- a/hub/kojihub.py +++ b/hub/kojihub.py @@ -7740,22 +7740,23 @@ def build_references(build_id, limit=None, lazy=False): # find timestamp of most recent use in a buildroot event_id = 0 if build_rpm_ids: - query = QueryProcessor( - columns=['max(standard_buildroot.create_event)'], - tables=['buildroot_listing'], - joins=['standard_buildroot ON buildroot_listing.buildroot_id = standard_buildroot.buildroot_id'], - clauses=['buildroot_listing.rpm_id IN %(rpm_ids)s'], - values={'rpm_ids': build_rpm_ids}) - event_id = query.singleValue(strict=False) or 0 - + q = """SELECT MAX(create_event) + FROM standard_buildroot + WHERE buildroot_id IN ( + SELECT buildroot_id + FROM buildroot_listing + WHERE rpm_id IN %(rpm_ids)s + )""" + event_id = _fetchSingle(q, {'rpm_ids': build_rpm_ids}) or 0 if build_archive_ids: - query = QueryProcessor( - columns=['max(standard_buildroot.create_event)'], - tables=['buildroot_archives'], - joins=['standard_buildroot ON buildroot_archives.buildroot_id = standard_buildroot.buildroot_id'], - clauses=['buildroot_archives.archive_id IN %(archive_ids)s'], - values={'archive_ids': build_archive_ids}) - event_id2 = query.singleValue(strict=False) or 0 + q = """SELECT MAX(create_event) + FROM standard_buildroot + WHERE buildroot_id IN ( + SELECT buildroot_id + FROM buildroot_archives + WHERE archive_id IN %(archive_ids)s + )""" + event_id2 = _fetchSingle(q, {'archive_ids': build_archive_ids}) or 0 event_id = max(event_id, event_id2) if event_id: q = """SELECT EXTRACT(EPOCH FROM get_event_time(%(event_id)i))"""