## Uses of Interface
org.modeshape.jcr.query.optimize.OptimizerRule

- Packages that use OptimizerRule
  Package | Description
  --- | ---
  org.modeshape.jcr.query.optimize | This package contains the Optimizer interface, a rule-based optimizer implementation, and library of optimization rules.

- - ### Uses of OptimizerRule in org.modeshape.jcr.query.optimize

    Classes in org.modeshape.jcr.query.optimize that implement OptimizerRule
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AddAccessNodes` An `optimizer rule` that inserts an ACCESS above each SOURCE leaf node in a query plan.
    `class` | `AddIndexes` A rule that adds indexes below `PlanNode.Type.SOURCE` nodes.
    `class` | `AddJoinConditionColumnsToSources` An `OptimizerRule` that adds any missing columns required by the join conditions to the appropriate join source.
    `class` | `AddOrderingColumnsToSources` An `OptimizerRule` that adds any missing columns required by the ordering specifications to the SORT node's PROJECT, and to the appropriate access nodes.
    `class` | `ChooseJoinAlgorithm` An `optimizer rule` that choose the appropriate join algorithm and sets up any prerequisites, based upon the `JoinCondition`.
    `class` | `CopyCriteria` An `optimizer rule` that copies SELECT nodes that apply to one side of a equi-join condition so that they also apply to the other side fo the equi-join condition.
    `class` | `JoinOrder` An optimization rule that ensure that the order of the left and right side of a JOIN match certain join criteria, including `DescendantNodeJoinCondition` and `ChildNodeJoinCondition`.
    `class` | `OrderIndexesByCost`
    `class` | `PushProjects` This rule attempts to ensure the proper location of `PlanNode.Type.PROJECT` nodes.
    `class` | `PushSelectCriteria` An `optimizer rule` that attempts to push the criteria nodes in a canonical plan down as far as possible.
    `class` | `RaiseSelectCriteria` An `optimizer rule` that moves up higher in the plan any SELECT node that appears below a JOIN node and that applies to selectors that are on the other side of the join.
    `class` | `RaiseVariableName` An `optimizer rule` that moves up higher in the plan any `variable name` property to the node immediately under a `dependent query` node.
    `class` | `RemoveEmptyAccessNodes` An `optimizer rule` that removes any ACCESS nodes that are known to never return any tuples because of conflicting constraints.
    `class` | `ReorderSortAndRemoveDuplicates` An `optimizer rule` that looks for a `PlanNode.Type.SORT` plan node below a `PlanNode.Type.DUP_REMOVE`, and swaps them.
    `class` | `ReplaceViews` An `optimizer rule` that replaces any SOURCE nodes that happen to be `views`.
    `class` | `RewriteAsRangeCriteria` An `optimizer rule` that rewrites two `AND-ed` `Constraint`s that constraint a dynamic operand to a range of values as a single `Between` constraint.
    `class` | `RewriteIdentityJoins` An `optimizer rule` that rewrites JOIN nodes that have `equi-join criteria` where the columns involved in the equi-join are all identity columns (that is, they form a `key` for the table).
    `class` | `RewritePathAndNameCriteria` An `optimizer rule` that rewrites Constraint trees, moving path-, name-, or depth-oriented criteria to the left-most parts of the constraint tree.
    `class` | `RewritePseudoColumns` Changes any criteria that writes criteria containing pseudo-columns into standard criteria.
    `class` | `RightOuterToLeftOuterJoins` An `optimizer rule` that converts `right outer joins` into `left outer joins`.

    Method parameters in org.modeshape.jcr.query.optimize with type arguments of type OptimizerRule
    Modifier and Type | Method and Description
    --- | ---
    `PlanNode` | RightOuterToLeftOuterJoins.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | RewritePseudoColumns.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | RewritePathAndNameCriteria.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | RewriteIdentityJoins.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | RewriteAsRangeCriteria.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | ReplaceViews.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | ReorderSortAndRemoveDuplicates.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | RemoveEmptyAccessNodes.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | RaiseVariableName.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | RaiseSelectCriteria.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | PushSelectCriteria.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | PushProjects.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | OrderIndexesByCost.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | OptimizerRule.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)` Optimize the supplied plan using the supplied context, hints, and yet-to-be-run rules.
    `PlanNode` | JoinOrder.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | CopyCriteria.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | ChooseJoinAlgorithm.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | AddOrderingColumnsToSources.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | AddJoinConditionColumnsToSources.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | AddIndexes.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `PlanNode` | AddAccessNodes.`execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)`
    `protected void` | RuleBasedOptimizer.`populateIndexingRules(LinkedList<OptimizerRule> ruleStack, PlanHints hints)` Method that is used to add the indexing rules to the rule stack.
    `protected void` | RuleBasedOptimizer.`populateRuleStack(LinkedList<OptimizerRule> ruleStack, PlanHints hints)` Method that is used to create the initial rule stack.

Copyright © 2008-2014 JBoss, a division of Red Hat. All Rights Reserved.