diff -r a/typo3/sysext/install/Classes/Updates/SeparateSysHistoryFromSysLogUpdate.php b/typo3/sysext/install/Classes/Updates/SeparateSysHistoryFromSysLogUpdate.php 97,110c97,99 < // update "modify" statements (= decoupling) < $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('sys_history'); < $queryBuilder = $connection->createQueryBuilder(); < $rows = $queryBuilder < ->select('sys_history.uid AS history_uid', 'sys_history.history_data', 'sys_log.*') < ->from('sys_history') < ->leftJoin( < 'sys_history', < 'sys_log', < 'sys_log', < $queryBuilder->expr()->eq('sys_history.sys_log_uid', $queryBuilder->quoteIdentifier('sys_log.uid')) < ) < ->execute() < ->fetchAll(); --- > $begin = 0; > $step = 1000; > while ($begin < $count) { 112,135c101,142 < foreach ($rows as $row) { < $logData = $row['log_data'] !== null ? unserialize($row['log_data'], ['allowed_classes' => false]) : []; < $updateData = [ < 'actiontype' => RecordHistoryStore::ACTION_MODIFY, < 'usertype' => 'BE', < 'userid' => $row['userid'], < 'sys_log_uid' => 0, < 'history_data' => json_encode($row['history_data'] !== null ? unserialize($row['history_data'], ['allowed_classes' => false]) : []), < 'originaluserid' => empty($logData['originalUser']) ? null : $logData['originalUser'] < ]; < $connection->update( < 'sys_history', < $updateData, < ['uid' => (int)$row['history_uid']], < ['uid' => Connection::PARAM_INT] < ); < // Store information about history entry in sys_log table < $logData['history'] = $row['history_uid']; < $connection->update( < 'sys_log', < ['log_data' => serialize($logData)], < ['uid' => (int)$row['uid']], < ['uid' => Connection::PARAM_INT] < ); --- > $queryBuilder = $connection->createQueryBuilder(); > $queryBuilder = $queryBuilder > ->select('sys_history.uid AS history_uid', 'sys_history.history_data', 'sys_log.*') > ->from('sys_history') > ->leftJoin( > 'sys_history', > 'sys_log', > 'sys_log', > $queryBuilder->expr()->eq('sys_history.sys_log_uid', $queryBuilder->quoteIdentifier('sys_log.uid')) > ); > > $queryBuilder->setFirstResult($begin); > $queryBuilder->setMaxResults($step); > > $rows = $queryBuilder->execute()->fetchAll(); > $begin += $step; > > foreach ($rows as $row) { > $logData = $row['log_data'] !== null ? unserialize($row['log_data'], ['allowed_classes' => false]) : []; > $updateData = [ > 'actiontype' => RecordHistoryStore::ACTION_MODIFY, > 'usertype' => 'BE', > 'userid' => $row['userid'], > 'sys_log_uid' => 0, > 'history_data' => json_encode($row['history_data'] !== null ? unserialize($row['history_data'], ['allowed_classes' => false]) : []), > 'originaluserid' => empty($logData['originalUser']) ? null : $logData['originalUser'] > ]; > $connection->update( > 'sys_history', > $updateData, > ['uid' => (int)$row['history_uid']], > ['uid' => Connection::PARAM_INT] > ); > // Store information about history entry in sys_log table > $logData['history'] = $row['history_uid']; > $connection->update( > 'sys_log', > ['log_data' => serialize($logData)], > ['uid' => (int)$row['uid']], > ['uid' => Connection::PARAM_INT] > ); > }