|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.datanucleus.store.rdbms.query.QueryCompiler
org.datanucleus.store.rdbms.query.JPQLQueryCompiler
public class JPQLQueryCompiler
Compiler of JPQL queries for RDBMS datastores. Takes the input query and provides two forms of compilation :-
During either compilation step other parts of the query are resolved and are available for update by accessors.
| Field Summary | |
|---|---|
protected java.util.Map<java.lang.String,org.datanucleus.store.rdbms.query.QueryCompiler.AliasJoinInformation> |
aliases
Aliases encountered in FROM clause, with their information keyed by the alias string. |
protected org.datanucleus.store.mapped.expression.ClassExpression[] |
candidateExpressions
Expressions for the candidate(s). |
protected JPQLQueryCompiler |
parentCompiler
Compiler for any parent query. |
protected java.util.Set |
processedParameters
Set of parameters encountered during this compilation of the query. |
| Fields inherited from class org.datanucleus.store.rdbms.query.QueryCompiler |
|---|
candidateAlias, candidateClass, candidateCmd, candidates, COMPILE_EXECUTION, COMPILE_EXPLICIT_PARAMETERS, COMPILE_EXPLICIT_VARIABLES, COMPILE_SYNTAX, executionCompile, expressionsByVariableName, imports, language, LOCALISER, p, parameterNames, parameters, parameterTypesByName, parentExpr, qs, query, rangeFromIncl, rangeToExcl, resultClass, resultMetaData, subqueryCandidateExpr, subqueryCandidateExprRootAliasInfo, userDefinedScalarExpressions, variableNames, variableTypesByName |
| Constructor Summary | |
|---|---|
JPQLQueryCompiler(org.datanucleus.store.query.AbstractJPQLQuery query,
org.datanucleus.util.Imports imports,
java.util.Map parameters)
Constructor. |
|
| Method Summary | |
|---|---|
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileAndExpression()
|
protected void |
compileCandidates()
Convenience method to process the candidates for this query. |
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileEqualityExpression()
|
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileExpression()
Principal method for compiling an expression. |
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileExpressionFromString(java.lang.String str)
Convenience method to parse an expression string into its query expression. |
protected org.datanucleus.store.mapped.expression.ClassExpression |
compileFromExpression(java.lang.String fromStr)
Method to take an expression string from the "from" clause and convert it into a ScalarExpression. |
protected void |
compileFromJoinExpressions(org.datanucleus.store.mapped.expression.ClassExpression clsExpr)
Method to compile the join expressions in the FROM clause, updating the input ClassExpression with the discovered joins. |
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileIdentifier()
An identifier always designates a reference to a single value. |
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileInExpression(org.datanucleus.store.mapped.expression.ScalarExpression expr)
Compile an "IN (in_item{,in_item})" expression block. |
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileLikeExpression(org.datanucleus.store.mapped.expression.ScalarExpression expr)
Compile a "LIKE pattern [ESCAPE {escape char}]" expression block. |
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileMemberExpression(org.datanucleus.store.mapped.expression.ScalarExpression expr)
Compile a "MEMBER [OF] coll_expr" expression block. |
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileNamedImplicitParameter(java.lang.String id)
Method to compile a named implicit parameter into an expression. |
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileNotExpression()
|
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileNumberedImplicitParameter(java.lang.String id)
Method to compile a numbered implicit parameter into an expression. |
protected void |
compileOrdering(org.datanucleus.store.mapped.expression.QueryExpression qs,
java.lang.String ordering)
Convenience method to compile the ordering defintion. |
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileOrExpression()
|
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compilePrimary()
this compiles a primary. |
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileRelationalExpression()
|
protected org.datanucleus.store.mapped.expression.ScalarExpression |
compileSubqueryVariable(java.lang.String id)
Method to compile a subquery, replacing the specified variable with a SubqueryExpression. |
protected void |
compileUpdate(org.datanucleus.store.mapped.expression.QueryExpression qs,
java.lang.String update)
Convenience method to compile the update clause. |
protected java.lang.Class |
getClassForSubqueryCandidateExpression(java.lang.String candExpr)
Convenience method to process the subquery " |
protected void |
performCompile(org.datanucleus.store.mapped.expression.QueryExpression qs)
Perform the actual compilation of the query, populating the provided QueryExpression. |
void |
processAsSubquery(JPQLQueryCompiler parentCompiler)
Method to set the parent compiler/query that this is a subquery of. |
protected void |
processClassExpression(org.datanucleus.store.mapped.expression.ClassExpression classExpr)
Method to process a ClassExpression from the FROM clause. |
protected void |
processJoinExpression(org.datanucleus.store.mapped.expression.JoinExpression joinExpr)
Method to process the supplied JoinExpression and add the required join to the current QueryStatement. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected transient java.util.Map<java.lang.String,org.datanucleus.store.rdbms.query.QueryCompiler.AliasJoinInformation> aliases
protected transient org.datanucleus.store.mapped.expression.ClassExpression[] candidateExpressions
protected transient java.util.Set processedParameters
protected JPQLQueryCompiler parentCompiler
| Constructor Detail |
|---|
public JPQLQueryCompiler(org.datanucleus.store.query.AbstractJPQLQuery query,
org.datanucleus.util.Imports imports,
java.util.Map parameters)
query - Query to compileimports - Imports handler to use for class resolutionparameters - map of declared parameters in the query| Method Detail |
|---|
public void processAsSubquery(JPQLQueryCompiler parentCompiler)
parentCompiler - The parent compilerprotected void performCompile(org.datanucleus.store.mapped.expression.QueryExpression qs)
performCompile in class QueryCompilerqs - The QueryExpression to use during compilation
protected void compileUpdate(org.datanucleus.store.mapped.expression.QueryExpression qs,
java.lang.String update)
qs - The Query Expression to apply the update to (if specified)update - The update specificationprotected void compileCandidates()
compileCandidates in class QueryCompilerprotected org.datanucleus.store.mapped.expression.ClassExpression compileFromExpression(java.lang.String fromStr)
{class-expression} [AS] alias [JOIN ...]
or
IN (collection-value-path) [AS] alias [JOIN ...]
fromStr - The from expression string
protected void compileFromJoinExpressions(org.datanucleus.store.mapped.expression.ClassExpression clsExpr)
clsExpr - Class Expression that the join(s) are applied toprotected java.lang.Class getClassForSubqueryCandidateExpression(java.lang.String candExpr)
candExpr - Candidate expression
protected void processClassExpression(org.datanucleus.store.mapped.expression.ClassExpression classExpr)
An example of multiple class expressions
select c from Customer c, Employee e where c.hatsize = e.shoesizeso in this we have a class expression for the main candidate (Customer), and a class expression for Employee which results in a cross join for Employee.
An example of a class expression with joins
SELECT DISTINCT o FROM Order o JOIN o.lineItems l JOIN l.product p WHERE ...so we have a ClassExpression for Order, and this has 2 JoinExpressions within it. The first join is from the field "lineItems" of Order, to class LineItem (aliased as "l"). The second join is from the field "product" of LineItem, to class Product (aliased as "p").
classExpr - The class expression to processprotected void processJoinExpression(org.datanucleus.store.mapped.expression.JoinExpression joinExpr)
joinExpr - JoinExpression
protected void compileOrdering(org.datanucleus.store.mapped.expression.QueryExpression qs,
java.lang.String ordering)
qs - The Query Expression to apply the ordering to (if specified)ordering - The ordering specificationprotected org.datanucleus.store.mapped.expression.ScalarExpression compileExpressionFromString(java.lang.String str)
compileExpressionFromString in class QueryCompilerstr - The string
protected org.datanucleus.store.mapped.expression.ScalarExpression compileExpression()
compileExpression in class QueryCompilerprotected org.datanucleus.store.mapped.expression.ScalarExpression compileOrExpression()
protected org.datanucleus.store.mapped.expression.ScalarExpression compileAndExpression()
protected org.datanucleus.store.mapped.expression.ScalarExpression compileNotExpression()
protected org.datanucleus.store.mapped.expression.ScalarExpression compileEqualityExpression()
protected org.datanucleus.store.mapped.expression.ScalarExpression compileLikeExpression(org.datanucleus.store.mapped.expression.ScalarExpression expr)
expr - The input expression we are performing the LIKE on
protected org.datanucleus.store.mapped.expression.ScalarExpression compileInExpression(org.datanucleus.store.mapped.expression.ScalarExpression expr)
expr - The input expression we are performing the IN on.
protected org.datanucleus.store.mapped.expression.ScalarExpression compileMemberExpression(org.datanucleus.store.mapped.expression.ScalarExpression expr)
expr - The input expression we are performing the MEMBER on
protected org.datanucleus.store.mapped.expression.ScalarExpression compileRelationalExpression()
protected org.datanucleus.store.mapped.expression.ScalarExpression compilePrimary()
compilePrimary in class QueryCompilerprotected org.datanucleus.store.mapped.expression.ScalarExpression compileIdentifier()
protected org.datanucleus.store.mapped.expression.ScalarExpression compileSubqueryVariable(java.lang.String id)
id - Variable name that the subquery replaces.
protected org.datanucleus.store.mapped.expression.ScalarExpression compileNamedImplicitParameter(java.lang.String id)
id - Identifier of the named parameter, starts with ":"
protected org.datanucleus.store.mapped.expression.ScalarExpression compileNumberedImplicitParameter(java.lang.String id)
id - Identifier of the named parameter, starts with "?" followed by the number
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||