Package mondrian.olap

Class Query

    • Field Detail

      • axes

        public QueryAxis[] axes
        public-private: This must be public because it is still accessed in rolap.RolapConnection
      • axisCalcs

        public Calc[] axisCalcs
      • slicerCalc

        public Calc slicerCalc
    • Method Detail

      • setQueryTimeoutMillis

        public void setQueryTimeoutMillis​(long queryTimeoutMillis)
        Deprecated.
        This method will be removed in mondrian-4.0
        Sets the timeout in milliseconds of this Query.

        Zero means no timeout.

        Parameters:
        queryTimeoutMillis - Timeout in milliseconds
      • hasCellProperty

        public boolean hasCellProperty​(String propertyName)
        Checks whether the property name is present in the query.
      • isCellPropertyEmpty

        public boolean isCellPropertyEmpty()
        Checks whether any cell property present in the query
      • addFormula

        public void addFormula​(Id id,
                               Exp exp)
        Adds a new formula specifying a set to an existing query.
      • addFormula

        public void addFormula​(Id id,
                               Exp exp,
                               MemberProperty[] memberProperties)
        Adds a new formula specifying a member to an existing query.
        Parameters:
        id - Name of member
        exp - Expression for member
        memberProperties - Properties of member
      • addFormula

        public void addFormula​(Formula formula)
        Adds a new formula specifying a member or a set to an existing query; resolve is called after the formula has been added.
        Parameters:
        formula - Formula to add to query
      • addFormulas

        public void addFormulas​(Formula... additions)
        Adds some number of new formulas specifying members or sets to an existing query; resolve is only called once, after all the new members have been added to the query.
        Parameters:
        additions - Formulas to add to query
      • createValidator

        public Validator createValidator()
        Creates a validator for this query.
        Returns:
        Validator
      • createValidator

        public Validator createValidator​(FunTable functionTable,
                                         boolean alwaysResolveFunDef)
        Creates a validator for this query that uses a given function table and function validation policy.
        Parameters:
        functionTable - Function table
        alwaysResolveFunDef - Whether to always resolve function definitions (see Validator.alwaysResolveFunDef())
        Returns:
        Validator
      • safeClone

        public Query safeClone()
        Deprecated.
        Please use clone(); this method will be removed in mondrian-4.0
      • getConnection

        public Connection getConnection()
      • cancel

        public void cancel()
        Deprecated.
        This method is deprecated and will be removed in mondrian-4.0
        Issues a cancel request on this Query object. Once the thread running the query detects the cancel request, the query execution will throw an exception. See BasicQueryTest.testCancel for an example of usage of this method.
      • checkCancelOrTimeout

        public void checkCancelOrTimeout()
        Deprecated.
        This method will be removed in mondrian-4.0
        Checks if either a cancel request has been issued on the query or the execution time has exceeded the timeout value (if one has been set). Exceptions are raised if either of these two conditions are met. This method should be called periodically during query execution to ensure timely detection of these events, particularly before/after any potentially long running operations.
      • getQueryStartTime

        public long getQueryStartTime()
        Deprecated.
        Use Execution.getStartTime(). This method is deprecated and will be removed in mondrian-4.0
        Gets the query start time
        Returns:
        start time
      • shouldAlertForNonNative

        public boolean shouldAlertForNonNative​(FunDef funDef)
        Determines whether an alert for non-native evaluation needs to be posted.
        Parameters:
        funDef - function type to alert for
        Returns:
        true if alert should be raised
      • resolve

        public void resolve()
        Performs type-checking and validates internal consistency of a query, using the default resolver.

        This method is called automatically when a query is created; you need to call this method manually if you have modified the query's expression tree in any way.

      • ignoreInvalidMembers

        public boolean ignoreInvalidMembers()
        Returns:
        true if the relevant property for ignoring invalid members is set to true for this query's environment (a different property is checked depending on whether environment is schema load vs query validation)
      • setResultStyle

        public void setResultStyle​(ResultStyle resultStyle)
        A Query's ResultStyle can only be one of the following: ResultStyle.ITERABLE ResultStyle.LIST ResultStyle.MUTABLE_LIST
      • resolve

        public void resolve​(Validator validator)
        Performs type-checking and validates internal consistency of a query.
        Parameters:
        validator - Validator
      • explain

        public void explain​(PrintWriter pw)
        Description copied from class: QueryPart
        Returns the plan that Mondrian intends to use to execute this query.
        Overrides:
        explain in class QueryPart
        Parameters:
        pw - Print writer
      • unparse

        public void unparse​(PrintWriter pw)
        Description copied from class: QueryPart
        Writes a string representation of this parse tree node to the given writer.
        Overrides:
        unparse in class QueryPart
        Parameters:
        pw - writer
      • toString

        public String toString()
        Returns the MDX query string.
        Overrides:
        toString in class Object
      • getSlicerAxis

        public QueryAxis getSlicerAxis()
      • setSlicerAxis

        public void setSlicerAxis​(QueryAxis axis)
      • addLevelToAxis

        public void addLevelToAxis​(AxisOrdinal axis,
                                   Level level)
        Adds a level to an axis expression.
      • setParameter

        public void setParameter​(String parameterName,
                                 Object value)
        Assigns a value to the parameter with a given name.
        Throws:
        RuntimeException - if there is not parameter with the given name
      • swapAxes

        public void swapAxes()
        Swaps the x- and y- axes. Does nothing if the number of axes != 2.
      • getParameters

        public Parameter[] getParameters()
        Returns the parameters defined in this query.
      • getCube

        public Cube getCube()
      • getSchemaReader

        public SchemaReader getSchemaReader​(boolean accessControlled)
        Returns a schema reader.
        Parameters:
        accessControlled - If true, schema reader returns only elements which are accessible to the statement's current role
        Returns:
        schema reader
      • lookupMemberFromCache

        public Member lookupMemberFromCache​(String memberUniqueName)
        Looks up a member whose unique name is memberUniqueName from cache. If the member is not in cache, returns null.
      • getFormulas

        public Formula[] getFormulas()
        Returns an array of the formulas used in this query.
      • getAxes

        public QueryAxis[] getAxes()
        Returns an array of this query's axes.
      • removeFormula

        public void removeFormula​(String uniqueName,
                                  boolean failIfUsedInQuery)
        Remove a formula from the query. If failIfUsedInQuery is true, checks and throws an error if formula is used somewhere in the query.
      • canRemoveFormula

        public boolean canRemoveFormula​(String uniqueName)
        Returns whether a formula can safely be removed from the query. It can be removed if the member or set it defines it not used anywhere else in the query, including in another formula.
        Parameters:
        uniqueName - Unique name of the member or set defined by the formula
        Returns:
        whether the formula can safely be removed
      • findFormula

        public Formula findFormula​(String uniqueName)
        Looks up a calculated member or set defined in this Query.
        Parameters:
        uniqueName - Unique name of calculated member or set
        Returns:
        formula defining calculated member, or null if not found
      • renameFormula

        public void renameFormula​(String uniqueName,
                                  String newName)
        Finds formula by name and renames it to new name.
      • setAxisShowEmptyCells

        public void setAxisShowEmptyCells​(int axis,
                                          boolean showEmpty)
        Finds axis by index and sets flag to show empty cells on that axis.
      • compileExpression

        public Calc compileExpression​(Exp exp,
                                      boolean scalar,
                                      ResultStyle resultStyle)
        Compiles an expression, using a cached compiled expression if available.
        Parameters:
        exp - Expression
        scalar - Whether expression is scalar
        resultStyle - Preferred result style; if null, use query's default result style; ignored if expression is scalar
        Returns:
        compiled expression
      • addMeasuresMembers

        public void addMeasuresMembers​(OlapElement olapElement)
        Keeps track of references to members of the measures dimension
        Parameters:
        olapElement - potential measure member
      • getMeasuresMembers

        public Set<Member> getMeasuresMembers()
        Returns:
        set of members from the measures dimension referenced within this query
      • setVirtualCubeNonNativeCrossJoin

        public void setVirtualCubeNonNativeCrossJoin()
        Indicates that the query cannot use native cross joins to process this virtual cube
      • nativeCrossJoinVirtualCube

        public boolean nativeCrossJoinVirtualCube()
        Returns:
        true if the query can use native cross joins on a virtual cube
      • setBaseCubes

        public void setBaseCubes​(List<RolapCube> baseCubes)
        Saves away the base cubes related to the virtual cube referenced in this query
        Parameters:
        baseCubes - set of base cubes
      • getBaseCubes

        public List<RolapCube> getBaseCubes()
        return the set of base cubes associated with the virtual cube referenced in this query
        Returns:
        set of base cubes
      • putEvalCache

        public void putEvalCache​(String key,
                                 Object value)
        Put an Object value into the evaluation cache with given key. This is used by Calc's to store information between iterations (rather than re-generate each time).
        Parameters:
        key - the cache key
        value - the cache value
      • getEvalCache

        public Object getEvalCache​(String key)
        Gets the Object associated with the value.
        Parameters:
        key - the cache key
        Returns:
        the cached value or null.
      • clearEvalCache

        public void clearEvalCache()
        Remove all entries in the evaluation cache
      • close

        public void close()
        Deprecated.
        This method will be removed in mondrian-4.0.
        Closes this query.

        Releases any resources held. Writes statistics to log if profiling is enabled.

        This method is idempotent.

      • getStatement

        public Statement getStatement()
      • setOwnStatement

        public void setOwnStatement​(boolean ownStatement)
        Sets that the query owns its statement; therefore it will need to close it when the query is closed.
        Parameters:
        ownStatement - Whether the statement belongs to the query