Navigation Menu

Skip to content

Commit

Permalink
sharding: move cache key related code to DynamicColumns
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Oct 31, 2017
1 parent 7fc57ec commit fa566d7
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 27 deletions.
32 changes: 26 additions & 6 deletions plugins/sharding/dynamic_columns.rb
Expand Up @@ -48,16 +48,36 @@ def each_output(&block)
@output_contexts.each(&block)
end

def each(&block)
each_initial(&block)
each_filtered(&block)
each_output(&block)
end

def close
@initial_contexts.each do |context|
context.close
end
@filtered_contexts.each do |context|
each do |context|
context.close
end
@output_contexts.each do |context|
context.close
end

def cache_key
key = ""
[
@initial_contexts,
@filtered_contexts,
@output_contexts,
].each do |contexts|
contexts.sort_by(&:label).each do |context|
key << "#{context.label}\0"
key << "#{context.stage}\0"
key << "#{context.type}\0"
key << "#{context.flags}\0"
key << "#{context.value}\0"
key << "#{context.window_sort_keys.join(',')}\0"
key << "#{context.window_group_keys.join(',')}\0"
end
end
key
end
end

Expand Down
23 changes: 2 additions & 21 deletions plugins/sharding/logical_select.rb
Expand Up @@ -97,32 +97,13 @@ def cache_key(input)
key << "#{drilldown.calc_types}\0"
key << "#{drilldown.calc_target_name}\0"
key << "#{drilldown.filter}\0"
cache_key_dynamic_columns(key, drilldown.dynamic_columns)
key << drilldown.dynamic_columns.cache_key
end
dynamic_columns = DynamicColumns.parse(input)
cache_key_dynamic_columns(key, dynamic_columns)
key << dynamic_columns.cache_key
key
end

def cache_key_dynamic_columns(key, dynamic_columns)
[
:initial,
:filtered,
:output
].each do |stage|
target_dynamic_columns = dynamic_columns.__send__("each_#{stage}").to_a
target_dynamic_columns.sort_by(&:label).each do |dynamic_column|
key << "#{dynamic_column.label}\0"
key << "#{dynamic_column.stage}\0"
key << "#{dynamic_column.type}\0"
key << "#{dynamic_column.flags}\0"
key << "#{dynamic_column.value}\0"
key << "#{dynamic_column.window_sort_keys.join(',')}\0"
key << "#{dynamic_column.window_group_keys.join(',')}\0"
end
end
end

def write_records(writer, context)
result_sets = context.result_sets

Expand Down

0 comments on commit fa566d7

Please sign in to comment.