Package | Description |
---|---|
org.modeshape.jcr.query.lucene |
The core query engine, which currently uses Lucene for indexing and raw queries, and
the Hibernate Search engine (which does not depend on or use Hibernate Core or JPA)
for updating and querying the Lucene indexes.
|
org.modeshape.jcr.query.optimize |
This package contains the Optimizer interface, a rule-based optimizer implementation, and library of optimization rules.
|
org.modeshape.jcr.query.plan |
This package defines the
Planner interface, the CanonicalPlanner implementation, and the
PlanNode class that is used to represent a canonical query plan. |
org.modeshape.jcr.query.process |
This package defines the
QueryProcessor interface, which is responsible for constructing for each query
a tree of ProcessingComponent objects that each are responsible for processing a specific aspect of
the query and returning the tuples to the parent component. |
Modifier and Type | Method and Description |
---|---|
protected ProcessingComponent |
LuceneQueryEngine.LuceneQueryProcessor.createAccessComponent(QueryCommand originalQuery,
QueryContext context,
PlanNode accessNode,
QueryResults.Columns resultColumns,
LuceneProcessingContext processingContext) |
Constructor and Description |
---|
LuceneQueryEngine.LuceneAccessQuery(LuceneSchema schema,
LuceneProcessingContext processingContext,
QueryContext context,
QueryResults.Columns resultColumns,
PlanNode accessNode) |
Modifier and Type | Method and Description |
---|---|
protected PlanNode |
RaiseSelectCriteria.copySelectNode(QueryContext context,
PlanNode selectNode,
SelectorName selectorName,
String propertyName,
SelectorName copySelectorName,
String copyPropertyName) |
protected PlanNode |
CopyCriteria.copySelectNode(QueryContext context,
PlanNode selectNode,
SelectorName selectorName,
String propertyName,
SelectorName copySelectorName,
String copyPropertyName) |
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 |
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 |
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 |
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 |
AddAccessNodes.execute(QueryContext context,
PlanNode plan,
LinkedList<OptimizerRule> ruleStack) |
protected PlanNode |
PushSelectCriteria.findBestChildForCriteria(PlanNode criteriaNode,
PlanNode originatingNode) |
protected PlanNode |
PushSelectCriteria.findOriginatingNode(PlanNode criteriaNode,
List<PlanNode> originatingNodes)
Find the first node that has all of the same
selectors as the supplied criteria. |
PlanNode |
RuleBasedOptimizer.optimize(QueryContext context,
PlanNode plan) |
PlanNode |
Optimizer.optimize(QueryContext context,
PlanNode plan)
Optimize the supplied query plan and produce an executable processor plan.
|
Modifier and Type | Method and Description |
---|---|
protected void |
AddJoinConditionColumnsToSources.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 |
AddOrderingColumnsToSources.addSortColumn(QueryContext context,
PlanNode node,
Column sortColumn)
Make sure that the supplied column is included in the
projected columns on the supplied
plan node or its children. |
protected boolean |
PushSelectCriteria.atBoundary(PlanNode criteriaNode,
PlanNode originatingNode)
Determine whether all of the nodes between the criteria node and its originating node are criteria (SELECT) nodes.
|
protected PlanNode |
RaiseSelectCriteria.copySelectNode(QueryContext context,
PlanNode selectNode,
SelectorName selectorName,
String propertyName,
SelectorName copySelectorName,
String copyPropertyName) |
protected PlanNode |
CopyCriteria.copySelectNode(QueryContext context,
PlanNode selectNode,
SelectorName selectorName,
String propertyName,
SelectorName copySelectorName,
String copyPropertyName) |
protected void |
CopyCriteria.copySelectNodes(QueryContext context,
PlanNode fromJoined,
PlanNode toJoined) |
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 |
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 |
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 |
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 |
AddAccessNodes.execute(QueryContext context,
PlanNode plan,
LinkedList<OptimizerRule> ruleStack) |
protected PlanNode |
PushSelectCriteria.findBestChildForCriteria(PlanNode criteriaNode,
PlanNode originatingNode) |
protected PlanNode |
PushSelectCriteria.findOriginatingNode(PlanNode criteriaNode,
List<PlanNode> originatingNodes)
Find the first node that has all of the same
selectors as the supplied criteria. |
PlanNode |
RuleBasedOptimizer.optimize(QueryContext context,
PlanNode plan) |
PlanNode |
Optimizer.optimize(QueryContext context,
PlanNode plan)
Optimize the supplied query plan and produce an executable processor plan.
|
protected boolean |
PushSelectCriteria.pushDownJoinCriteria(PlanNode criteriaNode,
PlanNode joinNode)
Attempt to push down criteria that applies to the JOIN as additional constraints on the JOIN itself.
|
protected boolean |
PushSelectCriteria.pushTowardsOriginatingNode(PlanNode criteriaNode,
PlanNode originatingNode)
Push the criteria node as close to the originating node as possible.
|
protected void |
RaiseVariableName.raiseVariableName(PlanNode node) |
protected String |
RaiseVariableName.removeVariableName(PlanNode node) |
protected void |
RewriteIdentityJoins.rewriteJoinNode(QueryContext context,
PlanNode joinNode,
Map<SelectorName,SelectorName> rewrittenSelectors) |
Modifier and Type | Method and Description |
---|---|
protected PlanNode |
PushSelectCriteria.findOriginatingNode(PlanNode criteriaNode,
List<PlanNode> originatingNodes)
Find the first node that has all of the same
selectors as the supplied criteria. |
Modifier and Type | Method and Description |
---|---|
static PlanNode |
PlanUtil.addMissingProjectColumns(QueryContext context,
PlanNode node,
List<Column> allProjectedColumns) |
protected PlanNode |
CanonicalPlanner.attachCriteria(QueryContext context,
PlanNode plan,
Constraint constraint,
List<? extends Column> columns,
Map<String,Subquery> subqueriesByVariableName)
Attach all criteria above the join nodes.
|
protected PlanNode |
CanonicalPlanner.attachDuplicateRemoval(QueryContext context,
PlanNode plan)
Attach DUP_REMOVE node at top of tree.
|
protected PlanNode |
CanonicalPlanner.attachLimits(QueryContext context,
PlanNode plan,
Limit limit)
Attach a LIMIT node at the top of the plan tree.
|
protected PlanNode |
CanonicalPlanner.attachProject(QueryContext context,
PlanNode plan,
List<? extends Column> columns,
Map<SelectorName,Schemata.Table> selectors)
Attach a PROJECT node at the top of the plan tree.
|
protected PlanNode |
CanonicalPlanner.attachSorting(QueryContext context,
PlanNode plan,
List<? extends Ordering> orderings)
Attach SORT node at top of tree.
|
protected PlanNode |
CanonicalPlanner.attachSubqueries(QueryContext context,
PlanNode plan,
Map<String,Subquery> subqueriesByVariableName)
Attach plan nodes for each subquery, resulting with the first subquery at the top of the plan tree.
|
PlanNode |
PlanNode.clone()
This class returns a new clone of the plan tree rooted at this node.
|
protected PlanNode |
PlanNode.cloneWithoutNewParent() |
protected PlanNode |
CanonicalPlanner.createCanonicalPlan(QueryContext context,
Query query)
Create a canonical query plan for the given query.
|
protected PlanNode |
CanonicalPlanner.createCanonicalPlan(QueryContext context,
SetQuery query)
Create a canonical query plan for the given set query.
|
PlanNode |
Planner.createPlan(QueryContext context,
QueryCommand query)
Create a canonical query plan for the given command.
|
PlanNode |
CanonicalPlanner.createPlan(QueryContext context,
QueryCommand query) |
protected PlanNode |
CanonicalPlanner.createPlanNode(QueryContext context,
Source source,
Map<SelectorName,Schemata.Table> usedSelectors)
Create a JOIN or SOURCE node that contain the source information.
|
PlanNode |
PlanNode.findAncestor(PlanNode.Type typeToFind)
Starting at the parent of this node, find the lowest (also closest) ancestor that has the specified type.
|
PlanNode |
PlanNode.findAncestor(PlanNode.Type firstTypeToFind,
PlanNode.Type... additionalTypesToFind)
Starting at the parent of this node, find the lowest (also closest) ancestor that has one of the specified types.
|
PlanNode |
PlanNode.findAncestor(Set<PlanNode.Type> typesToFind)
Starting at the parent of this node, find the lowest (also closest) ancestor that has one of the specified types.
|
PlanNode |
PlanNode.findAtOrBelow(PlanNode.Traversal order,
PlanNode.Type typeToFind)
Find the first node with the specified type that are at or below this node.
|
PlanNode |
PlanNode.findAtOrBelow(PlanNode.Traversal order,
PlanNode.Type firstTypeToFind,
PlanNode.Type... additionalTypesToFind)
Find the first node with one of the specified types that are at or below this node.
|
PlanNode |
PlanNode.findAtOrBelow(PlanNode.Traversal order,
Set<PlanNode.Type> typesToFind)
Find the first node with one of the specified types that are at or below this node.
|
PlanNode |
PlanNode.findAtOrBelow(PlanNode.Type typeToFind)
Find the first node with the specified type that are at or below this node.
|
PlanNode |
PlanNode.findAtOrBelow(PlanNode.Type firstTypeToFind,
PlanNode.Type... additionalTypesToFind)
Find the first node with one of the specified types that are at or below this node.
|
PlanNode |
PlanNode.findAtOrBelow(Set<PlanNode.Type> typesToFind)
Find the first node with one of the specified types that are at or below this node.
|
PlanNode |
PlanNode.getChild(int index)
Get the child at the supplied index.
|
PlanNode |
PlanNode.getFirstChild()
Get the first child.
|
PlanNode |
PlanNode.getLastChild()
Get the last child.
|
PlanNode |
PlanNode.getParent()
Get the parent of this node.
|
PlanNode |
PlanNode.removeFromParent()
Remove this node from its parent, and return the node that used to be the parent of this node.
|
Modifier and Type | Method and Description |
---|---|
List<PlanNode> |
PlanNode.findAllAtOrBelow()
Find all of the nodes that are at or below this node.
|
List<PlanNode> |
PlanNode.findAllAtOrBelow(PlanNode.Traversal order)
Find all of the nodes that are at or below this node.
|
List<PlanNode> |
PlanNode.findAllAtOrBelow(PlanNode.Traversal order,
PlanNode.Type typeToFind)
Find all of the nodes of the specified type that are at or below this node.
|
List<PlanNode> |
PlanNode.findAllAtOrBelow(PlanNode.Traversal order,
PlanNode.Type firstTypeToFind,
PlanNode.Type... additionalTypesToFind)
Find all of the nodes with one of the specified types that are at or below this node.
|
List<PlanNode> |
PlanNode.findAllAtOrBelow(PlanNode.Traversal order,
Set<PlanNode.Type> typesToFind)
Find all of the nodes with one of the specified types that are at or below this node.
|
List<PlanNode> |
PlanNode.findAllAtOrBelow(PlanNode.Type typeToFind)
Find all of the nodes of the specified type that are at or below this node, using pre-order traversal.
|
List<PlanNode> |
PlanNode.findAllAtOrBelow(PlanNode.Type firstTypeToFind,
PlanNode.Type... additionalTypesToFind)
Find all of the nodes with one of the specified types that are at or below this node.
|
List<PlanNode> |
PlanNode.findAllAtOrBelow(Set<PlanNode.Type> typesToFind)
Find all of the nodes with one of the specified types that are at or below this node.
|
List<PlanNode> |
PlanNode.findAllFirstNodesAtOrBelow(PlanNode.Type typeToFind)
Look at nodes below this node, searching for nodes that have the supplied type.
|
List<PlanNode> |
PlanNode.getChildren()
Get the unmodifiable list of child nodes.
|
LinkedList<PlanNode> |
PlanNode.getPathTo(PlanNode descendant)
Get the path from this node (inclusive) to the supplied descendant node (inclusive)
|
Iterator<PlanNode> |
PlanNode.iterator() |
List<PlanNode> |
PlanNode.removeAllChildren()
Remove all children from this node.
|
Modifier and Type | Method and Description |
---|---|
void |
PlanNode.addChildren(PlanNode first,
PlanNode second)
Add the supplied nodes at the end of the list of children.
|
void |
PlanNode.addChildren(PlanNode first,
PlanNode second,
PlanNode third)
Add the supplied nodes at the end of the list of children.
|
void |
PlanNode.addFirstChild(PlanNode child)
Add the supplied node to the front of the list of children.
|
void |
PlanNode.addLastChild(PlanNode child)
Add the supplied node to the end of the list of children.
|
static PlanNode |
PlanUtil.addMissingProjectColumns(QueryContext context,
PlanNode node,
List<Column> allProjectedColumns) |
protected PlanNode |
CanonicalPlanner.attachCriteria(QueryContext context,
PlanNode plan,
Constraint constraint,
List<? extends Column> columns,
Map<String,Subquery> subqueriesByVariableName)
Attach all criteria above the join nodes.
|
protected PlanNode |
CanonicalPlanner.attachDuplicateRemoval(QueryContext context,
PlanNode plan)
Attach DUP_REMOVE node at top of tree.
|
protected PlanNode |
CanonicalPlanner.attachLimits(QueryContext context,
PlanNode plan,
Limit limit)
Attach a LIMIT node at the top of the plan tree.
|
protected PlanNode |
CanonicalPlanner.attachProject(QueryContext context,
PlanNode plan,
List<? extends Column> columns,
Map<SelectorName,Schemata.Table> selectors)
Attach a PROJECT node at the top of the plan tree.
|
protected PlanNode |
CanonicalPlanner.attachSorting(QueryContext context,
PlanNode plan,
List<? extends Ordering> orderings)
Attach SORT node at top of tree.
|
protected PlanNode |
CanonicalPlanner.attachSubqueries(QueryContext context,
PlanNode plan,
Map<String,Subquery> subqueriesByVariableName)
Attach plan nodes for each subquery, resulting with the first subquery at the top of the plan tree.
|
static PlanUtil.ColumnMapping |
PlanUtil.createMappingFor(Schemata.View view,
PlanNode viewPlan) |
static PlanUtil.ColumnMapping |
PlanUtil.createMappingForAliased(SelectorName viewAlias,
Schemata.View view,
PlanNode viewPlan) |
void |
PlanNode.extractChild(PlanNode child)
Remove the child node from this node, and replace that child with its first child (if there is one).
|
static List<Column> |
PlanUtil.findRequiredColumns(QueryContext context,
PlanNode planNode)
Collected the minimum set of columns from the supplied table that are required by or used within the plan at the supplied
node or above.
|
static List<String> |
PlanUtil.findRequiredColumnTypes(QueryContext context,
List<Column> columns,
PlanNode node) |
LinkedList<PlanNode> |
PlanNode.getPathTo(PlanNode descendant)
Get the path from this node (inclusive) to the supplied descendant node (inclusive)
|
void |
PlanNode.insertAsParent(PlanNode newParent)
Insert the supplied node into the plan node tree immediately above this node.
|
boolean |
PlanNode.isAbove(PlanNode possibleDescendant)
Determine if the supplied node is a descendant of this node.
|
boolean |
PlanNode.isBelow(PlanNode possibleAncestor)
Determine if the supplied node is an ancestor of this node.
|
boolean |
PlanNode.isSameAs(PlanNode other)
Determine whether the supplied plan is equivalent to this plan.
|
boolean |
PlanNode.removeChild(PlanNode child)
Remove the node from this node.
|
boolean |
PlanNode.replaceChild(PlanNode child,
PlanNode replacement)
Replace the supplied child with another node.
|
static Constraint |
PlanUtil.replaceReferences(QueryContext context,
Constraint constraint,
PlanUtil.ColumnMapping mapping,
PlanNode node) |
static void |
PlanUtil.replaceReferencesToRemovedSource(QueryContext context,
PlanNode planNode,
Map<SelectorName,SelectorName> rewrittenSelectors) |
static DynamicOperand |
PlanUtil.replaceViewReferences(QueryContext context,
DynamicOperand operand,
PlanUtil.ColumnMapping mapping,
PlanNode node) |
static JoinCondition |
PlanUtil.replaceViewReferences(QueryContext context,
JoinCondition joinCondition,
PlanUtil.ColumnMapping mapping,
PlanNode node) |
static void |
PlanUtil.replaceViewReferences(QueryContext context,
PlanNode topOfViewInPlan,
PlanUtil.ColumnMapping mappings) |
protected static void |
PlanUtil.replaceViewReferences(QueryContext context,
PlanNode node,
PlanUtil.ColumnMapping mappings,
SelectorName viewName,
List<PlanNode> potentiallyRemovableSources) |
void |
PlanNode.setParent(PlanNode parent)
Set the parent for this node.
|
protected void |
CanonicalPlanner.setSubqueryVariableName(PlanNode subqueryPlan,
String varName) |
Modifier and Type | Method and Description |
---|---|
void |
PlanNode.addChildren(Iterable<PlanNode> otherChildren)
Add the supplied nodes at the end of the list of children.
|
protected static void |
PlanUtil.replaceViewReferences(QueryContext context,
PlanNode node,
PlanUtil.ColumnMapping mappings,
SelectorName viewName,
List<PlanNode> potentiallyRemovableSources) |
Constructor and Description |
---|
PlanNode(PlanNode.Type type,
PlanNode parent)
Create a new plan node with the supplied initial type ad that is a child of the supplied parent.
|
PlanNode(PlanNode.Type type,
PlanNode parent,
Iterable<SelectorName> selectors)
Create a new plan node with the supplied initial type ad that is a child of the supplied parent.
|
PlanNode(PlanNode.Type type,
PlanNode parent,
SelectorName... selectors)
Create a new plan node with the supplied initial type ad that is a child of the supplied parent.
|
Modifier and Type | Field and Description |
---|---|
protected PlanNode |
AbstractAccessComponent.accessNode |
Modifier and Type | Method and Description |
---|---|
protected abstract ProcessingComponent |
QueryProcessor.createAccessComponent(QueryCommand originalQuery,
QueryContext context,
PlanNode accessNode,
QueryResults.Columns resultColumns,
ProcessingContextType processingContext)
Create the
ProcessingComponent that processes a single PlanNode.Type.ACCESS branch of a query plan. |
protected QueryResults.Columns |
QueryProcessor.createColumnsFor(PlanNode node,
QueryResults.Columns projectedColumns) |
protected ProcessingComponent |
QueryProcessor.createComponent(QueryCommand originalQuery,
QueryContext context,
PlanNode node,
QueryResults.Columns columns,
ProcessingContextType processingContext)
Method that is called to build up the
ProcessingComponent objects that correspond to the optimized query plan. |
protected QueryResultColumns |
QueryEngine.determineQueryResultColumns(PlanNode optimizedPlan,
PlanHints hints) |
QueryResults |
QueryProcessor.execute(QueryContext context,
QueryCommand command,
QueryResults.Statistics statistics,
PlanNode plan) |
QueryResults |
Processor.execute(QueryContext context,
QueryCommand command,
QueryResults.Statistics statistics,
PlanNode plan)
Process the supplied query plan for the given command and return the results.
|
Constructor and Description |
---|
AbstractAccessComponent(QueryContext context,
QueryResults.Columns columns,
PlanNode accessNode) |
Copyright © 2008-2014 JBoss, a division of Red Hat. All Rights Reserved.