diff options
Diffstat (limited to '')
-rw-r--r-- | storage/mroonga/vendor/groonga/plugins/sharding/logical_parameters.rb | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/storage/mroonga/vendor/groonga/plugins/sharding/logical_parameters.rb b/storage/mroonga/vendor/groonga/plugins/sharding/logical_parameters.rb new file mode 100644 index 00000000..75ff569b --- /dev/null +++ b/storage/mroonga/vendor/groonga/plugins/sharding/logical_parameters.rb @@ -0,0 +1,44 @@ +module Groonga + module Sharding + class LogicalParametersCommand < Command + register("logical_parameters", + [ + "range_index", + ]) + + def run_body(input) + range_index = parse_range_index(input[:range_index]) + + parameters = [ + :range_index, + ] + writer.map("parameters", parameters.size) do + parameters.each do |name| + writer.write(name.to_s) + writer.write(Parameters.__send__(name)) + end + end + + Parameters.range_index = range_index if range_index + end + + private + def parse_range_index(value) + case value + when nil + nil + when "auto" + :auto + when "always" + :always + when "never" + :never + else + message = "[logical_parameters][range_index] " + message << "must be auto, always or never: <#{value}>" + raise InvalidArgument, message + end + end + end + end +end |