From nobody Mon Feb 9 08:57:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=eu.citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1595356982; cv=none; d=zohomail.com; s=zohoarc; b=DNzO1WxpSQJQQxFxFC7sSKStAUyCXcJ7eDkhwBe8Kz2S6llkC5C2c2jNMl4pUffoYuC2KIDoBN8kogj2QprqkqOQyvtN3ON25gClnBeXZUjW0Fx+Nzkv6rdK1O7b0nD+NQGHAo9Gr7ytbvqo3zMiEK4okQP1rqbEXstEzf3BGsg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1595356982; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Endl95QtBe8dNWNZLnX4FF5nkA5N/RWdEBft8RQv63M=; b=bttCoquvCkIAMatnMJeedGHJsmBdpYdI7YVpQGPPTe5TYYkshge2bpcwm/idMkr23VB2YLHgMbBrQeQhNAJCSIZnY03bcXESVToaIeRF/kfwnZ0nO4iAz+uQh8fHw8D5FLqLXY95DXogxN8Bq3xuf5F4o8tJG7V+IStBWaUU+aU= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1595356982409744.5226304545835; Tue, 21 Jul 2020 11:43:02 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jxxDz-00026f-4m; Tue, 21 Jul 2020 18:42:47 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jxxDy-0001xV-N5 for xen-devel@lists.xenproject.org; Tue, 21 Jul 2020 18:42:46 +0000 Received: from chiark.greenend.org.uk (unknown [2001:ba8:1e3::]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id e926bf38-cb81-11ea-85a2-bc764e2007e4; Tue, 21 Jul 2020 18:42:21 +0000 (UTC) Received: from [172.18.45.5] (helo=zealot.relativity.greenend.org.uk) by chiark.greenend.org.uk (Debian Exim 4.84_2 #1) with esmtp (return-path ijackson@chiark.greenend.org.uk) id 1jxxDY-0001u7-Nz; Tue, 21 Jul 2020 19:42:20 +0100 X-Inumbo-ID: e926bf38-cb81-11ea-85a2-bc764e2007e4 From: Ian Jackson To: xen-devel@lists.xenproject.org Subject: [OSSTEST PATCH 06/14] sg-report-flight: Use WITH clause to use index for $anypassq Date: Tue, 21 Jul 2020 19:41:57 +0100 Message-Id: <20200721184205.15232-7-ian.jackson@eu.citrix.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200721184205.15232-1-ian.jackson@eu.citrix.com> References: <20200721184205.15232-1-ian.jackson@eu.citrix.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Ian Jackson , George Dunlap Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" Perf: runtime of my test case now ~11s Example query before (from the Perl DBI trace): SELECT * FROM flights JOIN steps USING (flight) WHERE (branch=3D'xen-unstable') AND job=3D? and testid=3D? and status=3D'pass' AND ( (TRUE AND flight <=3D 151903) AND (blessing=3D'real') ) LIMIT 1 After: WITH s AS ( SELECT * FROM steps WHERE job=3D? and testid=3D? and status=3D'pass' ) SELECT * FROM flights JOIN s USING (flight) WHERE (branch=3D'xen-unstable') AND ( (TRUE AND flight <=3D 151903) AND (blessing=3D'real') ) LIMIT 1 In both cases with bind vars: "test-amd64-i386-xl-pvshim" "guest-start" Diff to the query: - SELECT * FROM flights JOIN steps USING (flight) + WITH s AS + ( + SELECT * FROM steps + WHERE job=3D? and testid=3D? and status=3D'pass' + ) + SELECT * FROM flights JOIN s USING (flight) WHERE (branch=3D'xen-unstable') - AND job=3D? and testid=3D? and status=3D'pass' AND ( (TRUE AND flight <=3D 151903) AND (blessing=3D'real') ) LIMIT 1 CC: George Dunlap Signed-off-by: Ian Jackson Reviewed-by: George Dunlap --- schema/steps-job-index.sql | 2 +- sg-report-flight | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/schema/steps-job-index.sql b/schema/steps-job-index.sql index 07dc5a30..2c33af72 100644 --- a/schema/steps-job-index.sql +++ b/schema/steps-job-index.sql @@ -1,4 +1,4 @@ --- ##OSSTEST## 006 Preparatory +-- ##OSSTEST## 006 Needed -- -- This index helps sg-report-flight find if a test ever passed. =20 diff --git a/sg-report-flight b/sg-report-flight index b5398573..b8d948da 100755 --- a/sg-report-flight +++ b/sg-report-flight @@ -849,10 +849,20 @@ sub justifyfailures ($;$) { =20 my @failures=3D values %{ $fi->{Failures} }; =20 + # In psql 9.6 this WITH clause makes postgresql do the steps query + # first. This is good because if this test never passed we can + # determine that really quickly using the new index, without + # having to scan the flights table. (If the test passed we will + # probably not have to look at many flights to find one, so in + # that case this is not much worse.) my $anypassq=3D <