From 95e17a8245c39cda0971b747c1174581593142a5 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 12 Jul 2017 13:37:42 +0200 Subject: [PATCH] use a generator instead of fetching all rows at once Signed-off-by: Robin Appelman --- lib/private/Repair/NC13/RepairInvalidPaths.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/private/Repair/NC13/RepairInvalidPaths.php b/lib/private/Repair/NC13/RepairInvalidPaths.php index 076fbb735c8ee..47a007baf5ffd 100644 --- a/lib/private/Repair/NC13/RepairInvalidPaths.php +++ b/lib/private/Repair/NC13/RepairInvalidPaths.php @@ -60,7 +60,10 @@ private function getInvalidEntries() { )) ->where($builder->expr()->neq('f.path', $computedPath)); - return $query->execute()->fetchAll(); + $result = $query->execute(); + while ($row = $result->fetch()) { + yield $row; + } } private function getId($storage, $path) { @@ -103,8 +106,11 @@ private function delete($fileid) { } private function repair() { + $this->connection->beginTransaction(); $entries = $this->getInvalidEntries(); + $count = 0; foreach ($entries as $entry) { + $count++; $calculatedPath = $entry['parent_path'] . '/' . $entry['name']; if ($newId = $this->getId($entry['storage'], $calculatedPath)) { // a new entry with the correct path has already been created, reuse that one and delete the incorrect entry @@ -114,7 +120,8 @@ private function repair() { $this->update($entry['fileid'], $calculatedPath); } } - return count($entries); + $this->connection->commit(); + return $count; } public function run(IOutput $output) {