Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

MDL-38215 Fix cross-db support in workshop SQL queries

The $sql used in these methods may contain multiple parts glued
together by the UNION operator. Simply appending the ORDER BY statement
to the end of the query does not work in all DBs (failure reported at
Oracle). Following the pattern already applied in MDL-30051, we wrap the
SQL into yet another SELECT statement and perform ordering there.

Credit goes to Sara Cenni for suggesting the fix.
  • Loading branch information...
commit c3d0157b0dcd4e1c710d4198d8f8615f93ef4ab8 1 parent 8673a98
@mudrd8mz mudrd8mz authored
Showing with 12 additions and 6 deletions.
  1. +12 −6 mod/workshop/locallib.php
View
18 mod/workshop/locallib.php
@@ -418,8 +418,10 @@ public function get_potential_authors($musthavesubmission=true, $groupid=0, $lim
return array();
}
- list($sort, $sortparams) = users_order_by_sql('u');
- $sql .= " ORDER BY $sort";
+ list($sort, $sortparams) = users_order_by_sql('tmp');
+ $sql = "SELECT *
+ FROM ($sql) tmp
+ ORDER BY $sort";
return $DB->get_records_sql($sql, array_merge($params, $sortparams), $limitfrom, $limitnum);
}
@@ -467,8 +469,10 @@ public function get_potential_reviewers($musthavesubmission=false, $groupid=0, $
return array();
}
- list($sort, $sortparams) = users_order_by_sql('u');
- $sql .= " ORDER BY $sort";
+ list($sort, $sortparams) = users_order_by_sql('tmp');
+ $sql = "SELECT *
+ FROM ($sql) tmp
+ ORDER BY $sort";
return $DB->get_records_sql($sql, array_merge($params, $sortparams), $limitfrom, $limitnum);
}
@@ -518,8 +522,10 @@ public function get_participants($musthavesubmission=false, $groupid=0, $limitfr
return array();
}
- list($sort, $sortparams) = users_order_by_sql();
- $sql .= " ORDER BY $sort";
+ list($sort, $sortparams) = users_order_by_sql('tmp');
+ $sql = "SELECT *
+ FROM ($sql) tmp
+ ORDER BY $sort";
return $DB->get_records_sql($sql, array_merge($params, $sortparams), $limitfrom, $limitnum);
}
Please sign in to comment.
Something went wrong with that request. Please try again.