14819: Merge branch 'master' into 14819-arvados-jobs-on-stretch
[arvados.git] / services / api / db / migrate / 20141208174653_collection_file_names.rb
index 8cccbba1923e566d47a119cfd19516437222e525..50ab30c39a89b4955f7cc943502211d2ec7112d9 100644 (file)
@@ -1,3 +1,7 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 class CollectionFileNames < ActiveRecord::Migration
   include CurrentApiClient
 
@@ -5,17 +9,11 @@ class CollectionFileNames < ActiveRecord::Migration
     add_column :collections, :file_names, :string, :limit => 2**13
 
     act_as_system_user do
-      Collection.all.each do |c|
-        if c.manifest_text
-          file_names = []
-          c.manifest_text.split.each do |part|
-            file_name = part.rpartition(':')[-1]
-            file_names << file_name if file_name != '.'
-          end
-
-          c.file_names = file_names.uniq.join(" ")[0,2**13]
-          c.save!
-        end
+      Collection.find_each(batch_size: 20) do |c|
+        file_names = c.manifest_files
+        ActiveRecord::Base.connection.execute "UPDATE collections
+                    SET file_names = #{ActiveRecord::Base.connection.quote(file_names)}
+                    WHERE uuid = '#{c.uuid}'"
       end
     end
   end