I think it should be the default behavior.&nbsp; It doesn&#39;t seem like an MDX client should usually need to know anything about the solve order of cube defined calculated members.&nbsp; In the AS2K world there was always the possibility of unintended conflict just because the client didn&#39;t know how cube solve orders happened to be set.<br>
<br><div class="gmail_quote">On Mon, May 19, 2008 at 8:39 PM, Julian Hyde &lt;<a href="mailto:jhyde@pentaho.com">jhyde@pentaho.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">






<div vlink="purple" link="blue" lang="EN-US">
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana">Timothy,</font></span></div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana">The change looks good, but you need to tie up a few loose 
ends to be tied up before I can accept the contribution:</font></span></div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana">1. The unit test cases need some work. I enabled the tests 
in SolveOrderScopeIsolationTest, and most worked if I preceded them with 
a&nbsp;check that&nbsp;SolveOrderMode==scoped.&nbsp;But 
testOverrideOverCubeMemberHappensWithScopeIsolation still gives errors; can&#39;t 
figure&nbsp;out whether it&#39;s to do with case sensitivity.</font></span></div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana">And, can you create some cases that test the behavior when 
SolveOrderMode==absolute. This will be especially important when scoped becomes 
the default behavior. Maybe make each test case into an &#39;if ... else&#39; with 
alternative outputs.</font></span></div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana">2. The description of the property in mondrian.properties 
and MondrianProperties.java needs a little more information, because the average 
DBA would not know what SS2K behavior was (or SS2K was, for that matter). The 
information in your email below would do just fine.</font></span></div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana">3. Please put the same property information into 
configuration.html.</font></span></div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana">4. For future changes, please keep those lines to 80 
characters, and use &lt;p&gt; to delimit paragraphs in 
javadoc.</font></span></div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana">See attached a new change list with my 
modifications.</font></span></div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana">All,</font></span></div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana">Any opinions what should be the default behavior? I&#39;m 
inclined to think that mondrian should use scoped solve-order (like Analysis 
Services 2005) by default.</font></span></div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#000080" size="2" face="Verdana">Julian</font></span></div><br>
<blockquote dir="ltr" style="border-left: 2px solid rgb(0, 0, 128); padding-left: 5px; margin-left: 5px; margin-right: 0px;">
  <div dir="ltr" align="left" lang="en-us">
  <hr>
  <font size="2" face="Tahoma"><b>From:</b> <a href="mailto:mondrian-bounces@pentaho.org" target="_blank">mondrian-bounces@pentaho.org</a> 
  [mailto:<a href="mailto:mondrian-bounces@pentaho.org" target="_blank">mondrian-bounces@pentaho.org</a>] <b>On Behalf Of 
  </b><a href="mailto:timothy.lambert@thomsonreuters.com" target="_blank">timothy.lambert@thomsonreuters.com</a><br><b>Sent:</b> Monday, May 12, 2008 
  12:08 PM<br><b>To:</b> <a href="mailto:mondrian@pentaho.org" target="_blank">mondrian@pentaho.org</a><br><b>Subject:</b> [Mondrian] 
  Calculated Member Solve Order &amp; AggregateFunctionHandling 
  <br></font><br></div>
  <div></div>
  <div>
  <p><font color="blue" size="2" face="Verdana"><span style="font-size: 10pt; color: blue; font-family: Verdana;">Sorry folks … 
  hopefully this third time will be charmed. </span></font></p>
  <p><font color="blue" size="2" face="Verdana"><span style="font-size: 10pt; color: blue; font-family: Verdana;">&nbsp;</span></font></p>
  <p><font color="blue" size="2" face="Verdana"><span style="font-size: 10pt; color: blue; font-family: Verdana;">This time with a 
  subject *<b><span style="font-weight: bold;">and</span></b>* the code 
  attachment.</span></font></p>
  <p><font color="blue" size="2" face="Verdana"><span style="font-size: 10pt; color: blue; font-family: Verdana;">&nbsp;</span></font></p>
  <div>
  <div style="text-align: center;" align="center"><font size="3" face="Times New Roman"><span style="font-size: 12pt;">
  <hr align="center" size="2" width="100%">
  </span></font></div>
  <p><b><font size="2" face="Tahoma"><span style="font-weight: bold; font-size: 10pt; font-family: Tahoma;">From:</span></font></b><font size="2" face="Tahoma"><span style="font-size: 10pt; font-family: Tahoma;"> 
  <a href="mailto:mondrian-bounces@pentaho.org" target="_blank">mondrian-bounces@pentaho.org</a> [mailto:<a href="mailto:mondrian-bounces@pentaho.org" target="_blank">mondrian-bounces@pentaho.org</a>] <b><span style="font-weight: bold;">On Behalf Of </span></b>Lambert, Timothy<br>
<b><span style="font-weight: bold;">Sent:</span></b> Monday, May 12, 2008 3:05 
  PM<br><b><span style="font-weight: bold;">To:</span></b> 
  <a href="mailto:mondrian@pentaho.org" target="_blank">mondrian@pentaho.org</a><br><b><span style="font-weight: bold;">Subject:</span></b> 
  [Mondrian] Calculated Member Solve Order &amp; Aggregate FunctionHandling 
  </span></font></p></div><div><div></div><div class="Wj3C7c">
  <p><font size="3" face="Times New Roman"><span style="font-size: 12pt;">&nbsp;</span></font></p>
  <p><b><font size="3" face="Verdana"><span style="font-weight: bold; font-size: 12pt; font-family: Verdana;">Calculated 
  Member Solve Order &amp; Aggregate Function Handling 
  </span></font></b></p>
  <p><b><font size="3" face="Verdana"><span style="font-weight: bold; font-size: 12pt; font-family: Verdana;">SSAS2005 vs. 
  SSAS2000 vs. Mondrian</span></font></b></p>
  <p><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p><b><font size="3" face="Verdana"><span style="font-weight: bold; font-size: 12pt; font-family: Verdana;">Background</span></font></b></p>
  <p><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">This proposal was seeded by the 
  R&amp;D of others.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">Following are links to some of 
  that work…</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;"><a href="http://forums.pentaho.org/showthread.php?t=60654" target="_blank">http://forums.pentaho.org/showthread.php?t=60654</a></span></font></p>

  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;"><a href="http://777eisenhower.blogspot.com/2008/03/analysis-services-2000-vs-2005.html" target="_blank">http://777eisenhower.blogspot.com/2008/03/analysis-services-2000-vs-2005.html</a></span></font></p>

  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></b></p>
  <p style="margin-left: 0.5in;"><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">SOLVE_ORDER 
  Calculated Member Property</span></font></b></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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; </span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">Aggregate 
  Function</span></font></b></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">Definition:&nbsp; Returns a 
  number that is calculated by aggregating over the cells returned by the set 
  expression.&nbsp; </span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">The Aggregation function is 
  designed to be used against base measures.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">Current 
  Mondrian Behavior</span></font></b></p>
  <p style="margin-left: 0.5in;"><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></b></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">In regard to solve_order and 
  Aggregate function handling, Mondrian behaves like 
  SSAS2000.</span></font></p>
  <p style="margin-left: 1in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">Through this recursive process, 
  the calculated members with lower solve_order values get calculated before 
  those with higher values.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p><b><font size="3" face="Verdana"><span style="font-weight: bold; font-size: 12pt; font-family: Verdana;">Mondrian 
  Issue</span></font></b></p>
  <p><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></b></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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; </span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-bottom: 12pt; margin-left: 0.5in; margin-right: 0in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p><b><font size="3" face="Verdana"><span style="font-weight: bold; font-size: 12pt; font-family: Verdana;">Proposed 
  Mondrian Changes</span></font></b></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </span></font></p>
  <p style="margin-left: 0.5in;"><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">High 
  Level</span></font></b></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">The proposal involves enhancing 
  Mondrian to optionally behave like SSAS2005 rather than SSAS2000 in regard to 
  solve order.&nbsp; </span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">The option is controlled using 
  the MondrianProperties entry S</span></font><font size="2" face="Courier New"><span style="font-size: 10pt;">olveOrderMode=absolute|scoped</span></font><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">.&nbsp; The current Mondrian 
  solve order behavior remains the default; 'absolute'.&nbsp; The SSAS2005 
  behavior can be turned on with the value of 'scoped'.&nbsp; One can achieve 
  SSAS2005 SCOPE_ISOLATION=CUBE semantics by using &#39;absolute&#39; 
  mode.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">The &#39;scoped&#39; solve order mode 
  code determines the highest solve order based 
  on…<br>&nbsp;</span></font></p>
  <p style="margin-bottom: 12pt; margin-left: 1in; text-indent: -0.25in; margin-right: 0in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-bottom: 12pt; margin-left: 1in; text-indent: -0.25in; margin-right: 0in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 1in; text-indent: -0.25in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">-&nbsp;&nbsp; The solve_order 
  property.&nbsp; <br><br>This property is only used to order calculations 
  within a given scope.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></b></p>
  <p style="margin-left: 0.5in;"><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">Code 
  Changes</span></font></b></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">Attached to this email – the 
  archive was built with the packChange script.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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 "absolute" algorithm 
  and the other implements the "scoped" algorithm.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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's not defined in the query then it 
  must be defined in the cube.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">Determining relative solve_order 
  is also trivial since that property is readily available for a given 
  calculated member.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></b></p>
  <p style="margin-left: 0.5in;"><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">Unit 
  Tests</span></font></b></p>
  <p style="margin-left: 0.5in;"><b><font size="2" face="Verdana"><span style="font-weight: bold; font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></b></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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; </span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">When this test is enabled, the 
  proposed implementation with the new AS2005 solve order behavior passes all 
  test cases.&nbsp; </span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">Also note there is one test case 
  that passes for both the old and new behavior.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; 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.</span></font></p>
  <p style="margin-left: 0.5in;"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">&nbsp;</span></font></p></div></div></div></blockquote></div>
<br>_______________________________________________<br>
Mondrian mailing list<br>
<a href="mailto:Mondrian@pentaho.org">Mondrian@pentaho.org</a><br>
<a href="http://lists.pentaho.org/mailman/listinfo/mondrian" target="_blank">http://lists.pentaho.org/mailman/listinfo/mondrian</a><br>
<br></blockquote></div><br>