Navigation Menu

Skip to content

Commit

Permalink
groonga-client: support split load
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Apr 20, 2015
1 parent 83776be commit 1d99e39
Showing 1 changed file with 27 additions and 5 deletions.
32 changes: 27 additions & 5 deletions bin/groonga-client
Expand Up @@ -86,17 +86,39 @@ parser.on_command do |command|
run_command(client, command)
end

split_load = true
parser.on_load_start do |command|
if command[:values]
split_load = false
else
split_load = true
end
end
parser.on_load_columns do |command, columns|
command[:columns] ||= columns.join(",")
end
values = []
parser.on_load_value do |_, value|
values << value
consume_values = lambda do |load_command|
return if values.empty?

load_command[:values] = Yajl::Encoder.encode(values)
run_command(client, load_command)
load_command.original_source.clear
values.clear
load_command[:values] = nil
end
parser.on_load_value do |command, value|
if split_load
values << value
consume_values.call(command) if values.size == 10000
end
end
parser.on_load_complete do |command|
command[:values] ||= Yajl::Encoder.encode(values)
run_command(client, command)
values.clear
if split_load
consume_values.call(command)
else
run_command(client, command)
end
end

if command_file_paths.empty?
Expand Down

0 comments on commit 1d99e39

Please sign in to comment.