Class: Axiom::Optimizer::Algebra::Projection::ExtensionOperand
- Inherits:
-
Axiom::Optimizer::Algebra::Projection
- Object
- Axiom::Optimizer
- Relation::Operation::Unary
- Axiom::Optimizer::Algebra::Projection
- Axiom::Optimizer::Algebra::Projection::ExtensionOperand
- Defined in:
- lib/axiom/optimizer/algebra/projection.rb
Overview
Optimize when the operand is an Extension
Constant Summary
Constants inherited from Axiom::Optimizer
Instance Attribute Summary
Attributes inherited from Relation::Operation::Unary
Attributes included from Function::Unary
Attributes inherited from Axiom::Optimizer
Instance Method Summary collapse
-
#optimizable? ⇒ Boolean
private
Test if the operand is an Extension.
-
#optimize ⇒ Projection
private
Extend the operand with the attributes not projected away.
Methods inherited from Relation::Operation::Unary
Methods included from Function::Unary
Methods inherited from Axiom::Optimizer
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 Extension
52 53 54 55 |
# File 'lib/axiom/optimizer/algebra/projection.rb', line 52 def optimizable? operand.kind_of?(Axiom::Algebra::Extension) && operand.extensions != new_extensions end |
#optimize ⇒ Projection
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.
Extend the operand with the attributes not projected away
This avoid performing an extension when the new attributes are immediately removed.
65 66 67 |
# File 'lib/axiom/optimizer/algebra/projection.rb', line 65 def optimize extend_operand.project(operation.header) end |