diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php index de85a99cebc..fe3b9ea64ad 100644 --- a/lib/private/Files/Config/UserMountCache.php +++ b/lib/private/Files/Config/UserMountCache.php @@ -467,16 +467,8 @@ class UserMountCache implements IUserMountCache { public function getUsedSpaceForUsers(array $users) { $builder = $this->connection->getQueryBuilder(); - $slash = $builder->createNamedParameter('/'); - - $mountPoint = $builder->func()->concat( - $builder->func()->concat($slash, 'user_id'), - $slash - ); - - $userIds = array_map(function (IUser $user) { - return $user->getUID(); - }, $users); + $mountPointHashes = array_map(static fn (IUser $user) => hash('xxh128', '/' . $user->getUID() . '/'), $users); + $userIds = array_map(static fn (IUser $user) => $user->getUID(), $users); $query = $builder->select('m.user_id', 'f.size') ->from('mounts', 'm') @@ -485,7 +477,7 @@ class UserMountCache implements IUserMountCache { $builder->expr()->eq('m.storage_id', 'f.storage'), $builder->expr()->eq('f.path_hash', $builder->createNamedParameter(md5('files'))) )) - ->where($builder->expr()->eq('m.mount_point', $mountPoint)) + ->where($builder->expr()->in('m.mount_point_hash', $builder->createNamedParameter($mountPointHashes, IQueryBuilder::PARAM_STR_ARRAY))) ->andWhere($builder->expr()->in('m.user_id', $builder->createNamedParameter($userIds, IQueryBuilder::PARAM_STR_ARRAY))); $result = $query->executeQuery();