Class: Veritas::Optimizer::Algebra::Restriction::CombinationOperand

Inherits:
Veritas::Optimizer::Algebra::Restriction show all
Defined in:
lib/veritas/optimizer/algebra/restriction.rb

Overview

Optimize when the operand is a combine operation

Direct Known Subclasses

JoinOperand, ProductOperand

Constant Summary

Constants inherited from Veritas::Optimizer

Noop, VERSION

Instance Attribute Summary

Attributes inherited from Veritas::Optimizer::Algebra::Restriction

#predicate

Attributes inherited from Relation::Operation::Unary

#header

Attributes included from Function::Unary

#operand

Attributes inherited from Veritas::Optimizer

#operation

Instance Method Summary collapse

Methods inherited from Veritas::Optimizer::Algebra::Restriction

#initialize

Methods inherited from Relation::Operation::Unary

#initialize

Methods included from Function::Unary

#initialize

Methods inherited from Veritas::Optimizer

chain, #initialize

Constructor Details

This class inherits a constructor from Veritas::Optimizer::Algebra::Restriction

Instance Method Details

#optimizable?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Test if the restriction is commutative

Returns:

  • (Boolean)


149
150
151
# File 'lib/veritas/optimizer/algebra/restriction.rb', line 149

def optimizable?
  restriction_commutative?
end

#optimizeRestriction

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Distribute the restriction across the operation and apply to the operands

Returns:



158
159
160
# File 'lib/veritas/optimizer/algebra/restriction.rb', line 158

def optimize
  left_restriction.send(relation_method, right_restriction).restrict { partition.remainder }
end