Class QueryProcessor<T>
- Direct Known Subclasses:
 AccountQueryProcessor,ChangeQueryProcessor,GroupQueryProcessor,ProjectQueryProcessor
Instances are one-time-use. Other singleton classes should inject a Provider rather than holding on to a single instance.
- 
Nested Class Summary
Nested Classes - 
Field Summary
Fields - 
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedQueryProcessor(QueryProcessor.Metrics metrics, SchemaDefinitions<T> schemaDef, IndexConfig indexConfig, IndexCollection<?, T, ? extends Index<?, T>> indexes, IndexRewriter<T> rewriter, String limitField, IntSupplier userQueryLimit)  - 
Method Summary
Modifier and TypeMethodDescriptionprotected QueryOptionscreateOptions(IndexConfig indexConfig, int start, int pageSize, int pageSizeMultiplier, int limit, boolean allowIncompleteResults, Set<String> requestedFields) enforceVisibility(boolean enforce) Specify whether to enforce visibility by filtering out results that are not visible to the user.enforceVisibility(Predicate<T> pred) Invoked after the query was rewritten.protected abstract Stringintprotected intgetInitialPageSize(int queryLimit) protected IntSupplierbooleanCheck whether querying should be disabled.Query for entities that match a structured query.List<QueryResult<T>>Perform multiple queries in parallel.setAllowIncompleteResults(boolean allowIncompleteResults) setNoLimit(boolean isNoLimit) setRequestedFields(Set<String> fields) setStart(int n) setUserProvidedLimit(int n) Convenience method for API backward compatibility.setUserProvidedLimit(int n, boolean applyDefaultLimit) Set an end-user-provided limit on the number of results returned. 
- 
Field Details
- 
start
protected int start 
 - 
 - 
Constructor Details
- 
QueryProcessor
protected QueryProcessor(QueryProcessor.Metrics metrics, SchemaDefinitions<T> schemaDef, IndexConfig indexConfig, IndexCollection<?, T, ? extends Index<?, T>> indexes, IndexRewriter<T> rewriter, String limitField, IntSupplier userQueryLimit)  
 - 
 - 
Method Details
- 
setStart
 - 
enforceVisibility
Specify whether to enforce visibility by filtering out results that are not visible to the user.Enforcing visibility may have performance consequences, as the index system may need to post-filter a large number of results to fill even a modest limit.
If visibility is enforced, the user's
queryLimitglobal capability is also used to bound the total number of results. If this capability is non-positive, this results in the entire query processor beingdisabled.- Parameters:
 enforce- whether to enforce visibility.- Returns:
 - this.
 
 - 
setUserProvidedLimit
Convenience method for API backward compatibility. - 
setUserProvidedLimit
@CanIgnoreReturnValue public QueryProcessor<T> setUserProvidedLimit(int n, boolean applyDefaultLimit) Set an end-user-provided limit on the number of results returned.Since this limit is provided by an end user, it may exceed the limit that they are authorized to use. This is allowed; the processor will take multiple possible limits into account and choose the one that makes the most sense.
- Parameters:
 n- limit; zero or negative means no limit.applyDefaultLimit- Should the default limit be applied, if n <= 0? For internal queries this should be false. For API endpoints this should be true.- Returns:
 - this.
 
 - 
setNoLimit
 - 
setAllowIncompleteResults
@CanIgnoreReturnValue public QueryProcessor<T> setAllowIncompleteResults(boolean allowIncompleteResults)  - 
setRequestedFields
 - 
query
Query for entities that match a structured query.- Parameters:
 query- the query.- Returns:
 - results of the query.
 - Throws:
 QueryParseException- See Also:
 
 - 
query
Perform multiple queries in parallel.If querying is disabled, short-circuits the index and returns empty results. Callers that wish to distinguish this case from a query returning no results from the index may call
isDisabled()themselves.- Parameters:
 queries- list of queries.- Returns:
 - results of the queries, one QueryResult per input query, in the same order as the input.
 - Throws:
 QueryParseException
 - 
createOptions
protected QueryOptions createOptions(IndexConfig indexConfig, int start, int pageSize, int pageSizeMultiplier, int limit, boolean allowIncompleteResults, Set<String> requestedFields)  - 
enforceVisibility
Invoked after the query was rewritten. Subclasses must overwrite this method to filter out results that are not visible to the calling user.- Parameters:
 pred- the query- Returns:
 - the modified query
 
 - 
isDisabled
public boolean isDisabled()Check whether querying should be disabled.Currently, the only condition that can disable the whole query processor is if both
visibility is enforcedand the user has a non-positive maximum value for thequeryLimitcapability.If querying is disabled, all calls to
query(Predicate)andquery(List)will return empty results. This method can be used if callers wish to distinguish this case from a query returning no results from the index.- Returns:
 - true if querying should be disabled.
 
 - 
getEffectiveLimit
 - 
getUserQueryLimit
 - 
getInitialPageSize
protected int getInitialPageSize(int queryLimit)  - 
formatForLogging
 
 -