<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Verdana;
        color:windowtext;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal style='text-autospace:none'><b><font size=3 face=Verdana><span
style='font-size:12.0pt;font-family:Verdana;font-weight:bold'>Calculated Member
Solve Order &amp; Aggregate Function Handling <o:p></o:p></span></font></b></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=3 face=Verdana><span
style='font-size:12.0pt;font-family:Verdana;font-weight:bold'>SSAS2005 vs.
SSAS2000 vs. Mondrian<o:p></o:p></span></font></b></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=3 face=Verdana><span
style='font-size:12.0pt;font-family:Verdana;font-weight:bold'>Background<o:p></o:p></span></font></b></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>This proposal
was seeded by the R&amp;D of others.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Following are
links to some of that work&#8230;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>http://forums.pentaho.org/showthread.php?t=60654<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>http://777eisenhower.blogspot.com/2008/03/analysis-services-2000-vs-2005.html<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><b><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><b><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
font-weight:bold'>SOLVE_ORDER Calculated Member Property<o:p></o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Definition:&nbsp;
The order of evaluation (from highest to lowest solve order) and calculation
(from lowest to highest solve order) for calculated members, custom members,
custom rollup formulas, and calculated cells in a single calculation pass of a
multidimensional cube. Solve order is used to determine formula precedence when
calculating values for cells in multidimensional cubes, but only within a
single calculation pass.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>SSAS2000
Behavior:&nbsp; The SOLVE_ORDER value is absolute regardless of where it is defined;
e.g. a query defined calculated member with a SOLVE_ORDER of 1 always takes
precedence over a cube defined value of 2.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>SSAS2005
Behavior:&nbsp; By default, cube calculated members are resolved before any
session scope calculated members, and session scope members are resolved before
any query defined calculation.&nbsp; The SOLVE_ORDER value only applies within
the scope in which it was defined.&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Achieving
SSAS2000 Behavior on SSAS2005:&nbsp; Using the SCOPE_ISOLATION=CUBE property in
a query calculated member definition will put the query defined member into
cube scope.&nbsp; So effectively solve_order is treated like an SSAS2000
absolute value since all members are treated as if they were defined in the
same scope.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><b><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
font-weight:bold'>Aggregate Function<o:p></o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Definition:&nbsp;
Returns a number that is calculated by aggregating over the cells returned by
the set expression.&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>The Aggregation
function is designed to be used against base measures.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>SSAS2000
Behavior:&nbsp; The SOLVE_ORDER value must be manually applied such that
aggregate values are solved before other related calculated members.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>SSAS2005
Behavior:&nbsp; The aggregate function is always applied to base members; i.e.
as if solve_order was defined to be the lowest value in a given evaluation in a
SSAS2000 sense.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><b><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
font-weight:bold'>Current Mondrian Behavior<o:p></o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><b><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>In regard to
solve_order and Aggregate function handling, Mondrian behaves like SSAS2000.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:1.0in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>During the
evaluation of a given cell, if there are multiple calculated members in the
evaluation context then the member with the highest solve_order is evaluated. &nbsp;The
other calculated members with lower solve_order values stay within the
evaluation context, and are evaluated during the processing of the calculated
member with the higher solve_order.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Through this
recursive process, the calculated members with lower solve_order values get
calculated before those with higher values.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=3 face=Verdana><span
style='font-size:12.0pt;font-family:Verdana;font-weight:bold'>Mondrian Issue<o:p></o:p></span></font></b></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>For use with
certain reporting clients (e.g. Cognos), it is better for Mondrian to behave
like SSAS2005 rather than SSAS2000 in regard to solve order and aggregate function
evaluation.&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Note that some
reporting clients (e.g. Cognos) do not take advantage of the SSAS2005
SCOPE_ISOLATION property, so support for it is not considered critically
important.<br>
<br>
<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=3 face=Verdana><span
style='font-size:12.0pt;font-family:Verdana;font-weight:bold'>Proposed Mondrian
Changes<o:p></o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><b><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
font-weight:bold'>High Level<o:p></o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>The proposal
involves enhancing Mondrian to optionally behave like SSAS2005 rather than
SSAS2000 in regard to solve order.&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>The option is
controlled using the MondrianProperties entry S</span></font><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>olveOrderMode=absolute|scoped</span></font><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>.&nbsp;
The current Mondrian solve order behavior remains the default;
&#8216;absolute&#8217;.&nbsp; The SSAS2005 behavior can be turned on with the
value of &#8216;scoped&#8217;.&nbsp; One can achieve SSAS2005
SCOPE_ISOLATION=CUBE semantics by using 'absolute' mode.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>While
preserving old behavior as a default is usually desirable, in this case it is
recommended that Mondrian adopt the SSAS2005 behavior as the default.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>The implementation
of the proposal is based on the same sort of logic one uses when manually
applying the solve_order property to get the desired SSAS2005-like behavior
with current Mondrian.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>The 'scoped'
solve order mode code determines the highest solve order based on&#8230;<br>
&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;text-autospace:
none'><font size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>-&nbsp;&nbsp; If
the calculated member is involved with an aggregate function.&nbsp; <br>
<br>
Aggregation function based calculations are calculated first.<br>
<br>
<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;text-autospace:
none'><font size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>-&nbsp;&nbsp; The
location of the calculated member definition; i.e. its scope. <br>
<br>
Cube scope members are calculated after Aggregate function based
calculations.&nbsp; <br>
<br>
Query scope members are calculated after cube scope calculations.<br>
<br>
<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;text-autospace:
none'><font size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>-&nbsp;&nbsp; The
solve_order property.&nbsp; <br>
<br>
This property is only used to order calculations within a given scope.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><b><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><b><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
font-weight:bold'>Code Changes<o:p></o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Attached to
this email &#8211; the archive was built with the packChange script.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>The
RolapEvaluator.peekCalcMember method now invokes one of two methods for
determining the highest solve order for two or more calculated
members.&nbsp;&nbsp; One of these methods implements the &#8220;absolute&#8221;
algorithm and the other implements the &#8220;scoped&#8221; algorithm.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Determining
cube and query scope is easy since there is an already defined class method for
determining if a member is defined in a query.&nbsp; If it&#8217;s not defined
in the query then it must be defined in the cube.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Determining
relative solve_order is also trivial since that property is readily available
for a given calculated member.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Determining if
the member is part of an aggregate function is a little more difficult.&nbsp;
There are (at least) two ways to go about this.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>In the proposed
solution, there is a new RolapEvaluator method that traverses the expression
graph associated with a calculated member explicitly looking for an aggregate
function.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>An alternate
solution performed a full evaluation of the calculated member in order to look
for an aggregate function.&nbsp; After the evaluation, a flag was checked to
see if an aggregate function was found.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><b><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><b><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
font-weight:bold'>Unit Tests<o:p></o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><b><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>A JUnit test
(SolveOrderScopeIsolationTest) was recently contributed to the Mondrian
project.&nbsp; These test cases expect AS2005 behavior and as such fail with
the current Mondrian.&nbsp; So this test is not normally setup to run with the
regular regression suite.&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>When this test
is enabled, the proposed implementation with the new AS2005 solve order
behavior passes all test cases.&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Note there is
one exception in which Mondrian fails regardless of SolveOrderMode.&nbsp; There
seems to be an MDX syntax problem in one of the test cases.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>Also note there
is one test case that passes for both the old and new behavior.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>There is
another test case that passes for current Mondrian but fails for the new solve
order behavior.&nbsp; The test case is
Mondrian.test.NamedSetTest.testOrderedNamedSet.&nbsp; The test case explicitly
expects SSAS2000 behavior and as such should fail with the new AS2005 behavior.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

</div>

</body>

</html>