Skip to content

Commit

Permalink
select the fileid first when looking for incomplete files
Browse files Browse the repository at this point in the history
this seems to improve mariadbs index selection

Signed-off-by: Robin Appelman <[email protected]>
  • Loading branch information
icewind1991 committed Aug 14, 2023
1 parent 2ea6c53 commit 658aed2
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 658aed2

Please sign in to comment.