use a generator instead of fetching all rows at once

Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
Robin Appelman 2017-07-12 13:37:42 +02:00
parent 64d0a0ffc9
commit 95e17a8245
No known key found for this signature in database
GPG Key ID: CBCA68FBAEBF98C9
1 changed files with 9 additions and 2 deletions

View File

@ -60,7 +60,10 @@ class RepairInvalidPaths implements IRepairStep {
))
->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 @@ class RepairInvalidPaths implements IRepairStep {
}
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 @@ class RepairInvalidPaths implements IRepairStep {
$this->update($entry['fileid'], $calculatedPath);
}
}
return count($entries);
$this->connection->commit();
return $count;
}
public function run(IOutput $output) {