public final class FTWords extends FTExpr
Constructor and Description |
---|
FTWords(InputInfo info,
Data data,
Value query,
FTMode mode)
Constructor for index-based evaluation.
|
FTWords(InputInfo info,
Expr query,
FTMode mode,
Expr[] occ)
Constructor for scan-based evaluation.
|
Modifier and Type | Method and Description |
---|---|
boolean |
accept(ASTVisitor visitor)
Traverses this expression, notifying the visitor of declared and used variables,
and checking the tree for other recursive properties.
|
void |
checkUp()
Checks if all updating expressions are correctly placed.
|
FTWords |
compile(QueryContext qc,
VarScope scp)
Compiles and optimizes the expression, assigns types and cardinalities.
|
FTExpr |
copy(QueryContext qc,
VarScope scp,
IntObjMap<Var> vs)
Copies an expression.
|
VarUsage |
count(Var var)
Checks how often a variable is used in this expression.
|
int |
exprSize()
Counts the number of expressions in this expression's sub-tree.
|
boolean |
has(Expr.Flag flag)
Indicates if an expression has the specified compiler property.
|
boolean |
indexAccessible(IndexInfo ii)
Checks if an expression can be rewritten to an index access.
|
FTExpr |
inline(QueryContext qc,
VarScope scp,
Var var,
Expr ex)
Inlines an expression into this one, replacing all references to the given variable.
|
FTNode |
item(QueryContext qc,
InputInfo ii)
This method is called by the sequential full-text evaluation.
|
FTIter |
iter(QueryContext qc)
This method is called by the index-based full-text evaluation.
|
void |
plan(FElem plan)
Creates an expression tree.
|
boolean |
removable(Var var)
Checks if the specified variable is replaceable by a context value.
|
String |
toString() |
boolean |
usesExclude()
Checks if sub expressions of a mild not operator violate the grammar.
|
atomItem, atomValue, checkAtomic, checkNoEmpty, checkNoEmpty, checkNoneUp, checkNoUp, checkType, compBln, copyType, ctxValue, ebv, optPre, optPre, preEval, seqType, seqType, size, test, toArray, toArray, toAtomItem, toB64, toB64, toBin, toBin, toBoolean, toBoolean, toBytes, toBytes, toDouble, toDouble, toElem, toEmptyNode, toEmptyToken, toFloat, toFunc, toItem, toLong, toLong, toMap, toMap, toNode, toNode, toNumber, toQNm, toQNm, toToken, toToken, value
atomIter, data, hasFreeVars, inlineAll, isEmpty, isFunction, isVacuous, isValue, iterable, markTailCalls, optimizeEbv, sameAs, typeCheck, uses, visitAll
addPlan, addPlan, description, planAttr, planElem, toErrorString
public FTWords(InputInfo info, Expr query, FTMode mode, Expr[] occ)
info
- input infoquery
- query expressionmode
- search modeocc
- occurrencespublic void checkUp() throws QueryException
Expr
checkUp
in class FTExpr
QueryException
- query exceptionpublic FTWords compile(QueryContext qc, VarScope scp) throws QueryException
Expr
QueryContext.compile()
.compile
in class FTExpr
qc
- query contextscp
- variable scopeQueryException
- query exceptionpublic FTNode item(QueryContext qc, InputInfo ii) throws QueryException
FTExpr
item
in class FTExpr
qc
- query contextii
- input infoQueryException
- query exceptionpublic FTIter iter(QueryContext qc)
FTExpr
public boolean indexAccessible(IndexInfo ii)
Expr
IndexInfo.expr
.
This method will be called by Path.index(org.basex.query.QueryContext, org.basex.query.value.Value)
.indexAccessible
in class Expr
ii
- index infopublic boolean usesExclude()
FTExpr
public boolean has(Expr.Flag flag)
Expr
true
if at least one test is successful.public boolean removable(Var var)
Expr
Preds.removable(org.basex.query.var.Var)
if one of the variables is used within a predicate.Path.removable(org.basex.query.var.Var)
if the variable occurs within the path.GFLWOR.compile(QueryContext, VarScope)
to rewrite where
clauses into predicates.public VarUsage count(Var var)
Expr
SwitchCase.countCases(org.basex.query.var.Var)
or (indirectly)
GFLWOR.inlineLets(org.basex.query.QueryContext, org.basex.query.var.VarScope)
.public FTExpr inline(QueryContext qc, VarScope scp, Var var, Expr ex) throws QueryException
Expr
GFLWOR.inlineLets(org.basex.query.QueryContext, org.basex.query.var.VarScope)
and For.toPredicate(org.basex.query.QueryContext, org.basex.query.var.VarScope, org.basex.query.expr.Expr)
,
and the variable reference is replaced in VarRef.inline(org.basex.query.QueryContext, org.basex.query.var.VarScope, org.basex.query.var.Var, org.basex.query.expr.Expr)
.inline
in class FTExpr
qc
- query context for reoptimizationscp
- variable scope for reoptimizationvar
- variable to replaceex
- expression to inlinenull
otherwiseQueryException
- query exceptionpublic FTExpr copy(QueryContext qc, VarScope scp, IntObjMap<Var> vs)
Expr
public void plan(FElem plan)
ExprInfo
public boolean accept(ASTVisitor visitor)
Expr
public int exprSize()
Expr
StaticFunc.inline(org.basex.query.QueryContext, org.basex.query.util.list.AnnList, org.basex.query.expr.Expr)
to check if an expression
is small enough to be inlined.Copyright © 2005–2015 BaseX Team. All rights reserved.