In particular, if the query has no WHERE clause, the axis has a single - * position as usual, but the position has no members. + *
If the query has a WHERE clause, the contains the members returned + * by that expression. Most query authors write a WHERE clause so that it + * evaluates to just one member or tuple. The members in this tuple (or + * the sole member), are referred to as the 'slicer context' of the query. + * The tuple contains only members of hierarchies explicitly mentioned in + * the WHERE expression; the slicer context of every hierarchy in the + * query's cube is implicitly the default member of that hierarchy. + * + *
While not typical, note that a query's WHERE clause may also evaluate + * to zero or more than one tuples. + * + *
If the query has no WHERE clause, the filter axis has a single + * position, but the position has no members. * *
The filter axis is not included in the {@link #getAxes()} collection.
*
diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jCellSet.java b/src/org/olap4j/driver/xmla/XmlaOlap4jCellSet.java
index 7badd8d..e46a5e9 100644
--- a/src/org/olap4j/driver/xmla/XmlaOlap4jCellSet.java
+++ b/src/org/olap4j/driver/xmla/XmlaOlap4jCellSet.java
@@ -278,17 +278,15 @@ void populate() throws OlapException {
}
}
- // olap4j requires a filter axis even if XMLA does not return one. If
- // XMLA does not return one, presumably there was no WHERE clause and
- // therefore the filter axis has a single position containing 0 members
+ // If XMLA did not return a filter axis, it means that the WHERE clause
+ // evaluated to zero tuples. (If the query had no WHERE clause, it
+ // would have evaluated to a single tuple with zero positions.)
if (filterAxis == null) {
filterAxis =
new XmlaOlap4jCellSetAxis(
this,
Axis.FILTER,
- Collections.