mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 06:18:28 +01:00
MDL-60043 accesslib: improve query performance by removing ORDER BY
then add back the minimal necessary sorting in PHP. That part was added by Tim Hunt.
This commit is contained in:
parent
109aa07648
commit
aceb84ad76
@ -319,8 +319,7 @@ function get_role_definitions_uncached(array $roleids) {
|
|||||||
$sql = "SELECT ctx.path, rc.roleid, rc.capability, rc.permission
|
$sql = "SELECT ctx.path, rc.roleid, rc.capability, rc.permission
|
||||||
FROM {role_capabilities} rc
|
FROM {role_capabilities} rc
|
||||||
JOIN {context} ctx ON rc.contextid = ctx.id
|
JOIN {context} ctx ON rc.contextid = ctx.id
|
||||||
WHERE rc.roleid $sql
|
WHERE rc.roleid $sql";
|
||||||
ORDER BY ctx.path, rc.roleid, rc.capability";
|
|
||||||
$rs = $DB->get_recordset_sql($sql, $params);
|
$rs = $DB->get_recordset_sql($sql, $params);
|
||||||
|
|
||||||
foreach ($rs as $rd) {
|
foreach ($rs as $rd) {
|
||||||
@ -334,6 +333,15 @@ function get_role_definitions_uncached(array $roleids) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$rs->close();
|
$rs->close();
|
||||||
|
|
||||||
|
// Sometimes (e.g. get_user_capability_course_helper::get_capability_info_at_each_context)
|
||||||
|
// we process role definitinons in a way that requires we see parent contexts
|
||||||
|
// before child contexts. This sort ensures that works (and is faster than
|
||||||
|
// sorting in the SQL query).
|
||||||
|
foreach ($rdefs as $roleid => $rdef) {
|
||||||
|
ksort($rdefs[$roleid]);
|
||||||
|
}
|
||||||
|
|
||||||
return $rdefs;
|
return $rdefs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user