File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 88namespace OC \Repair ;
99
1010use OCP \Constants ;
11+ use OCP \DB \QueryBuilder \IQueryBuilder ;
1112use OCP \IConfig ;
1213use OCP \IDBConnection ;
1314use OCP \Migration \IOutput ;
@@ -67,19 +68,21 @@ private function removeSharesNonExistingParent(IOutput $output): void {
6768
6869 $ deleteQuery = $ this ->connection ->getQueryBuilder ();
6970 $ deleteQuery ->delete ('share ' )
70- ->where ($ deleteQuery ->expr ()->eq ('parent ' , $ deleteQuery ->createParameter ('parent ' )));
71+ ->where ($ deleteQuery ->expr ()->in ('parent ' , $ deleteQuery ->createParameter ('parent ' )));
7172
72- $ deletedInLastChunk = self ::CHUNK_SIZE ;
73- while ($ deletedInLastChunk === self ::CHUNK_SIZE ) {
74- $ deletedInLastChunk = 0 ;
73+ do {
7574 $ result = $ query ->executeQuery ();
76- while ($ row = $ result ->fetch ()) {
77- $ deletedInLastChunk ++;
78- $ deletedEntries += $ deleteQuery ->setParameter ('parent ' , (int )$ row ['parent ' ])
79- ->executeStatement ();
80- }
75+ $ parents = $ result ->fetchFirstColumn ();
8176 $ result ->closeCursor ();
82- }
77+
78+ if ($ parents === []) {
79+ break ;
80+ }
81+
82+ $ deletedInLastChunk = $ deleteQuery ->setParameter ('parent ' , $ parents , IQueryBuilder::PARAM_INT_ARRAY )
83+ ->executeStatement ();
84+ $ deletedEntries += $ deletedInLastChunk ;
85+ } while ($ deletedInLastChunk === self ::CHUNK_SIZE );
8386
8487 if ($ deletedEntries ) {
8588 $ output ->info ('Removed ' . $ deletedEntries . ' shares where the parent did not exist ' );
You can’t perform that action at this time.
0 commit comments