Skip to content

Commit

Permalink
Merge pull request #38714 from nextcloud/cache-imcomplete-id-first
Browse files Browse the repository at this point in the history
select the fileid first when looking for incomplete files
  • Loading branch information
icewind1991 authored Aug 14, 2023
2 parents 054b513 + 658aed2 commit aefc3f8
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions lib/private/Files/Cache/Cache.php
Original file line number Diff line number Diff line change
Expand Up @@ -1012,24 +1012,28 @@ public function getAll() {
* @return string|false the path of the folder or false when no folder matched
*/
public function getIncomplete() {
// we select the fileid here first instead of directly selecting the path since this helps mariadb/mysql
// to use the correct index.
// The overhead of this should be minimal since the cost of selecting the path by id should be much lower
// than the cost of finding an item with size < 0
$query = $this->getQueryBuilder();
$query->select('path')
$query->select('fileid')
->from('filecache')
->whereStorageId($this->getNumericStorageId())
->andWhere($query->expr()->lt('size', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)))
->orderBy('fileid', 'DESC')
->setMaxResults(1);

$result = $query->execute();
$path = $result->fetchOne();
$id = $result->fetchOne();
$result->closeCursor();

if ($path === false) {
if ($id === false) {
return false;
}

// Make sure Oracle does not continue with null for empty strings
return (string)$path;
$path = $this->getPathById($id);
return $path ?? false;
}

/**
Expand Down

0 comments on commit aefc3f8

Please sign in to comment.