Class: Veritas::Optimizer::Function::Connective::Disjunction::OptimizableToInclusion

Inherits:
Veritas::Optimizer::Function::Connective::Disjunction show all
Defined in:
lib/veritas/optimizer/function/connective/disjunction.rb

Overview

Optimize when the operands are equality predicates for the same attribute

Constant Summary

Constants inherited from Veritas::Optimizer

Noop, VERSION

Instance Attribute Summary

Attributes included from Binary

#left, #right

Attributes inherited from Veritas::Optimizer

#operation

Instance Method Summary collapse

Methods included from Binary

#initialize

Methods inherited from Veritas::Optimizer

chain, #initialize

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 operands are equality predicates for the same attribute

Returns:

  • (Boolean)


65
66
67
# File 'lib/veritas/optimizer/function/connective/disjunction.rb', line 65

def optimizable?
  equality_with_same_attributes?
end

#optimizeInclusion

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.

Return an Inclusion for an attribute having a set of values

Returns:

  • (Inclusion)


74
75
76
77
# File 'lib/veritas/optimizer/function/connective/disjunction.rb', line 74

def optimize
  left = self.left
  Veritas::Function::Predicate::Inclusion.new(left.left, merged_right_enumerables).optimize
end