public class Query extends QueryPart
Query
is an MDX query.
It is created by calling Connection.parseQuery(java.lang.String)
,
and executed by calling Connection.execute(mondrian.olap.Query)
,
to return a Result
.
Most queries are model citizens, executing quickly (often using cached results from previous queries), but som queries take more time, or more database resources, or more results, than is reasonable. Mondrian offers three ways to control rogue queries:
MondrianProperties.QueryTimeout
parameter. If the query
takes longer to execute than the value of this parameter, the system
will kill it.MondrianProperties.QueryLimit
parameter limits the number
of cells returned by a query.getStatement()
.cancel()
.
The call to Connection.execute(Query)
will throw an exception.Modifier and Type | Class and Description |
---|---|
static class |
Query.ScopedNamedSet |
Modifier and Type | Field and Description |
---|---|
QueryAxis[] |
axes
public-private: This must be public because it is still accessed in
rolap.RolapConnection
|
Calc[] |
axisCalcs |
Calc |
slicerCalc |
Constructor and Description |
---|
Query(Statement statement,
Cube mdxCube,
Formula[] formulas,
QueryAxis[] axes,
QueryAxis slicerAxis,
QueryPart[] cellProps,
Parameter[] parameters,
boolean strictValidation)
Creates a Query.
|
Query(Statement statement,
Formula[] formulas,
QueryAxis[] axes,
String cube,
QueryAxis slicerAxis,
QueryPart[] cellProps,
boolean strictValidation)
Creates a Query.
|
Modifier and Type | Method and Description |
---|---|
Object |
accept(MdxVisitor visitor) |
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.
|
void |
addFormula(Id id,
Exp exp)
Adds a new formula specifying a set
to an existing query.
|
void |
addFormula(Id id,
Exp exp,
MemberProperty[] memberProperties)
Adds a new formula specifying a member
to an existing query.
|
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.
|
void |
addLevelToAxis(AxisOrdinal axis,
Level level)
Adds a level to an axis expression.
|
void |
addMeasuresMembers(OlapElement olapElement)
Keeps track of references to members of the measures dimension
|
void |
cancel()
Deprecated.
This method is deprecated and will be removed in mondrian-4.0
|
boolean |
canRemoveFormula(String uniqueName)
Returns whether a formula can safely be removed from the query.
|
void |
checkCancelOrTimeout()
Deprecated.
This method will be removed in mondrian-4.0
|
void |
clearEvalCache()
Remove all entries in the evaluation cache
|
Query |
clone() |
void |
close()
Deprecated.
This method will be removed in mondrian-4.0.
|
Calc |
compileExpression(Exp exp,
boolean scalar,
ResultStyle resultStyle)
Compiles an expression, using a cached compiled expression if available.
|
ExpCompiler |
createCompiler() |
Query.ScopedNamedSet |
createScopedNamedSet(String name,
QueryPart scope,
Exp expr)
Creates a named set defined by an alias.
|
Validator |
createValidator()
Creates a validator for this query.
|
Validator |
createValidator(FunTable functionTable,
boolean alwaysResolveFunDef)
Creates a validator for this query that uses a given function table and
function validation policy.
|
Validator |
createValidator(FunTable functionTable,
boolean alwaysResolveFunDef,
Map<QueryPart,QueryPart> resolvedIdentifiers) |
Validator |
createValidator(Map<QueryPart,QueryPart> resolvedIdentifiers) |
void |
explain(PrintWriter pw)
Returns the plan that Mondrian intends to use to execute this query.
|
Formula |
findFormula(String uniqueName)
Looks up a calculated member or set defined in this Query.
|
QueryAxis[] |
getAxes()
Returns an array of this query's axes.
|
List<RolapCube> |
getBaseCubes()
return the set of base cubes associated with the virtual cube referenced
in this query
|
Object[] |
getChildren()
Returns an array of the object's children.
|
Connection |
getConnection() |
Cube |
getCube() |
Object |
getEvalCache(String key)
Gets the Object associated with the value.
|
Formula[] |
getFormulas()
Returns an array of the formulas used in this query.
|
Hierarchy[] |
getMdxHierarchiesOnAxis(AxisOrdinal axis)
Returns
Hierarchy[] used on axis . |
Set<Member> |
getMeasuresMembers() |
Parameter[] |
getParameters()
Returns the parameters defined in this query.
|
long |
getQueryStartTime()
Deprecated.
Use
Execution.getStartTime() . This method is deprecated
and will be removed in mondrian-4.0 |
ResultStyle |
getResultStyle() |
SchemaReader |
getSchemaReader(boolean accessControlled)
Returns a schema reader.
|
QueryAxis |
getSlicerAxis() |
Statement |
getStatement() |
boolean |
hasCellProperty(String propertyName)
Checks whether the property name is present in the query.
|
boolean |
ignoreInvalidMembers() |
boolean |
isCellPropertyEmpty()
Checks whether any cell property present in the query
|
Member |
lookupMemberFromCache(String memberUniqueName)
Looks up a member whose unique name is
memberUniqueName
from cache. |
boolean |
nativeCrossJoinVirtualCube() |
void |
putEvalCache(String key,
Object value)
Put an Object value into the evaluation cache with given key.
|
void |
removeFormula(String uniqueName,
boolean failIfUsedInQuery)
Remove a formula from the query.
|
void |
renameFormula(String uniqueName,
String newName)
Finds formula by name and renames it to new name.
|
void |
resolve()
Performs type-checking and validates internal consistency of a query,
using the default resolver.
|
void |
resolve(Validator validator)
Performs type-checking and validates internal consistency of a query.
|
Query |
safeClone()
Deprecated.
Please use
clone() ; this method will be removed in
mondrian-4.0 |
void |
setAxisShowEmptyCells(int axis,
boolean showEmpty)
Finds axis by index and sets flag to show empty cells on that axis.
|
void |
setBaseCubes(List<RolapCube> baseCubes)
Saves away the base cubes related to the virtual cube
referenced in this query
|
void |
setOwnStatement(boolean ownStatement)
Sets that the query owns its statement; therefore it will need to
close it when the query is closed.
|
void |
setParameter(String parameterName,
Object value)
Assigns a value to the parameter with a given name.
|
void |
setQueryTimeoutMillis(long queryTimeoutMillis)
Deprecated.
This method will be removed in mondrian-4.0
|
void |
setResultStyle(ResultStyle resultStyle)
A Query's ResultStyle can only be one of the following:
ResultStyle.ITERABLE
ResultStyle.LIST
ResultStyle.MUTABLE_LIST
|
void |
setSlicerAxis(QueryAxis axis) |
void |
setVirtualCubeNonNativeCrossJoin()
Indicates that the query cannot use native cross joins to process
this virtual cube
|
boolean |
shouldAlertForNonNative(FunDef funDef)
Determines whether an alert for non-native evaluation needs
to be posted.
|
void |
swapAxes()
Swaps the x- and y- axes.
|
String |
toString()
Returns the MDX query string.
|
void |
unparse(PrintWriter pw)
Writes a string representation of this parse tree
node to the given writer.
|
public QueryAxis[] axes
public Calc[] axisCalcs
public Calc slicerCalc
public Query(Statement statement, Formula[] formulas, QueryAxis[] axes, String cube, QueryAxis slicerAxis, QueryPart[] cellProps, boolean strictValidation)
public void setQueryTimeoutMillis(long queryTimeoutMillis)
Zero means no timeout.
queryTimeoutMillis
- Timeout in millisecondspublic boolean hasCellProperty(String propertyName)
public boolean isCellPropertyEmpty()
public void addFormula(Id id, Exp exp)
public void addFormula(Id id, Exp exp, MemberProperty[] memberProperties)
id
- Name of memberexp
- Expression for membermemberProperties
- Properties of memberpublic void addFormula(Formula formula)
formula
- Formula to add to querypublic void addFormulas(Formula... additions)
additions
- Formulas to add to querypublic Validator createValidator()
public Validator createValidator(FunTable functionTable, boolean alwaysResolveFunDef)
functionTable
- Function tablealwaysResolveFunDef
- Whether to always resolve function
definitions (see Validator.alwaysResolveFunDef()
)public Validator createValidator(FunTable functionTable, boolean alwaysResolveFunDef, Map<QueryPart,QueryPart> resolvedIdentifiers)
public Query safeClone()
clone()
; this method will be removed in
mondrian-4.0public Connection getConnection()
public void cancel()
BasicQueryTest.testCancel
for an
example of usage of this method.public void checkCancelOrTimeout()
public long getQueryStartTime()
Execution.getStartTime()
. This method is deprecated
and will be removed in mondrian-4.0public boolean shouldAlertForNonNative(FunDef funDef)
funDef
- function type to alert forpublic void resolve()
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.
public boolean ignoreInvalidMembers()
public void setResultStyle(ResultStyle resultStyle)
public ResultStyle getResultStyle()
public void resolve(Validator validator)
validator
- Validatorpublic void explain(PrintWriter pw)
QueryPart
public void unparse(PrintWriter pw)
QueryPart
public Object[] getChildren()
Walkable
are ignored.getChildren
in class QueryPart
public QueryAxis getSlicerAxis()
public void setSlicerAxis(QueryAxis axis)
public void addLevelToAxis(AxisOrdinal axis, Level level)
public void setParameter(String parameterName, Object value)
RuntimeException
- if there is not parameter with the given namepublic void swapAxes()
public Parameter[] getParameters()
public Cube getCube()
public SchemaReader getSchemaReader(boolean accessControlled)
accessControlled
- If true, schema reader returns only elements
which are accessible to the statement's current rolepublic Member lookupMemberFromCache(String memberUniqueName)
memberUniqueName
from cache. If the member is not in cache, returns null.public Query.ScopedNamedSet createScopedNamedSet(String name, QueryPart scope, Exp expr)
public Formula[] getFormulas()
public QueryAxis[] getAxes()
public void removeFormula(String uniqueName, boolean failIfUsedInQuery)
failIfUsedInQuery
is
true, checks and throws an error if formula is used somewhere in the
query.public boolean canRemoveFormula(String uniqueName)
uniqueName
- Unique name of the member or set defined by the formulapublic Formula findFormula(String uniqueName)
uniqueName
- Unique name of calculated member or setpublic void renameFormula(String uniqueName, String newName)
public void setAxisShowEmptyCells(int axis, boolean showEmpty)
public Hierarchy[] getMdxHierarchiesOnAxis(AxisOrdinal axis)
public Calc compileExpression(Exp exp, boolean scalar, ResultStyle resultStyle)
exp
- Expressionscalar
- Whether expression is scalarresultStyle
- Preferred result style; if null, use query's default
result style; ignored if expression is scalarpublic ExpCompiler createCompiler()
public void addMeasuresMembers(OlapElement olapElement)
olapElement
- potential measure memberpublic Set<Member> getMeasuresMembers()
public void setVirtualCubeNonNativeCrossJoin()
public boolean nativeCrossJoinVirtualCube()
public void setBaseCubes(List<RolapCube> baseCubes)
baseCubes
- set of base cubespublic List<RolapCube> getBaseCubes()
public Object accept(MdxVisitor visitor)
public void putEvalCache(String key, Object value)
key
- the cache keyvalue
- the cache valuepublic Object getEvalCache(String key)
key
- the cache keypublic void clearEvalCache()
public void close()
Releases any resources held. Writes statistics to log if profiling is enabled.
This method is idempotent.
public Statement getStatement()
public void setOwnStatement(boolean ownStatement)
ownStatement
- Whether the statement belongs to the queryCopyright © 2019 Hitachi Vantara. All rights reserved.