|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.exist.xquery.AbstractExpression
org.exist.xquery.PathExpr
org.exist.xquery.BinaryOp
org.exist.xquery.GeneralComparison
public class GeneralComparison
A general XQuery/XPath2 comparison expression.
| Nested Class Summary | |
|---|---|
static class |
GeneralComparison.IndexFlags
|
| Field Summary | |
|---|---|
protected CachedResult |
cached
The class might cache the entire results of a previous execution. |
protected java.lang.Object |
collationArg
Extra argument (to standard functions starts-with/contains etc.) to indicate the collation to be used for string comparisons. |
protected boolean |
invalidNodeEvaluation
|
protected boolean |
inWhereClause
Set to true if this expression is called within the where clause of a FLWOR expression. |
protected boolean |
optimizeChild
|
protected boolean |
optimizeSelf
|
protected int |
relation
The type of operator used for the comparison, i.e. |
protected int |
rightOpDeps
|
protected int |
truncation
Truncation flags: when comparing with a string value, the search string may be truncated with a single * wildcard. |
| Fields inherited from class org.exist.xquery.PathExpr |
|---|
inPredicate, keepVirtual, LOG, parent, staticContext, steps |
| Fields inherited from class org.exist.xquery.AbstractExpression |
|---|
column, context, contextDocSet, contextId, line, unordered |
| Fields inherited from interface org.exist.xquery.Expression |
|---|
DOT_TEST, EXPRESSION_ID_INVALID, IGNORE_CONTEXT, IN_NODE_CONSTRUCTOR, IN_PREDICATE, IN_UPDATE, IN_WHERE_CLAUSE, NEED_INDEX_INFO, NO_CONTEXT_ID, NON_STREAMABLE, POSITIONAL_PREDICATE, SINGLE_STEP_EXECUTION, UNORDERED, USE_TREE_TRAVERSAL |
| Constructor Summary | |
|---|---|
GeneralComparison(XQueryContext context,
Expression left,
Expression right,
int relation)
|
|
GeneralComparison(XQueryContext context,
Expression left,
Expression right,
int relation,
int truncation)
|
|
GeneralComparison(XQueryContext context,
int relation)
|
|
GeneralComparison(XQueryContext context,
int relation,
int truncation)
|
|
| Method Summary | |
|---|---|
void |
accept(ExpressionVisitor visitor)
Start traversing the expression tree using the specified ExpressionVisitor. |
void |
analyze(AnalyzeContextInfo contextInfo)
Statically analyze the expression and its subexpressions. |
boolean |
canOptimize(Sequence contextSequence)
|
static GeneralComparison.IndexFlags |
checkForQNameIndex(GeneralComparison.IndexFlags idxflags,
XQueryContext context,
Sequence contextSequence,
QName contextQName)
|
void |
dump(ExpressionDumper dumper)
Write a diagnostic dump of the expression to the passed ExpressionDumper. |
Sequence |
eval(Sequence contextSequence,
Item contextItem)
Evaluate the expression represented by this object. |
protected Sequence |
genericCompare(Sequence contextSequence,
Item contextItem)
Generic, slow implementation. |
protected Sequence |
genericCompare(Sequence ls,
Sequence contextSequence,
Item contextItem)
|
protected java.text.Collator |
getCollator(Sequence contextSequence)
|
int |
getDependencies()
Returns Dependency.DEFAULT_DEPENDENCIES. |
int |
getOptimizeAxis()
|
int |
getRelation()
|
boolean |
hasUsedIndex()
|
protected Sequence |
nodeSetCompare(NodeSet nodes,
Sequence contextSequence)
Optimized implementation, which can be applied if the left operand returns a node set. |
boolean |
optimizeOnChild()
|
boolean |
optimizeOnSelf()
|
NodeSet |
preSelect(Sequence contextSequence,
boolean useContext)
|
protected Sequence |
quickNodeSetCompare(Sequence contextSequence)
Optimized implementation: first checks if a range index is defined on the nodes in the left argument. |
void |
resetState(boolean postOptimization)
Called to inform an expression that it should reset to its initial state. |
int |
returnsType()
The static return type of the expression. |
void |
setCollation(java.lang.Object collationArg)
|
protected void |
simplifyOperands()
Possibly switch operands to simplify execution. |
protected void |
switchOperands()
|
java.lang.String |
toString()
|
| Methods inherited from class org.exist.xquery.BinaryOp |
|---|
getLeft, getRight, setContextDocSet, setLeft, setRight, simplify |
| Methods inherited from class org.exist.xquery.PathExpr |
|---|
add, add, addPath, addPredicate, allowMixNodesInReturn, dump, getCardinality, getColumn, getContext, getDocumentSet, getExpression, getLastExpression, getLength, getLine, getLiteralValue, getParent, getPrimaryAxis, getSubExpression, getSubExpressionCount, isValid, replaceExpression, replaceLastExpression, reset, setContext, setPrimaryAxis, setUseStaticContext |
| Methods inherited from class org.exist.xquery.AbstractExpression |
|---|
eval, getContextDocSet, getContextId, getExpressionId, getSource, match, needsReset, setASTNode, setContextId, setLocation |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.exist.xquery.Expression |
|---|
allowMixNodesInReturn, eval, getCardinality, getColumn, getContext, getContextDocSet, getContextId, getExpressionId, getLine, getParent, getPrimaryAxis, getSource, getSubExpression, getSubExpressionCount, match, needsReset, setASTNode, setContextDocSet, setContextId, setLocation, setPrimaryAxis, simplify |
| Methods inherited from interface org.exist.xquery.CompiledXQuery |
|---|
eval, getSource |
| Field Detail |
|---|
protected int relation
Constants.
protected int truncation
Constants.
The standard functions starts-with, ends-with and contains are transformed into a general comparison with wildcard. Hence the need to consider wildcards here.
protected CachedResult cached
protected java.lang.Object collationArg
protected boolean inWhereClause
protected boolean invalidNodeEvaluation
protected int rightOpDeps
protected boolean optimizeSelf
protected boolean optimizeChild
| Constructor Detail |
|---|
public GeneralComparison(XQueryContext context,
int relation)
public GeneralComparison(XQueryContext context,
int relation,
int truncation)
public GeneralComparison(XQueryContext context,
Expression left,
Expression right,
int relation)
public GeneralComparison(XQueryContext context,
Expression left,
Expression right,
int relation,
int truncation)
| Method Detail |
|---|
public void analyze(AnalyzeContextInfo contextInfo)
throws XPathException
Expression
analyze in interface Expressionanalyze in class BinaryOpXPathExceptionpublic boolean canOptimize(Sequence contextSequence)
canOptimize in interface Optimizablepublic boolean optimizeOnSelf()
optimizeOnSelf in interface Optimizablepublic boolean optimizeOnChild()
optimizeOnChild in interface Optimizablepublic int getOptimizeAxis()
getOptimizeAxis in interface Optimizablepublic int returnsType()
ExpressionType. If the return type cannot be determined
statically, return Type.ITEM.
returnsType in interface ExpressionreturnsType in class BinaryOppublic int getDependencies()
AbstractExpressionDependency.DEFAULT_DEPENDENCIES.
getDependencies in interface ExpressiongetDependencies in class PathExprExpression.getDependencies()public int getRelation()
public NodeSet preSelect(Sequence contextSequence,
boolean useContext)
throws XPathException
preSelect in interface OptimizableXPathException
public Sequence eval(Sequence contextSequence,
Item contextItem)
throws XPathException
ExpressionDependency.CONTEXT_ITEM
bit is set in the bit field returned by Expression.getDependencies(), the eval method will
be called once for every item in the context sequence. The contextItem
parameter will be set to the current item. Otherwise, the eval method will only be called
once for the whole context sequence and contextItem will be null.
eXist tries to process the entire context set in one, single step whenever
possible. Thus, most classes only expect context to contain a list of
nodes which represents the current context of the expression.
The position() function in XPath is an example for an expression,
which requires both, context sequence and context item to be set.
The context sequence might be a node set, a sequence of atomic values or a single
node or atomic value.
eval in interface Expressioneval in class BinaryOpcontextSequence - the current context sequence.contextItem - a single item, taken from context. This defines the item,
the expression should work on.
XPathException
protected Sequence genericCompare(Sequence contextSequence,
Item contextItem)
throws XPathException
contextSequence - contextItem -
XPathException
protected Sequence genericCompare(Sequence ls,
Sequence contextSequence,
Item contextItem)
throws XPathException
XPathException
protected Sequence nodeSetCompare(NodeSet nodes,
Sequence contextSequence)
throws XPathException
nodes - DOCUMENT ME!contextSequence - DOCUMENT ME!
XPathException - DOCUMENT ME!
protected Sequence quickNodeSetCompare(Sequence contextSequence)
throws XPathException
nodeSetCompare(NodeSet, Sequence).
contextSequence - DOCUMENT ME!
XPathException - DOCUMENT ME!public boolean hasUsedIndex()
hasUsedIndex in interface IndexUseReporterpublic void dump(ExpressionDumper dumper)
ExpressionExpressionDumper.
dump in interface Expressiondump in class PathExprdumper - the expression dumper to write topublic java.lang.String toString()
toString in class PathExprprotected void switchOperands()
protected void simplifyOperands()
protected java.text.Collator getCollator(Sequence contextSequence)
throws XPathException
XPathExceptionpublic void setCollation(java.lang.Object collationArg)
public static final GeneralComparison.IndexFlags checkForQNameIndex(GeneralComparison.IndexFlags idxflags,
XQueryContext context,
Sequence contextSequence,
QName contextQName)
public void resetState(boolean postOptimization)
Expression
resetState in interface ExpressionresetState in class PathExprpublic void accept(ExpressionVisitor visitor)
ExpressionExpressionVisitor.
accept in interface Expressionaccept in class PathExpr
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||