diff --git a/atom b/atom index 4a13055..b3c7a9e 100755 --- a/atom +++ b/atom @@ -339,21 +339,36 @@ updateMimes removeObsoleteFiles echo ' - SELECT id, - filename + SELECT COUNT(id) FROM destination_files - WHERE source_file_id is NULL; + WHERE source_file_id is NULL;' >&3 - SELECT "AtOM:NoMoreFiles"; -' >&3 +read -u4 removecount +until (( ${#removefile[@]} == removecount )) +do + echo ' + SELECT id, + filename + FROM destination_files + WHERE source_file_id is NULL + LIMIT 500 OFFSET '${#removefile[@]}'; + + SELECT "AtOM:NoMoreFiles"; + ' >&3 + + read -u4 line + until [[ $line == AtOM:NoMoreFiles ]] + do + removefile[${line%::AtOM:SQL:Sep::*}]="${line%::AtOM:SQL:Sep::*}" + read -u4 line + done +done deleted=0 removed=0 -read -u4 line -until [[ $line == AtOM:NoMoreFiles ]] +for id in ${!removefile[@]} do - id=${line%::AtOM:SQL:Sep::*} - filename=${line#*::AtOM:SQL:Sep::} + filename=${removefile[id]} if [ -n "$filename" ] then if rm -f "$filename" @@ -365,9 +380,9 @@ do Delete destination_files <<<"id = $id" (( ++removed )) fi - read -u4 line done echo "Suppressed $deleted files, $removed removed from database" +unset removecount deleted removed removefile updateTags