From cd54510d4217617a055b826a423da163fe731ccb Mon Sep 17 00:00:00 2001 From: mattc-catalyst Date: Fri, 20 Jul 2007 04:05:34 +0000 Subject: [PATCH] lib/accesslib: Performance optimisation - On postgres query time drops from ~600ms to ~35ms in some instances, in other instances performance is around the same as old the implementation. Author: Matt Clarkson --- lib/accesslib.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/accesslib.php b/lib/accesslib.php index 15e1aef33d..f53baec362 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -886,17 +886,16 @@ function load_user_capability($capability='', $context=NULL, $userid=NULL, $chec SELECT rc.capability, c1.id as id1, c2.id as id2, (c1.contextlevel * 100 + c2.contextlevel) AS aggrlevel, SUM(rc.permission) AS sum FROM - {$CFG->prefix}role_assignments ra LEFT JOIN - {$CFG->prefix}role_capabilities rc on ra.roleid = rc.roleid LEFT JOIN - {$CFG->prefix}context c1 on ra.contextid = c1.id LEFT JOIN - {$CFG->prefix}context c2 on rc.contextid = c2.id LEFT JOIN - {$CFG->prefix}context_rel cr on cr.c1 = c2.id + {$CFG->prefix}role_assignments ra INNER JOIN + {$CFG->prefix}role_capabilities rc on ra.roleid = rc.roleid INNER JOIN + {$CFG->prefix}context c1 on ra.contextid = c1.id INNER JOIN + {$CFG->prefix}context c2 on rc.contextid = c2.id INNER JOIN + {$CFG->prefix}context_rel cr on cr.c1 = c2.id AND cr.c2 = c1.id WHERE ra.userid=$userid AND $searchcontexts1 rc.contextid != $siteinstance->id $capsearch - AND cr.c2 = c1.id GROUP BY rc.capability, c1.id, c2.id, c1.contextlevel * 100 + c2.contextlevel HAVING -- 2.39.5