Class: Axiom::Optimizer::Relation::Operation::Reverse::SortedOperand

Inherits:
Axiom::Optimizer::Relation::Operation::Reverse show all
Defined in:
lib/axiom/optimizer/relation/operation/reverse.rb

Overview

Optimize when the operand is an Sorted

Constant Summary

Constants inherited from Axiom::Optimizer

Identity, VERSION

Instance Attribute Summary

Attributes inherited from Unary

#header

Attributes included from Function::Unary

#operand

Attributes inherited from Axiom::Optimizer

#operation

Instance Method Summary collapse

Methods inherited from Unary

#initialize

Methods included from Function::Unary

#initialize

Methods inherited from Axiom::Optimizer

chain, #initialize

Constructor Details

This class inherits a constructor from Axiom::Optimizer::Relation::Operation::Unary

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 operand is an Sorted

Returns:

  • (Boolean)


42
43
44
# File 'lib/axiom/optimizer/relation/operation/reverse.rb', line 42

def optimizable?
  operand.kind_of?(Axiom::Relation::Operation::Sorted)
end

#optimizeSorted

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.

Flatten Reverse operation and Sorted operand into an Sorted

Returns:



51
52
53
# File 'lib/axiom/optimizer/relation/operation/reverse.rb', line 51

def optimize
  operand.operand.sort_by { operation.directions }
end