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