# Package 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.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  JoinComponent.Joinable | Interface defining the value of a tuple that is used in the join condition.
  JoinComponent.TupleMerger | A component that will merge the supplied tuple on the left side of a join with the supplied tuple on the right side of the join, to produce a single tuple with all components from the left and right tuples.
  JoinComponent.ValueSelector | Interface defining the value of a tuple that is used in the join condition.
  ProcessingComponent.DynamicOperation | Interface for evaluating a `DynamicOperand` to return the resulting value.
  Processor | Interface for a query processor.
  SelectComponent.CompareOperation | Interface defining the `Comparison` functionality for a specific `Operator`.
  SelectComponent.ConstraintChecker | Interface used to determine whether a tuple satisfies all of the constraints applied to the SELECT node.

- Class Summary
  Class | Description
  --- | ---
  AbstractAccessComponent | A reusable base class for `ProcessingComponent` implementations that does everything except obtain the correct `QueryResults.Location` objects for the query results.
  DelegatingComponent |
  DependentQueryComponent | A `ProcessingComponent` that executes a `dependent query` node by first executing the left component and then executing the right component.
  DistinctComponent | A `ProcessingComponent` implementation that removes duplicates.
  DistinctOfSortedComponent | An efficient `ProcessingComponent` that removes duplicates from an already-sorted set of results.
  ExceptComponent |
  IntersectComponent |
  JoinComponent |
  LimitComponent |
  MergeJoinComponent | Create a processing component that performs a merge-join algorithm.
  NestedLoopJoinComponent |
  NoResultsComponent |
  ProcessingComponent | A component that performs (some) portion of the query processing by `returning the tuples` that result from this stage of processing.
  ProjectComponent | A `ProcessingComponent` implementation that performs a `PROJECT` operation to reduce the columns that appear in the results.
  QueryEngine | A query engine that is able to execute formal queries expressed in the Graph API's `Abstract Query Model`.
  QueryProcessor<ProcessingContextType> | An abstract `Processor` implementation that builds a tree of `ProcessingComponent` objects to perform the different parts of the query processing logic.
  QueryResultColumns | Defines the columns associated with the results of a query.
  QueryResultColumns.ColumnInfo |
  QueryResultColumns.WrappedReformatter |
  QueryResults | The resulting output of a query.
  SelectComponent |
  SetOperationComponent |
  SortLocationsComponent |
  SortValuesComponent | A `ProcessingComponent` implementation that performs a `PROJECT` operation to reduce the columns that appear in the results.
  UnionComponent |

## Package org.modeshape.jcr.query.process Description

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.

At the bottom are the "access" components that perform the low-level access of the tuples from the graph container. Above these are the other components that implement various operations, such as limits, joins (using merge and nested loop algorithms), unions, intersects, distinct, sorts, and even column projections. At the top is a single component that produces tuples that represent the results of the query.

Once the `QueryProcessor` creates the ProcessingComponent assembly, the top-level component is executed. Execution involves requesting from the child processing component(s) the next batch of results, processing each of the tuples according to the specific ProcessingComponent algorithm, and finally returning the processed tuples.

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