ChangeSet ID: 30954 CVSROOT: /opt/cvs-commit Module name: appdb Changes by: wineowner@winehq.org 2007/03/11 15:39:02
Modified files: include : maintainer.php sidebar_admin.php
Log message: Alexander Nicolaysen Sørnes alex@thehandofagony.com, Chris Morgan cmorgan@alum.wpi.edu Fix queued maintainer sql with missing join causing millions of rows to be generated by a relatively simple sql statement
Patch: http://cvs.winehq.org/patch.py?id=30954
Old revision New revision Changes Path 1.27 1.28 +23 -9 appdb/include/maintainer.php 1.29 1.30 +1 -1 appdb/include/sidebar_admin.php
Index: appdb/include/maintainer.php diff -u -p appdb/include/maintainer.php:1.27 appdb/include/maintainer.php:1.28 --- appdb/include/maintainer.php:1.27 11 Mar 2007 20:39: 2 -0000 +++ appdb/include/maintainer.php 11 Mar 2007 20:39: 2 -0000 @@ -270,19 +270,33 @@ class maintainer return $aAppsMaintained; }
- function getQueuedMaintainerCount() + function objectGetEntriesCount($bQueued) { /* Excluding requests for queued apps and versions, as these are handled automatically. One SELECT for super maintainers, one for maintainers. */ - $sQuery = "SELECT COUNT(DISTINCT maintainerId) as queued_maintainers FROM - appMaintainers, appFamily, appVersion - WHERE appMaintainers.queued='true' AND ((appFamily.appId = - appMaintainers.appId AND appFamily.queued = 'false' AND - appMaintainers.versionId = '') OR ( - appVersion.versionId = appMaintainers.versionId - AND appVersion.queued = 'false'))"; + $sQuery = "SELECT COUNT(DISTINCT maintainerId) as queued_maintainers FROM + appMaintainers, appFamily, appVersion WHERE + appMaintainers.queued = '?' + AND + appFamily.appId = appVersion.appId + AND + ( + ( + appFamily.appId = appMaintainers.appId + AND + appFamily.queued = 'false' + AND + appMaintainers.versionId = '' + ) + OR + ( + appVersion.versionId = appMaintainers.versionId + AND + appVersion.queued = 'false' + ) + )";
- if(!($hResult = query_parameters($sQuery))) + if(!($hResult = query_parameters($sQuery, $bQueued ? "true" : "false"))) return FALSE;
$oRow = mysql_fetch_object($hResult); Index: appdb/include/sidebar_admin.php diff -u -p appdb/include/sidebar_admin.php:1.29 appdb/include/sidebar_admin.php:1.30 --- appdb/include/sidebar_admin.php:1.29 11 Mar 2007 20:39: 2 -0000 +++ appdb/include/sidebar_admin.php 11 Mar 2007 20:39: 2 -0000 @@ -21,7 +21,7 @@ function global_admin_menu() { "screenshot").")", BASE."objectManager.php?sClass=screenshot&bIsQueue=true&sTitle=". "Screenshot%20Queue"); - $g->add("View Maintainer Queue (".Maintainer::getQueuedMaintainerCount().")", + $g->add("View Maintainer Queue (".Maintainer::objectGetEntriesCount(true).")", BASE."objectManager.php?sClass=maintainer&bIsQueue=true&sTitle=". "Maintainer%20Queue"); $g->add("View Maintainer Entries (".Maintainer::getMaintainerCount().")",