Class NXQLQueryMaker.QueryAnalyzer
java.lang.Object
org.nuxeo.ecm.core.query.sql.model.DefaultQueryVisitor
org.nuxeo.ecm.core.storage.sql.jdbc.NXQLQueryMaker.QueryAnalyzer
- All Implemented Interfaces:
IVisitor
- Enclosing class:
- NXQLQueryMaker
Collects various info about the query AST, and rewrites the toplevel AND
Predicate
s of the WHERE clause
into a single MultiExpression
for easier analysis.-
Field Summary
Modifier and TypeFieldDescriptionprotected FacetFilter
protected int
protected boolean
Do we have a SELECT somelist/* FROM ...protected boolean
protected boolean
protected boolean
protected boolean
Do we match only relations (and therefore no proxies).protected boolean
protected boolean
protected boolean
protected LinkedList<Predicate>
protected MultiExpression
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addFacetFilterClauses
(FacetFilter facetFilter) protected void
protected void
analyzeToplevelPredicates
(Predicate predicate) Process special toplevel ANDed operands: ecm:isProxyprotected void
protected void
checkProperty
(String xpath) Checks that a property exists.protected void
init()
protected void
Simplify ecm:primaryType positive references, and non-per-instance mixin types.void
visitExpression
(Expression node) protected void
visitExpressionFulltext
(Expression node, String name) void
visitFromClause
(FromClause node) Finds all the types to take into account (all concrete types being a subtype of the passed types) based on the FROM list.void
visitFunction
(Function node) void
void
visitQuery
(SQLQuery node) void
visitReference
(Reference node) void
void
visitWhereClause
(WhereClause node) Methods inherited from class org.nuxeo.ecm.core.query.sql.model.DefaultQueryVisitor
visitBooleanLiteral, visitDateLiteral, visitDoubleLiteral, visitGroupByClause, visitHavingClause, visitIntegerLiteral, visitLiteral, visitLiteralList, visitMultiExpression, visitOperandList, visitOperator, visitOrderByExpr, visitOrderByList, visitReferenceList, visitStringLiteral
-
Field Details
-
facetFilter
-
inSelect
protected boolean inSelect -
inOrderBy
protected boolean inOrderBy -
toplevelPredicates
-
wherePredicate
-
onlyRelations
protected boolean onlyRelationsDo we match only relations (and therefore no proxies). -
whatColumnNames
-
orderByColumnNames
-
hasSelectCollection
protected boolean hasSelectCollectionDo we have a SELECT somelist/* FROM ... -
hasWildcardIndex
protected boolean hasWildcardIndex -
orderByHasWildcardIndex
protected boolean orderByHasWildcardIndex -
ftCount
protected int ftCount -
selectScore
protected boolean selectScore -
orderByScore
protected boolean orderByScore
-
-
Constructor Details
-
QueryAnalyzer
-
-
Method Details
-
init
protected void init() -
visitQuery
- Specified by:
visitQuery
in interfaceIVisitor
- Overrides:
visitQuery
in classDefaultQueryVisitor
-
addFacetFilterClauses
-
visitSelectClause
- Specified by:
visitSelectClause
in interfaceIVisitor
- Overrides:
visitSelectClause
in classDefaultQueryVisitor
-
visitFromClause
Finds all the types to take into account (all concrete types being a subtype of the passed types) based on the FROM list.Adds them as a ecm:primaryType match in the toplevel operands.
- Specified by:
visitFromClause
in interfaceIVisitor
- Overrides:
visitFromClause
in classDefaultQueryVisitor
-
visitWhereClause
- Specified by:
visitWhereClause
in interfaceIVisitor
- Overrides:
visitWhereClause
in classDefaultQueryVisitor
-
analyzeToplevelPredicates
Process special toplevel ANDed operands: ecm:isProxy -
simplifyToplevelPredicates
protected void simplifyToplevelPredicates()Simplify ecm:primaryType positive references, and non-per-instance mixin types. -
analyzeToplevelIsProxy
-
analyzeToplevelProxyProperty
-
visitExpression
- Specified by:
visitExpression
in interfaceIVisitor
- Overrides:
visitExpression
in classDefaultQueryVisitor
-
visitExpressionFulltext
-
visitReference
- Specified by:
visitReference
in interfaceIVisitor
- Overrides:
visitReference
in classDefaultQueryVisitor
-
checkProperty
Checks that a property exists.- Throws:
QueryParseException
- if the property doesn't exist
-
visitFunction
- Specified by:
visitFunction
in interfaceIVisitor
- Overrides:
visitFunction
in classDefaultQueryVisitor
-
visitOrderByClause
- Specified by:
visitOrderByClause
in interfaceIVisitor
- Overrides:
visitOrderByClause
in classDefaultQueryVisitor
-