summaryrefslogtreecommitdiffstats
path: root/storage/mroonga/vendor/groonga/plugins/sharding/logical_shard_list.rb
blob: b8ef3f765207965221c03cf98e82ce9ca97e079e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module Groonga
  module Sharding
    class LogicalShardListCommand < Command
      register("logical_shard_list",
               [
                 "logical_table",
               ])

      def run_body(input)
        enumerator = LogicalEnumerator.new("logical_shard_list",
                                           input,
                                           :require_shard_key => false)
        shard_names = enumerator.collect do |current_shard, shard_range|
          current_shard.table_name
        end

        writer.array("shards", shard_names.size) do
          shard_names.each do |shard_name|
            writer.map("shard", 1) do
              writer.write("name")
              writer.write(shard_name)
            end
          end
        end
      end
    end
  end
end