[Groonga-commit] groonga/groonga at 1071232 [master] logical_table_remove: extract as a method

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Aug 30 16:50:24 JST 2016


Kouhei Sutou	2016-08-30 16:50:24 +0900 (Tue, 30 Aug 2016)

  New Revision: 1071232a1b5246be44b69f2effaaceb06892fca8
  https://github.com/groonga/groonga/commit/1071232a1b5246be44b69f2effaaceb06892fca8

  Message:
    logical_table_remove: extract as a method

  Modified files:
    plugins/sharding/logical_table_remove.rb

  Modified: plugins/sharding/logical_table_remove.rb (+40 -34)
===================================================================
--- plugins/sharding/logical_table_remove.rb    2016-08-30 16:19:20 +0900 (147b1a4)
+++ plugins/sharding/logical_table_remove.rb    2016-08-30 16:50:24 +0900 (cc7c1c3)
@@ -66,6 +66,45 @@ module Groonga
         end
       end
 
+      def collect_referenced_table_ids(shard, table)
+        return [] unless @dependent
+
+        if table
+          columns = table.columns
+        else
+          prefix = "#{shard.table_name}."
+          columns = []
+          context.database.each_name(:prefix => prefix) do |column_name|
+            column = context[column_name]
+            columns << column
+            context.clear_error if column.nil?
+          end
+        end
+
+        referenced_table_ids = []
+        columns.each do |column|
+          next if column.nil?
+          range = column.range
+          case range
+          when nil
+            context.clear_error
+          when Table
+            referenced_table_ids << range.id
+            indexes = range.indexes
+            context.clear_error
+            indexes.each do |index_info|
+              referenced_table_ids << index_info.index.domain.id
+            end
+          end
+          indexes = column.indexes
+          context.clear_error
+          indexes.each do |index_info|
+            referenced_table_ids << index_info.index.domain.id
+          end
+        end
+        referenced_table_ids
+      end
+
       def remove_table(shard, table)
         if table.nil?
           unless @force
@@ -82,40 +121,7 @@ module Groonga
           context.clear_error
         end
 
-        referenced_table_ids = []
-        if @dependent
-          if table
-            columns = table.columns
-          else
-            prefix = "#{shard.table_name}."
-            columns = []
-            context.database.each_name(:prefix => prefix) do |column_name|
-              column = context[column_name]
-              columns << column
-              context.clear_error if column.nil?
-            end
-          end
-          columns.each do |column|
-            next if column.nil?
-            range = column.range
-            case range
-            when nil
-              context.clear_error
-            when Table
-              referenced_table_ids << range.id
-              indexes = range.indexes
-              context.clear_error
-              indexes.each do |index_info|
-                referenced_table_ids << index_info.index.domain.id
-              end
-            end
-            indexes = column.indexes
-            context.clear_error
-            indexes.each do |index_info|
-              referenced_table_ids << index_info.index.domain.id
-            end
-          end
-        end
+        referenced_table_ids = collect_referenced_table_ids(shard, table)
 
         if table.nil?
           remove_table_force(shard.table_name)
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index