class %DeepSee.Query.Engine extends %RegisteredObject
Contains the logic for calculating the results of a DeepSee query.
Maximum number of items in a listing. Setting this above 20000 can cause browser timeouts.
This is called during processing for an aggregate function. It is called for each value in the set being aggregated.classmethod %AggregateEnd(pFunction As %String, ByRef pFlags, ByRef pContext, Output pResult, Output pPendingInfo, pCubeName As %String = "", pQueryKey As %String = "") as %Status
This is called at the end of processing for an aggregate function.classmethod %AggregateStart(pFunction As %String, ByRef pFlags, ByRef pContext) as %Status
If the aggregate is being computed in the background, then pPendingInfo will contain details.
This is called at the start of processing for an aggregate function.classmethod %CleanBranchesForSlicer(ByRef pSlicerBranches, pCube As %String = "") as %Status
pFunction is the aggregate function.
pFlags is a set of flags for the aggregate function.
pContext is used to hold any context required to compute the aggregate.
The raw collection of the slicer branches can produce branches that define logically null sets. This removes those branches, and removes duplicate entries within a branch that would lead to extra processing.classmethod %ClearCache(pCubeName As %String, pResultsOnly As %Boolean = 0) as %Status
Clear the results cache for the given cube. If pResultsOnly is true, then only clear the results cache.classmethod %CubeRemoved(pCubeName As %String, pClassName As %String) as %Status
Notification that a cube has been removed / recompiled.classmethod %MergeRelatedBranches(ByRef pRelatedBranch, Output pLocalBranch) as %Status
classmethod %ProcessResultSubset(pCube, pQueryKey, pAxisNo) as %Status
Process any subset functions that have been noted for processing in the axis cache underclassmethod %ReduceOrsInSlicer(ByRef pSlicerBranches, pCube As %String = "") as %Status
For each subset node the results currently in the result cache will be trimmed according to the subset function and the count of that subset function. If multiple subset functions are nested within one another, the innermost function will be processed first and subsequent nested functions will be processed on the remaining results.
If these nodes do not exist in the axis cache this method will do nothing.
Reduce to minimal AND logic for the purposes of identifying global fact restrictions. This attempts to simplify the restriction terms by reducing a slicer treeclassmethod %ResolveAggregateAddress(pCubeIndex="", pQueryKey="", ByRef pAddr, pRealAxisCount="", pFindAggregate=0) as %Status
structure into a single OR branch. This produces the minimally restrictive representation of the slicer. Note that this should not be used when calculating the final results, as it will throw away some restrictions!
Given a current address in the results cache, find the root node for the aggregate. If the input address is not the child of an aggregate, change nothing. If pFindAggregate=1, then search the axes for a special aggregate node. If none is found,classmethod %SpecToJoinIndex(pSpec As %List, pCube As %String = "", pKey As %String = "", pUseAgents As %Boolean = 1, ByRef pRelation, ByRef pIntersect, pGroupId As %String = "") as %Status
Produce all join index entries for a particular pSpec. The references pCube and pKeyare required. The array pRelation contains the metadata about the current relationships in play in the cube. The by-reference pIntersect can be used to prevent duplicate calculations of the same join index keys.