class Axiom::Optimizer::Algebra::Summarization::EmptyOperand

Optimize when the operand is Empty

Public Class Methods

extension_default(function) click to toggle source

Return the default value for a function

@param [Object] function

@return [Object]

@api private

# File lib/axiom/optimizer/algebra/summarization.rb, line 74
def self.extension_default(function)
  if function.respond_to?(:default)
    function.finalize(function.default)
  end
end

Public Instance Methods

optimizable?() click to toggle source

Test if the operand is empty

@return [Boolean]

@api private

# File lib/axiom/optimizer/algebra/summarization.rb, line 85
def optimizable?
  operand.kind_of?(Axiom::Relation::Empty)
end
optimize() click to toggle source

Return an extended relation with the same headers

@return [Extension]

@api private

# File lib/axiom/optimizer/algebra/summarization.rb, line 94
def optimize
  summarize_per.extend(extensions)
end

Private Instance Methods

extensions() click to toggle source

Return the extensions for the optimized relation

@return [Hash{Attribute => call}]

@api private

# File lib/axiom/optimizer/algebra/summarization.rb, line 105
def extensions
  extensions = {}
  operation.summarizers.each do |attribute, function|
    extensions[attribute] = self.class.extension_default(function)
  end
  extensions
end