Sha256: 78a754a22a2966543f88db2ed86991b19b4a3e708a3cbf7ebc39f3b9eadda495
Contents?: true
Size: 1.73 KB
Versions: 2
Compression:
Stored size: 1.73 KB
Contents
# encoding: utf-8 module Veritas class Optimizer module Algebra # Abstract base class representing Difference optimizations class Difference < Relation::Operation::Binary # Optimize when operands are equal class EqualOperands < self include Relation::Operation::Binary::EqualOperands # A Difference with equal operands is empty # # @return [Relation::Empty] # # @api private def optimize operation = self.operation Veritas::Relation::Empty.new(operation.header, operation) end end # class EqualOperands # Optimize when the left operand is empty class EmptyLeft < self include Relation::Operation::Binary::EmptyLeft # A Difference with an empty left operand is empty # # @return [Relation::Empty] # # @api private def optimize left end end # class EmptyLeft # Optimize when the right operand is empty class EmptyRight < self include Relation::Operation::Binary::EmptyRight # A Difference with an empty right operand is equivalent to the left # # @return [Relation] # # @api private def optimize left end end # class EmptyRight Veritas::Algebra::Difference.optimizer = chain( EqualOperands, EmptyLeft, EmptyRight, LeftOrderOperand, RightOrderOperand, MaterializedOperands, UnoptimizedOperands ) end # class Difference end # module Algebra end # class Optimizer end # module Veritas
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
veritas-optimizer-0.0.7 | lib/veritas/optimizer/algebra/difference.rb |
veritas-optimizer-0.0.6 | lib/veritas/optimizer/algebra/difference.rb |