Merge pull request #59902 from nextcloud/preload-storage-chukn

fix: chunk storage ids when preload storage info
This commit is contained in:
Benjamin Gaussorgues 2026-05-04 09:20:00 +02:00 committed by GitHub
commit f3ae8ab9b0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 12 deletions

View file

@ -22,6 +22,7 @@ use OCP\Migration\SimpleMigrationStep;
#[AddColumn(table: 'calendars', name: 'default_alarm_pday', type: ColumnType::INTEGER)]
#[AddColumn(table: 'calendars', name: 'default_alarm_fday', type: ColumnType::INTEGER)]
class Version1039Date20260408000000 extends SimpleMigrationStep {
#[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();

View file

@ -42,21 +42,23 @@ class StorageGlobal {
$builder = $this->connection->getQueryBuilder();
$query = $builder->select(['id', 'numeric_id', 'available', 'last_checked'])
->from('storages')
->where($builder->expr()->in('id', $builder->createNamedParameter(array_values($storageIds), IQueryBuilder::PARAM_STR_ARRAY)));
->where($builder->expr()->in('id', $builder->createParameter('ids'), IQueryBuilder::PARAM_STR_ARRAY));
$result = $query->executeQuery();
while (($row = $result->fetch()) !== false) {
$normalizedRow = [
'id' => (string)$row['id'],
'numeric_id' => (int)$row['numeric_id'],
'available' => (bool)$row['available'],
'last_checked' => (int)$row['last_checked'],
];
foreach (array_chunk($storageIds, 1000) as $chunk) {
$query->setParameter('ids', $chunk, IQueryBuilder::PARAM_STR_ARRAY);
$this->cache[$normalizedRow['id']] = $normalizedRow;
$result = $query->executeQuery();
while (($row = $result->fetch()) !== false) {
$normalizedRow = [
'id' => (string)$row['id'],
'numeric_id' => (int)$row['numeric_id'],
'available' => (bool)$row['available'],
'last_checked' => (int)$row['last_checked'],
];
$this->cache[$normalizedRow['id']] = $normalizedRow;
}
}
$result->closeCursor();
}
/**