--- modules/user/user.module.orig	2009-08-17 17:39:15.000000000 +0300
+++ modules/user/user.module	2009-08-17 22:43:34.000000000 +0300
@@ -2511,6 +2511,12 @@ function user_build_filter_query(SelectQ
       $query->leftJoin('role_permission', 'p', 'ur.rid = p.rid');
       $query->condition(db_or()->condition('u.uid', 1)->condition('p.permission', $value));
     }
+    elseif ($key == 'role') {
+      // We need a trick here: We added a unique numeric suffix to ":rid" placeholder
+      // otherwise only the last rid value will be used. This is an issue of the
+      // DB abstraction layer. Unnamed placeholders cannot be used here.
+      $query->where("u.uid IN (SELECT uid FROM users_roles WHERE rid = :rid$value)", array(":rid$value" => $value));
+    }
     else {
       $query->condition($filters[$key]['field'], $value);
     }
