Package org.apache.jackrabbit.oak.query
Interface Query
- All Known Implementing Classes:
QueryImpl,UnionQueryImpl
@ProviderType
public interface Query
A "select" or "union" query.
Lifecycle: use the constructor to create a new object. Call init() to initialize the bind variable map. If the query is re-executed, a new instance is created.
-
Method Summary
Modifier and TypeMethodDescriptionvoidbindValue(String key, PropertyValue value) @NotNull QueryTry to convert the query to an alternative form, specially a "union".booleanWhether the condition contains a fulltext condition that can not be applied to the filter, for example because it is part of an "or" condition of the form "where a=1 or contains(., 'x')".@Nullable QuerycopyOf()returns a clone of the current object.intgetColumnIndex(String columnName) doubleGet the estimated cost.Get the index cost as a JSON string.getLimit()getPlan()Get the query plan.getRows()intgetSelectorIndex(String selectorName) String[]longgetSize()Get the size if known.longgetSize(Result.SizePrecision precision, long max) Get the size if known.voidinit()Initialize the query.booleanisInit()booleanbooleanbooleanWhether the query is potentially slow.booleanReturns whether the results will be sorted by index.voidprepare()Prepare the query.voidsetExecutionContext(ExecutionContext context) voidsetExplain(boolean explain) voidsetInternal(boolean internal) voidsetLimit(long limit) voidsetMeasure(boolean measure) voidsetOffset(long offset) voidsetOrderings(OrderingImpl[] orderings) voidsetQueryOptions(QueryOptions options) Set the query option to be used for this query.voidsetTraversalEnabled(boolean traversalEnabled) voidVerify the query is not potentially slow.
-
Method Details
-
setExecutionContext
-
setLimit
void setLimit(long limit) -
setOffset
void setOffset(long offset) -
getLimit
-
getOffset
-
bindValue
-
setTraversalEnabled
void setTraversalEnabled(boolean traversalEnabled) -
executeQuery
Result executeQuery() -
getBindVariableNames
-
getColumns
ColumnImpl[] getColumns() -
getColumnIndex
-
getSelectorNames
String[] getSelectorNames() -
getSelectorIndex
-
getRows
Iterator<ResultRowImpl> getRows() -
getSize
long getSize()Get the size if known.- Returns:
- the size, or -1 if unknown
-
getSize
Get the size if known.- Parameters:
precision- the required precisionmax- the maximum nodes read (for an exact size)- Returns:
- the size, or -1 if unknown
-
setExplain
void setExplain(boolean explain) -
setMeasure
void setMeasure(boolean measure) -
setOrderings
-
init
void init()Initialize the query. This will 'wire' selectors into constraints, and collect bind variable names. It will also simplify expressions if possible, but will not prepare the query. -
prepare
void prepare()Prepare the query. The cost is estimated and the execution plan is decided here. -
getPlan
String getPlan()Get the query plan. The query must already be prepared.- Returns:
- the query plan
-
getIndexCostInfo
String getIndexCostInfo()Get the index cost as a JSON string. The query must already be prepared.- Returns:
- the index cost
-
getEstimatedCost
double getEstimatedCost()Get the estimated cost.- Returns:
- the estimated cost
-
getTree
-
isMeasureOrExplainEnabled
boolean isMeasureOrExplainEnabled() -
setInternal
void setInternal(boolean internal) -
isSortedByIndex
boolean isSortedByIndex()Returns whether the results will be sorted by index. The query must already be prepared.- Returns:
- if sorted by index
-
buildAlternativeQuery
Try to convert the query to an alternative form, specially a "union". To avoid any potential error due to state variables perform the conversion before theinit().- Returns:
thisif no conversions are possible or a new instance of aQuery. Cannot return null.
-
copyOf
returns a clone of the current object. Will throw an exception in case it's invoked in a non appropriate moment. For example the default
QueryImplcannot be cloned once theinit()has been executed.May return null if not implemented.
- Returns:
- a clone of self
- Throws:
IllegalStateException
-
isInit
boolean isInit()- Returns:
trueif the query has been already initialised.falseotherwise.
-
getStatement
String getStatement()- Returns:
- the original statement as it was used to construct the object. If not provided the toString() will be used instead.
-
isInternal
boolean isInternal()- Returns:
trueif the current query is internal.falseotherwise.
-
containsUnfilteredFullTextCondition
boolean containsUnfilteredFullTextCondition()Whether the condition contains a fulltext condition that can not be applied to the filter, for example because it is part of an "or" condition of the form "where a=1 or contains(., 'x')".- Returns:
- true if yes
-
setQueryOptions
Set the query option to be used for this query.- Parameters:
options- the options
-
isPotentiallySlow
boolean isPotentiallySlow()Whether the query is potentially slow. Only supported for prepared queries.- Returns:
- true if traversal is the only option
-
verifyNotPotentiallySlow
void verifyNotPotentiallySlow()Verify the query is not potentially slow. Only supported for prepared queries.- Throws:
IllegalArgumentException- if potentially slow, and configured to fail in this case
-
getQueryExecutionStats
QueryStatsData.QueryExecutionStats getQueryExecutionStats()
-