Class NXQLQueryMaker.WhereBuilder
java.lang.Object
org.nuxeo.ecm.core.query.sql.model.DefaultQueryVisitor
org.nuxeo.ecm.core.storage.sql.jdbc.NXQLQueryMaker.WhereBuilder
- All Implemented Interfaces:
IVisitor
- Enclosing class:
- NXQLQueryMaker
Builds the database-level WHERE query from the AST.
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
protected boolean
protected int
protected int
protected Dialect.FulltextMatchInfo
protected int
protected boolean
protected boolean
protected final boolean
static final String
protected Map<String,
Dialect.ArraySubQuery> final StringBuilder
protected int
protected boolean
final LinkedList<Column>
final LinkedList<String>
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
protected void
checkDateLiteralForCast
(Operand value, Expression node) This operand is going to be used with a lvalue that has a DATE cast, so if it's a date literal make sure it's not a TIMESTAMP.protected void
protected void
generateExistsStart
(StringBuilder sb, Table table) protected ColumnType
getAggregateType
(String func, ColumnType arg) protected Dialect.ArraySubQuery
getArraySubQuery
(Table contextHier, String contextKey, Column arrayColumn, boolean skipJoin) Gets the arraySubquery for the given arrayColumn in the given contextKey, and maybe adds a JOIN if one is not already done.protected Operand
getBooleanLiteral
(Operand rvalue) getColumnInfo
(String name) Finds info about column (special or not).protected NXQLQueryMaker.ColumnInfo
getRegularColumnInfo
(String xpath) Gets column information for a regular property.protected NXQLQueryMaker.ColumnInfo
getSpecialColumnInfo
(String name) protected int
void
protected void
visitColumnExpression
(Column column, Operator op, Operand rvalue, String cast, String lvalueName, int arrayElementIndex) void
visitDateLiteral
(DateLiteral node) void
void
visitExpression
(Expression node) protected void
protected void
protected void
visitExpressionEqOrIn
(Column column, Operator op, Operand rvalue, String cast, int arrayElementIndex) protected void
visitExpressionFulltext
(Expression node, String name) protected void
visitExpressionIlike
(Column column, Operator op, Operand rvalue, String lvalueName, int arrayElementIndex) protected void
protected void
protected void
protected void
visitExpressionLike
(Column column, Operator op, Operand rvalue, String lvalueName, int arrayElementIndex) protected void
Include or exclude mixins.protected void
protected void
visitExpressionStartsWithNonPath
(Expression node, String path) protected void
protected void
protected void
void
visitFunction
(Function node) protected void
void
void
visitLiteralList
(LiteralList node) void
void
visitOperator
(Operator node) void
visitOrderByExpr
(OrderByExpr node) void
visitOrderByList
(OrderByList node) void
void
visitQuery
(SQLQuery node) void
visitReference
(Reference node) protected void
visitReference
(Column column) protected void
visitReference
(Column column, int arrayElementIndex) protected void
visitReference
(Column column, String cast) protected void
visitReference
(Column column, String cast, int arrayElementIndex) protected void
void
protected void
visitSimpleExpression
(Column column, Operator op, Operand rvalue, String cast, int arrayElementIndex) void
visitStringLiteral
(String string) void
Methods inherited from class org.nuxeo.ecm.core.query.sql.model.DefaultQueryVisitor
visitFromClause, visitGroupByClause, visitHavingClause, visitLiteral, visitOperandList, visitOrderByClause, visitReferenceList, visitWhereClause
-
Field Details
-
PATH_SEP
- See Also:
-
whatColumns
-
whatKeys
-
sb
-
uniqueJoinIndex
protected int uniqueJoinIndex -
hierJoinCount
protected int hierJoinCount -
propertyHierTables
-
isProxies
protected final boolean isProxies -
aliasOrderByColumns
protected boolean aliasOrderByColumns -
allowSubSelect
protected boolean allowSubSelect -
inSelect
protected boolean inSelect -
inOrderBy
protected boolean inOrderBy -
ftJoinNumber
protected int ftJoinNumber -
ftMatchInfo
-
visitingId
protected boolean visitingId -
propertyArraySubQueries
-
arraySubQueryJoinCount
protected int arraySubQueryJoinCount -
posColumns
-
posColumnsInOrderBy
-
-
Constructor Details
-
WhereBuilder
public WhereBuilder(boolean isProxies)
-
-
Method Details
-
getUniqueJoinIndex
protected int getUniqueJoinIndex() -
getArraySubQuery
protected Dialect.ArraySubQuery getArraySubQuery(Table contextHier, String contextKey, Column arrayColumn, boolean skipJoin) Gets the arraySubquery for the given arrayColumn in the given contextKey, and maybe adds a JOIN if one is not already done.LEFT JOIN (SELECT id, UNNEST(somecol) AS item, generate_subscripts(somecol, 1) AS pos FROM someschema) _A1 ON _A1.id = hierarchy.id
-
getSpecialColumnInfo
-
getColumnInfo
Finds info about column (special or not). -
getRegularColumnInfo
Gets column information for a regular property.Accumulates info about joins needed to get to this property.
IMPORTANT: THIS MUST NOT BE CALLED TWICE ON THE SAME PROPERTY as some structures are updated (joins, counters).
- Throws:
QueryParseException
- if the property doesn't exist
-
visitQuery
- Specified by:
visitQuery
in interfaceIVisitor
- Overrides:
visitQuery
in classDefaultQueryVisitor
-
visitSelectClause
- Specified by:
visitSelectClause
in interfaceIVisitor
- Overrides:
visitSelectClause
in classDefaultQueryVisitor
-
visitMultiExpression
- Specified by:
visitMultiExpression
in interfaceIVisitor
- Overrides:
visitMultiExpression
in classDefaultQueryVisitor
-
visitExpression
- Specified by:
visitExpression
in interfaceIVisitor
- Overrides:
visitExpression
in classDefaultQueryVisitor
-
getBooleanLiteral
-
visitColumnExpression
-
visitSimpleExpression
-
checkDateLiteralForCast
This operand is going to be used with a lvalue that has a DATE cast, so if it's a date literal make sure it's not a TIMESTAMP. -
generateExistsStart
-
generateExistsEnd
-
visitExpressionStartsWith
-
visitExpressionStartsWithPath
-
visitExpressionStartsWithNonPath
-
visitExpressionEcmPath
-
visitExpressionAncestorId
-
visitExpressionIsProxy
-
visitExpressionWhereFalseIsNull
-
visitExpressionWhereFalseMayBeNull
-
visitExpressionIsTrashed
-
visitExpressionIsTrashedOnLifeCycle
-
visitExpressionMixinType
Include or exclude mixins.include: primarytype IN (... types with Foo or Bar ...) OR mixintypes LIKE '%Foo%' OR mixintypes LIKE '%Bar%'
exclude: primarytype IN (... types without Foo or Bar ...) AND (mixintypes NOT LIKE '%Foo%' AND mixintypes NOT LIKE '%Bar%' OR mixintypes IS NULL)
-
visitExpressionFulltext
-
visitExpressionEqOrIn
-
visitExpressionLike
-
visitExpressionIlike
-
addLikeEscaping
protected void addLikeEscaping() -
visitOperator
- Specified by:
visitOperator
in interfaceIVisitor
- Overrides:
visitOperator
in classDefaultQueryVisitor
-
visitReference
- Specified by:
visitReference
in interfaceIVisitor
- Overrides:
visitReference
in classDefaultQueryVisitor
-
visitReference
-
visitReference
-
visitReference
-
visitReference
-
visitLiteralList
- Specified by:
visitLiteralList
in interfaceIVisitor
- Overrides:
visitLiteralList
in classDefaultQueryVisitor
-
visitDateLiteral
- Specified by:
visitDateLiteral
in interfaceIVisitor
- Overrides:
visitDateLiteral
in classDefaultQueryVisitor
-
visitStringLiteral
- Specified by:
visitStringLiteral
in interfaceIVisitor
- Overrides:
visitStringLiteral
in classDefaultQueryVisitor
-
visitId
-
visitStringLiteral
-
visitDoubleLiteral
- Specified by:
visitDoubleLiteral
in interfaceIVisitor
- Overrides:
visitDoubleLiteral
in classDefaultQueryVisitor
-
visitIntegerLiteral
- Specified by:
visitIntegerLiteral
in interfaceIVisitor
- Overrides:
visitIntegerLiteral
in classDefaultQueryVisitor
-
visitBooleanLiteral
- Specified by:
visitBooleanLiteral
in interfaceIVisitor
- Overrides:
visitBooleanLiteral
in classDefaultQueryVisitor
-
visitFunction
- Specified by:
visitFunction
in interfaceIVisitor
- Overrides:
visitFunction
in classDefaultQueryVisitor
-
visitScore
protected void visitScore() -
getAggregateType
-
visitOrderByList
- Specified by:
visitOrderByList
in interfaceIVisitor
- Overrides:
visitOrderByList
in classDefaultQueryVisitor
-
visitOrderByPosColumns
public void visitOrderByPosColumns() -
visitOrderByExpr
- Specified by:
visitOrderByExpr
in interfaceIVisitor
- Overrides:
visitOrderByExpr
in classDefaultQueryVisitor
-