org.modeshape.jcr.query.optimize
Class AddJoinConditionColumnsToSources
java.lang.Object
org.modeshape.jcr.query.optimize.AddJoinConditionColumnsToSources
- All Implemented Interfaces:
- OptimizerRule
public class AddJoinConditionColumnsToSources
- extends Object
- implements OptimizerRule
An OptimizerRule
that adds any missing columns required by the join conditions to the appropriate join source.
Method Summary |
protected void |
addEquiJoinColumn(QueryContext context,
PlanNode node,
Column joinColumn)
Make sure that the supplied column is included in the projected columns on the supplied
plan node or its children. |
protected boolean |
addIfMissing(QueryContext context,
Column column,
List<Column> columns,
List<String> columnTypes)
Check the supplied list of columns for an existing column that matches the supplied Column , and if none is found
add the supplied Column to the list and add an appropriate type. |
protected Column |
columnFor(SelectorName selector,
String property,
boolean includeSourceName)
|
PlanNode |
execute(QueryContext context,
PlanNode plan,
LinkedList<OptimizerRule> ruleStack)
Optimize the supplied plan using the supplied context, hints, and yet-to-be-run rules. |
String |
toString()
|
INSTANCE
public static final AddJoinConditionColumnsToSources INSTANCE
AddJoinConditionColumnsToSources
public AddJoinConditionColumnsToSources()
execute
public PlanNode execute(QueryContext context,
PlanNode plan,
LinkedList<OptimizerRule> ruleStack)
- Description copied from interface:
OptimizerRule
- Optimize the supplied plan using the supplied context, hints, and yet-to-be-run rules.
- Specified by:
execute
in interface OptimizerRule
- Parameters:
context
- the context in which the query is being optimized; never nullplan
- the plan to be optimized; never nullruleStack
- the stack of rules that will be run after this rule; never null
- Returns:
- the optimized plan; never null
addEquiJoinColumn
protected void addEquiJoinColumn(QueryContext context,
PlanNode node,
Column joinColumn)
- Make sure that the supplied column is included in the
projected columns
on the supplied
plan node or its children.
- Parameters:
context
- the query context; may not be nullnode
- the query plan nodejoinColumn
- the column required by the join
addIfMissing
protected boolean addIfMissing(QueryContext context,
Column column,
List<Column> columns,
List<String> columnTypes)
- Check the supplied list of columns for an existing column that matches the supplied
Column
, and if none is found
add the supplied Column to the list and add an appropriate type.
- Parameters:
context
- the query contextcolumn
- the column that will be added if not already in the list; may not be nullcolumns
- the list of columns; may not be nullcolumnTypes
- the list of column types; may not be null
- Returns:
- true if the column was added (i.e., the lists were modified), or false if the lists were not modified
columnFor
protected Column columnFor(SelectorName selector,
String property,
boolean includeSourceName)
toString
public String toString()
- Overrides:
toString
in class Object
Copyright © 2008-2012 JBoss, a division of Red Hat. All Rights Reserved.