Package org.basex.query.expr
Class Filter
-
- Direct Known Subclasses:
CachedFilter
,IterFilter
public abstract class Filter extends Preds
Abstract filter expression.- Author:
- BaseX Team 2005-22, BSD License, Christian Gruen
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
accept(ASTVisitor visitor)
Traverses this expression, notifying the visitor of declared and used variables, and checking the tree for other recursive properties.Expr
addPredicate(CompileContext cc, Expr pred)
Adds a predicate and returns the optimized expression.void
checkUp()
Checks if the updating semantics are satisfied.Expr
compile(CompileContext cc)
Compiles and optimizes the expression, assigns types and cardinalities.VarUsage
count(Var var)
Checks how often a variable or context reference is used in this expression.boolean
ddo()
Indicates if this expression returns items in document order without duplicates.boolean
equals(Object obj)
This function is e.g.int
exprSize()
Counts the number of expressions in this expression's subtree.static Expr
get(CompileContext cc, InputInfo ii, Expr root, Expr... preds)
Creates a new, optimized filter expression, or the root expression if no predicates exist.boolean
has(Flag... flags)
Indicates if an expression has one of the specified compiler properties.Expr
inline(InlineContext ic)
Inlines an expression into this one, replacing all variable or context references.boolean
inlineable(InlineContext ic)
Checks if inlining is possible.Expr
optimize(CompileContext cc)
Optimizes an already compiled expression without recompiling its sub-expressions.Expr
simplifyFor(CompileContext.Simplify mode, CompileContext cc)
Simplifies the expression.void
toString(QueryString qs)
Creates a query string.void
toXml(QueryPlan plan)
Creates a query plan.protected Expr
type(Expr expr)
Assigns the expression type.-
Methods inherited from class org.basex.query.expr.Preds
flattenEbv, match, mayBePositional, numeric, simplify
-
Methods inherited from class org.basex.query.expr.Arr
allAreValues, args, copyAll, flatten, mayBePositional, removeEmpty, simplifyAll
-
Methods inherited from class org.basex.query.expr.ParseExpr
adoptType, atomValue, checkAllUp, checkNoEmpty, checkNoEmpty, checkNoneUp, checkNoUp, checkType, checkType, checkUp, copyType, ctxValue, data, ebv, info, item, iter, refineType, seqType, size, test, toArray, toArray, toAtomItem, toB64, toB64, toBin, toBin, toBoolean, toBoolean, toBytes, toBytes, toDouble, toDouble, toElem, toFloat, toFunction, toItem, toItem, toLong, toLong, toMap, toMap, toNode, toNode, toNodeOrNull, toNumber, toNumberOrNull, toQNm, toQNm, toString, toString, toStringOrNull, toToken, toToken, toTokenOrNull, toZeroToken, value
-
Methods inherited from class org.basex.query.expr.Expr
arg, atomItem, atomIter, copy, funcType, hasFreeVars, indexAccessible, isSimple, markTailCalls, mergeEbv, optimizePos, simplify, typeCheck, uses, vacuous, visitAll
-
Methods inherited from class org.basex.query.expr.ExprInfo
description, toErrorString, toString
-
-
-
-
Field Detail
-
root
public Expr root
Expression.
-
-
Method Detail
-
get
public static Expr get(CompileContext cc, InputInfo ii, Expr root, Expr... preds) throws QueryException
Creates a new, optimized filter expression, or the root expression if no predicates exist.- Parameters:
cc
- compilation contextii
- input inforoot
- root expressionpreds
- predicate expressions- Returns:
- filter root, path or filter expression
- Throws:
QueryException
- query exception
-
checkUp
public final void checkUp() throws QueryException
Description copied from class:Expr
Checks if the updating semantics are satisfied. This function is only called if any updating expression was found in the query.- Overrides:
checkUp
in classArr
- Throws:
QueryException
- query exception
-
compile
public final Expr compile(CompileContext cc) throws QueryException
Description copied from class:Expr
Compiles and optimizes the expression, assigns types and cardinalities.- Overrides:
compile
in classPreds
- Parameters:
cc
- compilation context- Returns:
- optimized expression
- Throws:
QueryException
- query exception
-
optimize
public final Expr optimize(CompileContext cc) throws QueryException
Description copied from class:Expr
Optimizes an already compiled expression without recompiling its sub-expressions.- Overrides:
optimize
in classExpr
- Parameters:
cc
- compilation context- Returns:
- optimized expression
- Throws:
QueryException
- query exception
-
type
protected final Expr type(Expr expr)
Description copied from class:Preds
Assigns the expression type.
-
addPredicate
public final Expr addPredicate(CompileContext cc, Expr pred) throws QueryException
Adds a predicate and returns the optimized expression. This function is e.g. called byForLet.addPredicate(org.basex.query.CompileContext, org.basex.query.expr.Expr)
.- Parameters:
cc
- compilation contextpred
- predicate to be added- Returns:
- new filter
- Throws:
QueryException
- query exception
-
simplifyFor
public final Expr simplifyFor(CompileContext.Simplify mode, CompileContext cc) throws QueryException
Description copied from class:Expr
Simplifies the expression. Overwritten by many expressions; callsExpr.simplify(Simplify, CompileContext)
otherwise.- Overrides:
simplifyFor
in classExpr
- Parameters:
mode
- mode of simplificationcc
- compilation context- Returns:
- simplified or original expression
- Throws:
QueryException
- query exception- See Also:
CompileContext.Simplify
-
has
public final boolean has(Flag... flags)
Description copied from class:Expr
Indicates if an expression has one of the specified compiler properties. This method must only be called at compile time. It is invoked to test properties of sub-expressions. It returnstrue
if at least flag matches an expression.
-
inlineable
public final boolean inlineable(InlineContext ic)
Description copied from class:Expr
Checks if inlining is possible. This function is called byInlineContext.inlineable(org.basex.query.expr.Expr...)
and:CNode.inlineable(org.basex.query.InlineContext)
returns false if the new expression construct new nodes. The following tests might reject inlining if the expression is a context reference:- Overrides:
inlineable
in classPreds
- Parameters:
ic
- inlining context- Returns:
- result of check
-
count
public final VarUsage count(Var var)
Description copied from class:Expr
Checks how often a variable or context reference is used in this expression. This function is called by:-
Closure.optimize(org.basex.query.CompileContext)
-
GFLWOR.inlineForLet(org.basex.query.CompileContext)
-
GFLWOR.optimizePos(org.basex.query.CompileContext)
-
GFLWOR.simplify(org.basex.query.CompileContext)
-
GFLWOR.unusedVars(org.basex.query.CompileContext)
-
SimpleMap.optimize(org.basex.query.CompileContext)
-
TypeswitchGroup.optimize(org.basex.query.CompileContext)
-
-
inline
public final Expr inline(InlineContext ic) throws QueryException
Description copied from class:Expr
Inlines an expression into this one, replacing all variable or context references. This function is called byInlineContext.inline(Expr)
(see invocations of these functions for further inlinings). The variable reference is replaced in: The context is replaced in:- Overrides:
inline
in classArr
- Parameters:
ic
- inlining context- Returns:
- resulting expression if something has changed,
null
otherwise - Throws:
QueryException
- query exception
-
accept
public final boolean accept(ASTVisitor visitor)
Description copied from class:Expr
Traverses this expression, notifying the visitor of declared and used variables, and checking the tree for other recursive properties.
-
ddo
public boolean ddo()
Description copied from class:Expr
Indicates if this expression returns items in document order without duplicates.
-
exprSize
public final int exprSize()
Description copied from class:Expr
Counts the number of expressions in this expression's subtree. This method is e.g. called byStaticFunc.inline(org.basex.query.expr.Expr[], org.basex.query.CompileContext)
to check if an expression is small enough to be inlined.
-
equals
public final boolean equals(Object obj)
Description copied from class:Arr
This function is e.g. called by:Must be overwritten by implementing class.If.optimize(CompileContext)
,Switch.optimize(CompileContext)
,Typeswitch.optimize(CompileContext)
, in order to discard identical expressions.CmpR.mergeEbv(Expr, boolean, CompileContext)
orCmpSR.mergeEbv(Expr, boolean, CompileContext)
, in order to merge expressions with identical input.CmpG.optimize(CompileContext)
orCmpV.optimize(CompileContext)
, in order to pre-evaluate equality tests.CmpG.optimize(CompileContext)
, in order to compare the start and end value.PathCache
, in order to find identical root values at runtime.
-
toXml
public final void toXml(QueryPlan plan)
Description copied from class:ExprInfo
Creates a query plan.
-
toString
public final void toString(QueryString qs)
Description copied from class:ExprInfo
Creates a query string.
-
-