From patchwork Mon Oct 7 13:31:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukas Fleischer X-Patchwork-Id: 1263 Return-Path: Delivered-To: patchwork@archlinux.org Received: from apollo.archlinux.org (localhost [127.0.0.1]) by apollo.archlinux.org (Postfix) with ESMTP id 8E78314452C1E for ; Mon, 7 Oct 2019 13:31:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on apollo X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1, MAILING_LIST_MULTI=-1,RCVD_IN_DNSWL_MED=-2.3,SPF_HELO_NONE=0.001, T_DMARC_POLICY_NONE=0.01 autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-BL-Results: [127.0.9.2] Received: from orion.archlinux.org (orion.archlinux.org [IPv6:2a01:4f8:160:6087::1]) by apollo.archlinux.org (Postfix) with ESMTPS for ; Mon, 7 Oct 2019 13:31:30 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 45C1115AE764B1; Mon, 7 Oct 2019 13:31:29 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [5.9.250.164]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by orion.archlinux.org (Postfix) with ESMTPS; Mon, 7 Oct 2019 13:31:29 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 02CA72CB2D; Mon, 7 Oct 2019 13:31:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=luna2; t=1570455089; bh=9UvP+O4kwEtA10RK+i41ouwW7pm7MZuoeU21h59eAY4=; h=From:To:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe; b=afIIoGn551Nv66a1UpsVYJWCV0GPwCdZ4wLpzLe3wsyzo2s9nqV40YCp6t3yfDc/q uU8OepRmxOT8d44VD0OcBrq2WspA86ioF8xBWl/rFTIRPpOrD1maL4Oh0YrbCbmUy/ BGisJk9cJth118BnUCjarcJBlNqDapHKFcq0GObLX6jOV1+L0CcSBnNO74WdqFfq1u /U71vBlbvkKu+znuSfs22Red+bhGzS0vGQK+r0uV0HQesla4KY4naanfrw7pBttvd5 GBeRgkrId8WXPKmg7A3PAIS0MvIQh0n9OgMpDSfyjTCwq/gcCkcLksR7ZW1fJyPaZo GCcg2ptmaavTSHkTVOKGy/EDR3PyxwJrtC5yHl4sZoL0lONH1B3Mt15eLqqhQh88S2 HF4pO1flYMQM0RR626aX9j7Rgi91G/LWsbw6wtbmYe50MdRSkiVc9jJq6saxaST1kh KGKfQQ89pwd4kKNuEq89eF2+hTyW6H0Yzai8BET84YcJamX7GDqcH3/EgxnAjSlVU4 5udYe39F9kSAe54//SyDCuKnGw3ayCZpxSllV5Z7ocXMmLP32JFLOtbIQA//I9dHIu v8HyH5+SqataqUbPQtxPiQJeqz/TUn2LqPVuki0PQt3iez7vdvk0Vdw8zYL+IKw/wI UI591QPh+3Y26a99ZNz99d2k= Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id C36312CB12 for ; Mon, 7 Oct 2019 13:31:23 +0000 (UTC) Received: from orion.archlinux.org (orion.archlinux.org [88.198.91.70]) by luna.archlinux.org (Postfix) with ESMTPS for ; Mon, 7 Oct 2019 13:31:23 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 9FB7515AE764AD for ; Mon, 7 Oct 2019 13:31:22 +0000 (UTC) Received: from localhost (unknown [72.138.14.22]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: lfleischer) by orion.archlinux.org (Postfix) with ESMTPSA id 30F8B15AE764AC for ; Mon, 7 Oct 2019 13:31:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=orion; t=1570455082; bh=9UvP+O4kwEtA10RK+i41ouwW7pm7MZuoeU21h59eAY4=; h=From:To:Subject:Date; b=F7b0dRQVkHb+ykxq9riQUSFn8vg4LkwMf49pqJG4vUnkcRHtXRcLVDJdtu7pKchj8 oXbPbaz+B77nTag4ViI1LEskCmueWm8eoyM4Lb0CCXQEh0X9qJO19C/CCpHKXEhqQ4 roLyLASVkGdSQka6rSx4YDcQTjQUv5WQC/Ndhb/6EmOrhr8CIxBrP0K3UjO7B3BbAR YAtxSi7O8RfsEwGh5GnHGQPnEItkzj+BxngA5l1YQw2V54Kkuf0i2FWNO+G7AWVLy6 2cpXNBXjcBaczSWvJ5BDlz/dF9U9be0yRT2JN5HhoReNmAtN8n5Rx2uR6I1sHv+p3y a8+9PpAJU4kpg8KVD/Hb8qDvvaxoit3W6pYZqYFHzgwpzzmxERcziA+uxGXXb/+LEL kTWsNgKdJbX3yjtZ1C3k3XqNP6Fq2IY3LiF9618N/oeAnH5k7+tzsUS9qAsnLPJdCQ zeV+d85WSPd2yXt5VlCbosW1yR7fmEX9rM5KPf2zhbWF46KuY/3wkWbJvrZl75E4Hj fVHvdFRWNwgTnY07g8sHgDEAIInULpHDZ5N0eKPMsCS304Mm9pe6MyuoQ83mPeDqqC VZSy0Y2ZUhF+I8pUkDbr36Fa66nHaT7ZafXO8x4EkinCEnfuLt2SgD1b0LuuuRENT3 fq9KrwDnL/CB9Pc9OHn5EiQY= From: Lukas Fleischer To: aur-dev@archlinux.org Subject: [PATCH] Cache package licenses, groups and relations Date: Mon, 7 Oct 2019 09:31:43 -0400 Message-Id: <20191007133143.39560-1-lfleischer@archlinux.org> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-BeenThere: aur-dev@archlinux.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Arch User Repository \(AUR\) Development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: aur-dev-bounces@archlinux.org Sender: "aur-dev" Cache more package details if the global caching mechanism is enabled. Signed-off-by: Lukas Fleischer --- web/lib/pkgfuncs.inc.php | 66 ++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 44 deletions(-) diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index 3e4b2a8..be4bb06 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -158,22 +158,15 @@ function pkg_from_name($name="") { * @return array All licenses for the package */ function pkg_licenses($pkgid) { - $lics = array(); $pkgid = intval($pkgid); - if ($pkgid > 0) { - $dbh = DB::connect(); - $q = "SELECT l.Name FROM Licenses l "; - $q.= "INNER JOIN PackageLicenses pl ON pl.LicenseID = l.ID "; - $q.= "WHERE pl.PackageID = ". $pkgid; - $result = $dbh->query($q); - if (!$result) { - return array(); - } - while ($row = $result->fetch(PDO::FETCH_COLUMN, 0)) { - $lics[] = $row; - } + if (!$pkgid) { + return array(); } - return $lics; + $q = "SELECT l.Name FROM Licenses l "; + $q.= "INNER JOIN PackageLicenses pl ON pl.LicenseID = l.ID "; + $q.= "WHERE pl.PackageID = ". $pkgid; + $rows = db_cache_result($q, 'licenses:' . $pkgid); + return array_map(function ($x) { return $x[0]; }, $rows); } /** @@ -184,22 +177,15 @@ function pkg_licenses($pkgid) { * @return array All package groups for the package */ function pkg_groups($pkgid) { - $grps = array(); $pkgid = intval($pkgid); - if ($pkgid > 0) { - $dbh = DB::connect(); - $q = "SELECT g.Name FROM `Groups` g "; - $q.= "INNER JOIN PackageGroups pg ON pg.GroupID = g.ID "; - $q.= "WHERE pg.PackageID = ". $pkgid; - $result = $dbh->query($q); - if (!$result) { - return array(); - } - while ($row = $result->fetch(PDO::FETCH_COLUMN, 0)) { - $grps[] = $row; - } + if (!$pkgid) { + return array(); } - return $grps; + $q = "SELECT g.Name FROM `Groups` g "; + $q.= "INNER JOIN PackageGroups pg ON pg.GroupID = g.ID "; + $q.= "WHERE pg.PackageID = ". $pkgid; + $rows = db_cache_result($q, 'groups:' . $pkgid); + return array_map(function ($x) { return $x[0]; }, $rows); } /** @@ -256,24 +242,16 @@ function pkg_dependencies($pkgid, $limit) { * @return array All package relations for the package */ function pkg_relations($pkgid) { - $rels = array(); $pkgid = intval($pkgid); - if ($pkgid > 0) { - $dbh = DB::connect(); - $q = "SELECT pr.RelName, rt.Name, pr.RelCondition, pr.RelArch, p.ID FROM PackageRelations pr "; - $q.= "LEFT JOIN Packages p ON pr.RelName = p.Name "; - $q.= "LEFT JOIN RelationTypes rt ON rt.ID = pr.RelTypeID "; - $q.= "WHERE pr.PackageID = ". $pkgid . " "; - $q.= "ORDER BY pr.RelName"; - $result = $dbh->query($q); - if (!$result) { - return array(); - } - while ($row = $result->fetch(PDO::FETCH_NUM)) { - $rels[] = $row; - } + if (!$pkgid) { + return array(); } - return $rels; + $q = "SELECT pr.RelName, rt.Name, pr.RelCondition, pr.RelArch, p.ID FROM PackageRelations pr "; + $q.= "LEFT JOIN Packages p ON pr.RelName = p.Name "; + $q.= "LEFT JOIN RelationTypes rt ON rt.ID = pr.RelTypeID "; + $q.= "WHERE pr.PackageID = ". $pkgid . " "; + $q.= "ORDER BY pr.RelName"; + return db_cache_result($q, 'relations:' . $pkgid); } /**