Sha256: 0c7215b42c9e23b99ae9a351b5c1445794386c7684ffca230f515fefefd0194d

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

module Veritas
  class Optimizer
    module Algebra

      # Abstract base class representing Summarization optimizations
      class Summarization < Relation::Operation::Unary

        # Optimize when operand is optimizable
        class UnoptimizedOperand < self

          # Test if the operand is unoptimized
          #
          # @return [Boolean]
          #
          # @api private
          def optimizable?
            !operand.equal?(operation.operand)
          end

          # Return a Summarization with an optimized operand
          #
          # @return [Rename]
          #
          # @api private
          def optimize
            operation = self.operation
            operation.class.new(operand, operation.summarize_by, operation.summarizers)
          end

        end # class UnoptimizedOperand

        Veritas::Algebra::Summarization.optimizer = chain(
          MaterializedOperand,
          UnoptimizedOperand
        )

      end # class Summarization
    end # module Algebra
  end # class Optimizer
end # module Veritas

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
veritas-0.0.1 lib/veritas/optimizer/algebra/summarization.rb