class Axiom::Optimizer::Algebra::Summarization

Abstract base class representing Summarization optimizations

Attributes

summarize_per[R]

The optimized summarize_per relation

@return [Relation]

@api private

summarizers[R]

The optimized summarizers

@return [Hash{Attribute => Function}]

@api private

Public Class Methods

new(*) click to toggle source

Initialize a Summarization optimizer

@return [undefined]

@api private

Calls superclass method
# File lib/axiom/optimizer/algebra/summarization.rb, line 29
def initialize(*)
  super
  @summarize_per = optimize_summarize_per
  @summarizers   = optimize_summarizers
end

Private Instance Methods

optimize_summarize_per() click to toggle source

Optimize the summarize per relation

@return [Relation]

@api private

# File lib/axiom/optimizer/algebra/summarization.rb, line 42
def optimize_summarize_per
  operation.summarize_per.optimize
end
optimize_summarizers() click to toggle source

Optimize the summarizers

@return [Hash{Attribute => Function}]

@api private

# File lib/axiom/optimizer/algebra/summarization.rb, line 51
def optimize_summarizers
  Function.optimize_functions(operation.summarizers)
end
wrap_operand(operand = operand.operand) click to toggle source

Wrap the operand’s operand in a Summarization

@return [Summarization]

@api private

# File lib/axiom/optimizer/algebra/summarization.rb, line 60
def wrap_operand(operand = operand.operand)
  operand.summarize(summarize_per, summarizers)
end