diff options
Diffstat (limited to 'lib/private/Files')
-rw-r--r-- | lib/private/Files/Cache/Cache.php | 68 | ||||
-rw-r--r-- | lib/private/Files/Cache/HomeCache.php | 1 | ||||
-rw-r--r-- | lib/private/Files/Cache/StorageGlobal.php | 6 | ||||
-rw-r--r-- | lib/private/Files/Config/UserMountCache.php | 17 | ||||
-rw-r--r-- | lib/private/Files/Node/Folder.php | 6 | ||||
-rw-r--r-- | lib/private/Files/Type/Loader.php | 10 |
6 files changed, 88 insertions, 20 deletions
diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php index 8a173f35197..e74cc86d9c9 100644 --- a/lib/private/Files/Cache/Cache.php +++ b/lib/private/Files/Cache/Cache.php @@ -151,7 +151,9 @@ class Cache implements ICache { $query->whereFileId($file); } - $data = $query->execute()->fetch(); + $result = $query->execute(); + $data = $result->fetch(); + $result->closeCursor(); //merge partial data if (!$data and is_string($file) and isset($this->partial[$file])) { @@ -220,7 +222,10 @@ class Cache implements ICache { ->whereParent($fileId) ->orderBy('name', 'ASC'); - $files = $query->execute()->fetchAll(); + $result = $query->execute(); + $files = $result->fetchAll(); + $result->closeCursor(); + return array_map(function (array $data) { return self::cacheEntryFromData($data, $this->mimetypeLoader); }, $files); @@ -467,7 +472,10 @@ class Cache implements ICache { ->whereStorageId() ->wherePath($file); - $id = $query->execute()->fetchColumn(); + $result = $query->execute(); + $id = $result->fetchColumn(); + $result->closeCursor(); + return $id === false ? -1 : (int)$id; } @@ -710,7 +718,11 @@ class Cache implements ICache { ->from('filecache') ->whereStorageId() ->wherePath($file); - $size = $query->execute()->fetchColumn(); + + $result = $query->execute(); + $size = $result->fetchColumn(); + $result->closeCursor(); + if ($size !== false) { if ((int)$size === -1) { return self::SHALLOW; @@ -745,9 +757,13 @@ class Cache implements ICache { ->whereStorageId() ->andWhere($query->expr()->iLike('name', $query->createNamedParameter($pattern))); + $result = $query->execute(); + $files = $result->fetchAll(); + $result->closeCursor(); + return array_map(function (array $data) { return self::cacheEntryFromData($data, $this->mimetypeLoader); - }, $query->execute()->fetchAll()); + }, $files); } /** @@ -782,9 +798,13 @@ class Cache implements ICache { $query->andWhere($query->expr()->eq('mimepart', $query->createNamedParameter($mimeId, IQueryBuilder::PARAM_INT))); } + $result = $query->execute(); + $files = $result->fetchAll(); + $result->closeCursor(); + return array_map(function (array $data) { return self::cacheEntryFromData($data, $this->mimetypeLoader); - }, $query->execute()->fetchAll()); + }, $files); } public function searchQuery(ISearchQuery $searchQuery) { @@ -865,7 +885,11 @@ class Cache implements ICache { ->whereParent($fileId) ->andWhere($query->expr()->lt('size', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT))); - return (int)$query->execute()->fetchColumn(); + $result = $query->execute(); + $size = (int)$result->fetchColumn(); + $result->closeCursor(); + + return $size; } return -1; } @@ -892,7 +916,11 @@ class Cache implements ICache { ->whereStorageId() ->whereParent($id); - if ($row = $query->execute()->fetch()) { + $result = $query->execute(); + $row = $result->fetch(); + $result->closeCursor(); + + if ($row) { [$sum, $min] = array_values($row); $sum = 0 + $sum; $min = 0 + $min; @@ -920,9 +948,13 @@ class Cache implements ICache { ->from('filecache') ->whereStorageId(); + $result = $query->execute(); + $files = $result->fetchAll(\PDO::FETCH_COLUMN); + $result->closeCursor(); + return array_map(function ($id) { return (int)$id; - }, $query->execute()->fetchAll(\PDO::FETCH_COLUMN)); + }, $files); } /** @@ -942,7 +974,11 @@ class Cache implements ICache { ->andWhere($query->expr()->lt('size', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT))) ->orderBy('fileid', 'DESC'); - return $query->execute()->fetchColumn(); + $result = $query->execute(); + $path = $result->fetchColumn(); + $result->closeCursor(); + + return $path; } /** @@ -958,7 +994,10 @@ class Cache implements ICache { ->whereStorageId() ->whereFileId($id); - $path = $query->execute()->fetchColumn(); + $result = $query->execute(); + $path = $result->fetchColumn(); + $result->closeCursor(); + return $path === false ? null : $path; } @@ -976,7 +1015,12 @@ class Cache implements ICache { $query->select('path', 'storage') ->from('filecache') ->where($query->expr()->eq('fileid', $query->createNamedParameter($id, IQueryBuilder::PARAM_INT))); - if ($row = $query->execute()->fetch()) { + + $result = $query->execute(); + $row = $result->fetch(); + $result->closeCursor(); + + if ($row) { $numericId = $row['storage']; $path = $row['path']; } else { diff --git a/lib/private/Files/Cache/HomeCache.php b/lib/private/Files/Cache/HomeCache.php index e66ed7d9722..f7fc806456d 100644 --- a/lib/private/Files/Cache/HomeCache.php +++ b/lib/private/Files/Cache/HomeCache.php @@ -72,6 +72,7 @@ class HomeCache extends Cache { $this->update($id, ['size' => $totalSize]); } } + $result->closeCursor(); } return $totalSize; } diff --git a/lib/private/Files/Cache/StorageGlobal.php b/lib/private/Files/Cache/StorageGlobal.php index 26a7be24634..8bf37514b8b 100644 --- a/lib/private/Files/Cache/StorageGlobal.php +++ b/lib/private/Files/Cache/StorageGlobal.php @@ -61,6 +61,7 @@ class StorageGlobal { while ($row = $result->fetch()) { $this->cache[$row['id']] = $row; } + $result->closeCursor(); } /** @@ -74,7 +75,10 @@ class StorageGlobal { ->from('storages') ->where($builder->expr()->eq('id', $builder->createNamedParameter($storageId))); - $row = $query->execute()->fetch(); + $result = $query->execute(); + $row = $result->fetch(); + $result->closeCursor(); + if ($row) { $this->cache[$storageId] = $row; } diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php index 6fa9cd96bfe..441a4a45326 100644 --- a/lib/private/Files/Config/UserMountCache.php +++ b/lib/private/Files/Config/UserMountCache.php @@ -235,7 +235,9 @@ class UserMountCache implements IUserMountCache { ->innerJoin('m', 'filecache', 'f', $builder->expr()->eq('m.root_id', 'f.fileid')) ->where($builder->expr()->eq('user_id', $builder->createPositionalParameter($user->getUID()))); - $rows = $query->execute()->fetchAll(); + $result = $query->execute(); + $rows = $result->fetchAll(); + $result->closeCursor(); $this->mountsForUsers[$user->getUID()] = array_filter(array_map([$this, 'dbRowToMountInfo'], $rows)); } @@ -258,7 +260,9 @@ class UserMountCache implements IUserMountCache { $query->andWhere($builder->expr()->eq('user_id', $builder->createPositionalParameter($user))); } - $rows = $query->execute()->fetchAll(); + $result = $query->execute(); + $rows = $result->fetchAll(); + $result->closeCursor(); return array_filter(array_map([$this, 'dbRowToMountInfo'], $rows)); } @@ -274,7 +278,9 @@ class UserMountCache implements IUserMountCache { ->innerJoin('m', 'filecache', 'f', $builder->expr()->eq('m.root_id', 'f.fileid')) ->where($builder->expr()->eq('root_id', $builder->createPositionalParameter($rootFileId, IQueryBuilder::PARAM_INT))); - $rows = $query->execute()->fetchAll(); + $result = $query->execute(); + $rows = $result->fetchAll(); + $result->closeCursor(); return array_filter(array_map([$this, 'dbRowToMountInfo'], $rows)); } @@ -291,7 +297,10 @@ class UserMountCache implements IUserMountCache { ->from('filecache') ->where($builder->expr()->eq('fileid', $builder->createNamedParameter($fileId, IQueryBuilder::PARAM_INT))); - $row = $query->execute()->fetch(); + $result = $query->execute(); + $row = $result->fetch(); + $result->closeCursor(); + if (is_array($row)) { $this->cacheInfoCache[$fileId] = [ (int)$row['storage'], diff --git a/lib/private/Files/Node/Folder.php b/lib/private/Files/Node/Folder.php index 668893f6549..134455dd945 100644 --- a/lib/private/Files/Node/Folder.php +++ b/lib/private/Files/Node/Folder.php @@ -528,7 +528,11 @@ class Folder extends Node implements \OCP\Files\Folder { ->setMaxResults($limit) ->setFirstResult($offset); - return $query->execute()->fetchAll(); + $result = $query->execute(); + $rows = $result->fetchAll(); + $result->closeCursor(); + + return $rows; } private function recentParse($result, $mountMap, $mimetypeLoader) { diff --git a/lib/private/Files/Type/Loader.php b/lib/private/Files/Type/Loader.php index d128bc724b6..489ed65c228 100644 --- a/lib/private/Files/Type/Loader.php +++ b/lib/private/Files/Type/Loader.php @@ -123,7 +123,10 @@ class Loader implements IMimeTypeLoader { ->where( $fetch->expr()->eq('mimetype', $fetch->createNamedParameter($mimetype) )); - $row = $fetch->execute()->fetch(); + + $result = $fetch->execute(); + $row = $result->fetch(); + $result->closeCursor(); if (!$row) { throw new \Exception("Failed to get mimetype id for $mimetype after trying to store it"); @@ -141,7 +144,10 @@ class Loader implements IMimeTypeLoader { $qb = $this->dbConnection->getQueryBuilder(); $qb->select('id', 'mimetype') ->from('mimetypes'); - $results = $qb->execute()->fetchAll(); + + $result = $qb->execute(); + $results = $result->fetchAll(); + $result->closeCursor(); foreach ($results as $row) { $this->mimetypes[$row['id']] = $row['mimetype']; |