<html xmlns:v="urn:schemas-microsoft-com:vml" 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)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@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;
        font-family:Verdana;
        color:windowtext;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:Verdana;
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:Verdana;
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:Verdana;
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:Verdana;
        color:blue;
        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><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>I think that the intent of this test was
for the AS2005 &#8220;SCOPE_ISOLATION=CUBE&#8221; MDX property testing.&nbsp; <o:p></o:p></span></font></p>

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

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>Since Mondrian isn&#8217;t supporting
that property with this contribution, I didn&#8217;t spend the time figuring
out the problem with that test case. &nbsp;<o:p></o:p></span></font></p>

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

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>It wasn&#8217;t working for either value
of SolveOrderMode.<o:p></o:p></span></font></p>

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

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
mondrian-bounces@pentaho.org [mailto:mondrian-bounces@pentaho.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Julian Hyde<br>
<b><span style='font-weight:bold'>Sent:</span></b> Thursday, May 22, 2008 3:57
PM<br>
<b><span style='font-weight:bold'>To:</span></b> 'Mondrian developer mailing
list'<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [Mondrian] Calculated
Member SolveOrder&amp;AggregateFunctionHandling </span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Submitted as change 11099. Thanks for
the contribution, Timothy.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>I made the default behavior scoped -
i.e. compatible with AS 2005, different than behavior in 3.0.3 and earlier. I
don't expect many applications to be affected, but the property mondrian.rolap.SolveOrderMode
exists if anyone needs backwards compatibility.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Timothy, Can you explain why
_testOverrideOverCubeMemberHappensWithScopeIsolation is still disabled?</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Julian</span></font><o:p></o:p></p>

<blockquote style='border:none;border-left:solid navy 1.5pt;padding:0in 0in 0in 4.0pt;
margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabIndex=-1>

</span></font></div>

<p class=MsoNormal style='margin-bottom:12.0pt'><b><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;font-weight:bold'>From:</span></font></b><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
mondrian-bounces@pentaho.org [mailto:mondrian-bounces@pentaho.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>timothy.lambert@thomsonreuters.com<br>
<b><span style='font-weight:bold'>Sent:</span></b> Wednesday, May 21, 2008 8:57
AM<br>
<b><span style='font-weight:bold'>To:</span></b> mondrian@pentaho.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [Mondrian] Calculated
Member Solve Order&amp;AggregateFunctionHandling </span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>See my comments below preceded with
&#8220;&gt;&gt;&gt;&#8221;<o:p></o:p></span></font></p>

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

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabIndex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> mondrian-bounces@pentaho.org
[mailto:mondrian-bounces@pentaho.org] <b><span style='font-weight:bold'>On
Behalf Of </span></b>Julian Hyde<br>
<b><span style='font-weight:bold'>Sent:</span></b> Monday, May 19, 2008 8:39 PM<br>
<b><span style='font-weight:bold'>To:</span></b> 'Mondrian developer mailing
list'<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [Mondrian] Calculated
Member Solve Order &amp;AggregateFunctionHandling </span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Timothy,</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>The change looks good, but you need to
tie up a few loose ends to be tied up before I can accept the contribution:</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>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't
figure&nbsp;out whether it's to do with case sensitivity.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>&gt;&gt;&gt; I think that the intent of
this test was for the AS2005 &#8220;SCOPE_ISOLATION=CUBE&#8221; MDX property testing.&nbsp;
Since Mondrian isn&#8217;t supporting that property with this contribution, I
didn&#8217;t spend the time figuring out the problem with this test case.
&nbsp;I left the test case in but preceded the method with an underscore to
prevent it from running.<o:p></o:p></span></font></p>

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

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>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 'if
... else' with alternative outputs.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 color=blue face="Times New Roman"><span
style='font-size:12.0pt;color:blue'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>&gt;&gt;&gt; I implemented your
suggestion of alternative output handling when run with &#8216;absolute&#8217;.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>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.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 color=blue face="Times New Roman"><span
style='font-size:12.0pt;color:blue'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>&gt;&gt;&gt; Done.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>3. Please put the same property
information into configuration.html.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>&gt;&gt;&gt; Done.<o:p></o:p></span></font></p>

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

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>4. For future changes, please keep those
lines to 80 characters, and use &lt;p&gt; to delimit paragraphs in javadoc.</span></font><o:p></o:p></p>

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

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>&gt;&gt;&gt; Will do.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>See attached a new change list with my
modifications.</span></font><font size=2 face=Verdana><span style='font-size:
10.0pt;font-family:Verdana'><o:p></o:p></span></font></p>

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

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>&gt;&gt;&gt; Attached are my new changes
along with your additions.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>All,</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Any opinions what should be the default
behavior? I'm inclined to think that mondrian should use scoped solve-order
(like Analysis Services 2005) by default.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Julian</span></font><o:p></o:p></p>

<blockquote style='border:none;border-left:solid navy 1.5pt;padding:0in 0in 0in 4.0pt;
margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'>

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

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabIndex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
mondrian-bounces@pentaho.org [mailto:mondrian-bounces@pentaho.org] <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> mondrian@pentaho.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> [Mondrian] Calculated
Member Solve Order &amp; Aggregate FunctionHandling </span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><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><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><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><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><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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><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><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'><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'><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='mso-margin-top-alt:0in;margin-right:0in;margin-bottom:
12.0pt;margin-left:.5in'><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.<o:p></o:p></span></font></p>

<p class=MsoNormal><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><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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='mso-margin-top-alt:0in;margin-right:0in;margin-bottom:
12.0pt;margin-left:1.0in;text-indent:-.25in'><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.<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:0in;margin-right:0in;margin-bottom:
12.0pt;margin-left:1.0in;text-indent:-.25in'><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.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><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'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p>&nbsp;</o:p></span></font></p>

</blockquote>

</blockquote>

</div>

</body>

</html>