Merge pull request #60345 from nextcloud/backport/59753/stable33

[stable33] perf(share): Remove useless order by id
This commit is contained in:
Benjamin Gaussorgues 2026-05-20 10:19:07 +02:00 committed by GitHub
commit eeb9f931e3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 9 deletions

View file

@ -381,8 +381,7 @@ class DefaultShareProvider implements
], IQueryBuilder::PARAM_INT_ARRAY)
)
)
->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
->orderBy('id');
->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
$cursor = $qb->executeQuery();
while ($data = $cursor->fetch()) {
@ -666,8 +665,6 @@ class DefaultShareProvider implements
)
);
$qb->orderBy('id');
$shares = [];
$chunks = array_chunk($childMountRootIds, 1000);
@ -725,7 +722,9 @@ class DefaultShareProvider implements
}
$qb->setFirstResult($offset);
$qb->orderBy('id');
if ($offset !== 0 || $limit !== -1) {
$qb->orderBy('id');
}
$cursor = $qb->executeQuery();
$shares = [];
@ -794,7 +793,6 @@ class DefaultShareProvider implements
->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($path->getId())))
->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK], IQueryBuilder::PARAM_INT_ARRAY)))
->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
->orderBy('id', 'ASC')
->executeQuery();
$shares = [];
@ -887,8 +885,10 @@ class DefaultShareProvider implements
->leftJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'))
->leftJoin('f', 'storages', 'st', $qb->expr()->eq('f.storage', 'st.numeric_id'));
// Order by id
$qb->orderBy('s.id');
if ($offset !== 0 || $limit !== -1) {
// Order by id
$qb->orderBy('s.id');
}
// Set limit and offset
if ($limit !== -1) {
@ -957,9 +957,12 @@ class DefaultShareProvider implements
->from('share', 's')
->leftJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'))
->leftJoin('f', 'storages', 'st', $qb->expr()->eq('f.storage', 'st.numeric_id'))
->orderBy('s.id')
->setFirstResult(0);
if ($offset !== 0 || $limit !== -1) {
$qb->orderBy('s.id');
}
if ($limit !== -1) {
$qb->setMaxResults($limit - count($shares));
}

View file

@ -660,6 +660,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$share->method('getId')->willReturn($id);
$children = $this->provider->getChildren($share);
usort($children, fn (IShare $a, IShare $b) => $a->getId() <=> $b->getId());
$this->assertCount(2, $children);
@ -2640,6 +2641,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame(IShare::TYPE_USER, $file_shares[0]->getShareType());
$folder_shares = $result[$folder2->getId()];
usort($folder_shares, fn (IShare $a, IShare $b) => $a->getId() <=> $b->getId());
$this->assertCount(2, $folder_shares);
$this->assertSame($folder2->getId(), $folder_shares[0]->getNodeId());
$this->assertSame($folder2->getId(), $folder_shares[1]->getNodeId());
@ -3100,6 +3102,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
->willReturn(1);
$shares = $this->provider->getSharesByPath($node);
usort($shares, fn (IShare $a, IShare $b) => $a->getId() <=> $b->getId());
$this->assertCount(3, $shares);
$this->assertEquals($id1, $shares[0]->getId());