Skip to content

Commit a7e8afb

Browse files
miaulalalasusnux
authored andcommitted
fix: chunk delete in query
Signed-off-by: Anna Larch <[email protected]>
1 parent 8a4d7d2 commit a7e8afb

1 file changed

Lines changed: 7 additions & 8 deletions

File tree

lib/Data.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -395,10 +395,6 @@ public function deleteActivities($conditions): void {
395395

396396
$deleteQuery->andWhere($deleteQuery->expr()->comparison($column, $operation, $deleteQuery->createNamedParameter($value)));
397397
}
398-
399-
400-
401-
402398
// Dont use chunked delete - let the DB handle the large row count natively
403399
$deleteQuery->executeStatement();
404400
}
@@ -495,7 +491,7 @@ private function deleteActivitiesForMySQL(array $conditions): void {
495491
$query->where($query->expr()->comparison($column, $operation, $query->createNamedParameter($value)));
496492
}
497493

498-
$query->setMaxResults(10000);
494+
$query->setMaxResults(50000);
499495
$result = $query->executeQuery();
500496
$count = $result->rowCount();
501497
if ($count === 0) {
@@ -506,12 +502,15 @@ private function deleteActivitiesForMySQL(array $conditions): void {
506502
}, $result->fetchAll(\PDO::FETCH_NUM));
507503
$result->closeCursor();
508504

505+
$queryResult = 0;
509506
$deleteQuery = $this->connection->getQueryBuilder();
510507
$deleteQuery->delete('activity');
511508
$deleteQuery->where($deleteQuery->expr()->in('activity_id', $deleteQuery->createParameter('ids'), IQueryBuilder::PARAM_INT_ARRAY));
512-
$deleteQuery->setParameter('ids', $ids, IQueryBuilder::PARAM_INT_ARRAY);
513-
$queryResult = $deleteQuery->executeStatement();
514-
if ($queryResult === 10000) {
509+
foreach(array_chunk($ids, 1000) as $chunk) {
510+
$deleteQuery->setParameter('ids', $chunk, IQueryBuilder::PARAM_INT_ARRAY);
511+
$queryResult += $deleteQuery->executeStatement();
512+
}
513+
if($queryResult === 50000) {
515514
$this->deleteActivitiesForMySQL($conditions);
516515
}
517516
}

0 commit comments

Comments
 (0)